IEC 61131-3 IL vs Siemens STL: When to Use Each
IEC 61131-3 IL vs Siemens STL: When to Use Each
Instruction List (IL) and Siemens Statement List (STL, or AWL in German) are two text-based PLC programming languages that look nearly identical at first glance but come from different worlds. One is an open standard; the other is a vendor-specific format with decades of installed base.
In 2026, both are considered legacy languages — IEC 61131-3 edition 3 deprecated IL entirely, and Siemens recommends migrating away from STL in TIA Portal. But millions of programs written in both formats are still running in production, and understanding them is a real professional skill.

What Is IEC 61131-3 IL?
IL (Instruction List) is one of the five languages defined in the IEC 61131-3 standard for PLC programming. It is an assembly-like, line-by-line language where each instruction operates on an implicit accumulator register.
(* IEC IL — Motor Start/Stop *)
LD Start_PB (* Load Start_PB into accumulator *)
ANDN Stop_PB (* AND NOT Stop_PB *)
OR Motor_Run (* OR with Motor_Run (seal-in) *)
ST Motor_Run (* Store result to Motor_Run *)
Each line: an operator, an optional modifier (N for NOT, conditional modifiers for structured IL), and an operand.
Key IL operators:
| Operator | Meaning |
|---|---|
| LD | Load — set accumulator from operand |
| LDN | Load NOT |
| ST | Store accumulator to operand |
| AND, ANDN | Logical AND, AND NOT |
| OR, ORN | Logical OR, OR NOT |
| XOR | Exclusive OR |
| JMP, CAL, RET | Jump, call function, return |
What Is Siemens STL (AWL)?
STL (Statement List, Anweisungsliste in German) is Siemens's native text language for STEP 7 Classic (S7-300/400) and is still supported (though discouraged) in TIA Portal for S7-1200/1500. It resembles IEC IL but has important differences in operators, conditional execution, and data access.
// Siemens STL — Motor Start/Stop
NETWORK 1
A "Start_PB" // AND — check Start_PB
AN "Stop_PB" // AND NOT — check Stop_PB
O "Motor_Run" // OR — seal-in
= "Motor_Run" // Assignment (equivalent to ST or OTE)
Key differences from IEC IL:
Ainstead ofAND/LD(A = Abfrage, "query")ANinstead ofANDNOinstead ofOR=instead ofSTNETWORKblocks separate sections (similar to rungs)- System function calls use different syntax:
CALL FC1vs IEC'sCAL
The quickest way to read either language is to memorise how the mnemonics line up — IEC's LD/AND/ST against Siemens's A/AN/=.
Side-by-Side: Same Program, Two Languages
(* IEC IL — Timer example: motor runs 5 seconds after start *)
LD Start_PB
ANDN Stop_PB
CAL TON_0(IN:=%LD0, PT:=T#5S)
LD TON_0.Q
ST Motor_Run
// Siemens STL — Same logic
A "Start_PB"
AN "Stop_PB"
L S5T#5S
SD T1 // Start timer T1, on-delay
A T1 // Load timer contact
= "Motor_Run"
The Siemens timer instruction (SD T1) works differently from IEC's CAL TON_0(...) — it is tied to a timer device number (T1–T255 in S7-300) rather than a function block instance. This is the same device-based approach used in Mitsubishi.
Step back and the two languages share an accumulator-style execution model but diverge on standards, vendor lock-in and how timers are addressed.
The differences run deeper than the operators — they extend to the result register, the time format, and how each language structures its sections.
When Each Is Appropriate
Use IEC IL when:
-
You are maintaining existing IL code in a CODESYS, Beckhoff, or older IEC-compliant PLC. New code in these environments should use Structured Text (ST), but understanding IL is necessary for reading existing programs.
-
The PLC hardware only supports text-based IEC languages — some embedded controllers and compact PLCs do not support Ladder or FBD; IL was the standard text option.
-
You are studying the IEC 61131-3 standard academically — understanding all five languages gives you a full picture of the standard.
Use Siemens STL when:
-
You are maintaining S7-300/400 programs written in STL. This is the most common real-world use case — legacy programs that will not be ported.
-
You need to access features not exposed in Ladder or FBD in STEP 7 Classic — some indirect addressing and bit operations are easier in STL.
-
You are debugging someone else's STL program in a production environment.
If you ever have to port logic between the two, a handful of mismatches catch people out every time.
What to learn instead for new projects:
- Structured Text (ST) replaces IL for text-based programming in IEC 61131-3 and TIA Portal. It is a proper high-level language (similar to Pascal syntax) and is infinitely more readable than IL.
- TIA Portal LAD (Ladder) replaces STL for most Siemens applications and is the recommended first language for new TIA Portal projects.
If you are not sure where to start, let your situation decide it for you.
IL and STL in the Simulator
The simulator supports Siemens STL rendering as part of the Siemens dialect. If you load any scenario and switch the dialect selector to Siemens, the program is rendered in STL notation.
IEC IL is available as part of the IEC 61131-3 dialect support — but note that the simulator's IEC exercises primarily use Structured Text and Ladder, following the IEC's own recommendation to use ST over IL for new programs. The dialect comparison page shows how the same program looks in all 8 dialects simultaneously.
The Bigger Picture
IL is just one of the five languages the IEC 61131-3 standard defines, and Siemens STL is its vendor cousin sitting just outside that family.
Whether you are reading STL or IEC IL, the same logic runs on the PLC. If you understand:
- The accumulator-based execution model (each instruction modifies a running result)
- The scan-cycle execution order (see the scan cycle explained)
- Which operators perform which Boolean operations
...you can read and modify programs in either language. The tools are different; the underlying PLC behaviour is identical.
Practise Siemens STL and IEC IL in the simulator. Switch between all 8 dialects with one click — no separate software needed.