IL
Instruction List (IL) is a textual programming language for PLCs based on an assembler-style instruction structure. The language was part of the original IEC 61131-3 standard for industrial automation and was used for compact, efficient and low-overhead PLC programming within Industrial Automation and Process Automation.
IL was designed for:
- Fast logical processing
- Compact PLC programs
- Low memory footprint
- Direct hardware control
- Deterministic execution
Although IL was historically very popular, the language has officially been deprecated in recent versions of IEC 61131-3 due to limited readability and maintainability compared to more modern languages such as:
- Ladder Logic
- FBD
- ST
- SFC
IL is still found in legacy PLC environments, older SCADA systems and industrial installations with long lifecycles.
⚙️ What is Instruction List
IL is a text-based language built from simple instructions that are executed sequentially.
The structure closely resembles assembly programming.
Example:
LD StartAND NOT StopST Motor
Meaning:
| Instruction | Function |
|---|---|
| LD | Load |
| AND | Logical AND |
| OR | Logical OR |
| NOT | Negation |
| ST | Store output |
The instructions are processed line by line by the PLC runtime.
🧱 Structure of IL programs
An IL program consists of:
- Operations
- Operands
- Labels
- Jumps
- Memory locations
Example:
LD SensorAND Pressure_OKST Pump
Accumulator-based processing forms the core of IL.
🔄 Accumulator-based operation
IL typically operates on an internal accumulator.
Process:
LD input↓Accumulator filled↓AND next value↓Store result
This model resembles classic CPU register processing.
⚡ Common instructions
Load instructions
For loading values:
| Instruction | Function |
|---|---|
| LD | Load |
| LDN | Load NOT |
Example:
LD StartButton
Logical instructions
For boolean logic:
| Instruction | Function |
|---|---|
| AND | AND |
| OR | OR |
| XOR | Exclusive OR |
| NOT | Negation |
Example:
LD Sensor1AND Sensor2ST Output
Store instructions
For storing results:
| Instruction | Function |
|---|---|
| ST | Store |
| STN | Store NOT |
Jump instructions
For program control:
| Instruction | Function |
|---|---|
| JMP | Jump |
| JMPC | Conditional jump |
| RET | Return |
This allowed state machines and sequences to be built.
⏱️ Cyclical execution
Like other PLC languages, IL operates cyclically.
PLC scan:
Read inputs ↓Execute IL code ↓Write outputs ↓New scan
Important properties:
| Parameter | Typical value |
|---|---|
| Scan time | Very low |
| CPU load | Efficient |
| Determinism | High |
Thanks to compact instructions, IL was highly performant on older PLC hardware.
🏭 IL in industrial automation
Historically, IL was used in:
- Production machines
- Process installations
- Embedded PLC systems
- Power plants
- Building automation
Applications:
- Interlocks
- Start/stop logic
- Machine cycles
- Alarm processing
- Basic process control
🔌 Direct hardware control
IL offered relatively direct control over PLC resources.
Benefits:
- Low overhead
- Fast execution
- Efficient memory use
This was important for older PLC generations with:
- Limited RAM
- Low CPU capacity
- Small program storage
🧠 IL versus Ladder Logic
| Property | IL | Ladder Logic |
|---|---|---|
| Readability | Lower | High |
| Compactness | High | Lower |
| Performance | High | Good |
| Maintainability | Limited | Strong |
| Electrical recognisability | Low | High |
| Complex logic | Good | Average |
Maintenance teams often preferred visual languages.
🔄 IL versus Structured Text
| Property | IL | ST |
|---|---|---|
| Abstraction level | Low | High |
| Readability | Limited | Good |
| Data processing | Limited | Strong |
| Complex algorithms | Difficult | Excellent |
| Hardware efficiency | High | Good |
Structured Text has largely replaced IL on modern PLC platforms.
⚡ Performance characteristics
IL was known for:
- Very fast execution
- Low memory pressure
- Compact code
- Deterministic behaviour
Benefits for older hardware:
- Small program size
- Less CPU load
- Faster scan times
This was important in real-time OT processes.
🛡️ IL in safety systems
IL was also used in older Safety PLC systems.
Examples:
- Safety interlocks
- Shutdown logic
- Emergency stop functions
- Machine protection
Important standards:
Today, safety applications are more often developed in modern languages for better validation and maintainability.
📡 Integration with SCADA and HMI
IL programs deliver process data to:
Communication uses:
🧪 Diagnostics and troubleshooting
A major drawback of IL is limited readability.
Example:
LD AAND BOR CST D
In larger programs, troubleshooting becomes complex.
Problems:
| Problem | Cause |
|---|---|
| Poor readability | Low abstraction |
| Difficult debugging | No visual flow |
| Maintenance problems | Legacy code |
| Programming errors | Complex jumps |
⚠️ Common design errors
Excessive use of jumps
Complex jump structures cause spaghetti code.
Poor documentation
Many IL systems lack clear comments.
Hardware-dependent design
Some implementations are strongly vendor-specific.
No modular structure
Older IL programs are often monolithic.
Best practices:
- Clear labels
- Comment lines
- Modular routines
- Limited jumps
🔐 Cybersecurity risks
Legacy IL systems present an elevated cybersecurity risk.
Risks:
- Outdated PLCs
- No modern authentication
- Legacy engineering software
- Difficult to patch
Attacks can:
- Manipulate outputs
- Change process logic
- Disrupt safety functions
Known OT malware such as Stuxnet demonstrated how PLC programs can be modified without direct visibility.
🧱 Security measures
Important measures:
| Measure | Purpose |
|---|---|
| Network Segmentation | Isolation |
| Application Whitelisting | Software control |
| MFA | Authentication |
| Logging | Auditing |
| Patch Management | Vulnerability reduction |
| Backup | Recovery |
| Version Control | Change management |
Legacy PLC systems often require additional compensating controls.
🌐 Why IL disappeared
IEC 61131-3 has officially deprecated IL.
Main reasons:
- Poor readability
- Difficult maintenance
- Limited scalability
- Higher error rates
- Difficult validation
Modern automation calls for:
- Modular architectures
- Better debugging
- Complex data handling
- Software reusability
Languages such as ST became more important as a result.
🏗️ IL in legacy OT environments
Despite being obsolete, IL still runs in:
- Old production lines
- Energy infrastructure
- Water installations
- Legacy machine control
Migration is often complex due to:
- Downtime risk
- Vendor lock-in
- Insufficient documentation
- Old hardware
IL therefore remains relevant within Lifecycle Management of OT systems.
📈 Benefits of IL
Key benefits:
- Compact code
- High performance
- Low memory pressure
- Deterministic behaviour
- Direct hardware control
⚡ Limitations
Key limitations:
- Low readability
- Difficult troubleshooting
- Limited Scalability
- Little visual structure
- Difficult to maintain
For these reasons, IL is rarely used for new projects today.
