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:

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:

Standard Description
IEC 61508 Functional safety
IEC 61511 Process safety
ISO 13849 Machine safety

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.