Every ladder diagram symbol in one chart — contacts, coils, one-shots, timers, counters, comparison, math and program-flow — with Allen-Bradley mnemonics, IEC 61131-3 names and plain-English meanings. Then practise each one live in your browser, no install or PLC licence needed.
Ladder logic symbols are the graphical instructions of ladder diagram (LD) programming — contacts, coils and instruction blocks drawn between two vertical power rails. Each horizontal rung is one logic statement: input conditions on the left, the result on the right, evaluated as if electrical power flowed from the left rail to the right. The notation was designed to mirror relay wiring schematics, which is why electricians could read the first PLC programs without retraining — and why the same shapes still appear in every PLC platform today.
This page is the complete chart: every symbol, its Allen-Bradley mnemonic, its IEC 61131-3 name, what it means and how it is used — followed by a worked rung-reading example and a printable cheat sheet.
Contacts are the input conditions on the left side of a rung. Wired in series they form an AND; stacked in parallel branches they form an OR. The two-bar shape is universal — only the names change between dialects.
| Symbol | Name (AB / IEC) | What it means | Usage example |
|---|---|---|---|
Normally-open contact XIC — Examine If Closed IEC: NO contact -| |- full XIC reference → | Passes power when its bit is TRUE (1). The default input element: the rung sees "closed" whenever the addressed input, sensor or internal bit is ON. | A Start pushbutton is programmed as an XIC so pressing it completes the rung. | |
Normally-closed contact XIO — Examine If Open IEC: NC contact -|/|- full XIO reference → | Passes power when its bit is FALSE (0) — the diagonal slash inverts the logic. The rung breaks the moment the addressed bit turns ON. | A Stop button is programmed as an XIO so pressing it breaks the rung and drops the motor. |
Coils sit at the right end of a rung and write the result of the logic — a real output like a motor contactor, or an internal memory bit that other rungs read back as a contact.
| Symbol | Name (AB / IEC) | What it means | Usage example |
|---|---|---|---|
Output coil OTE — Output Energise IEC: Coil -( )- full OTE reference → | Follows the rung exactly: ON while a complete path of power reaches it, OFF the scan the rung goes false. The standard, non-retentive output. | The Motor coil in a start/stop rung is an OTE — it drops out the instant Stop is pressed. | |
Latch coil OTL — Output Latch IEC: Set coil -(S)- full OTL/OTU reference → | Sets its bit TRUE and holds it TRUE even after the rung goes false. The bit stays latched until an unlatch instruction on the same address clears it. | An alarm horn is latched with OTL so a momentary fault keeps the horn sounding until acknowledged. | |
Unlatch coil OTU — Output Unlatch IEC: Reset coil -(R)- full OTL/OTU reference → | Resets a latched bit back to FALSE when its rung goes true. Always programmed as the partner of an OTL on the same address. | The Acknowledge button drives an OTU that unlatches the alarm-horn bit set by the OTL. |
Edge symbols fire for exactly one program scan when a signal transitions, instead of staying true for as long as a bit is held. Use them whenever an action must happen once per event — not once per scan.
| Symbol | Name (AB / IEC) | What it means | Usage example |
|---|---|---|---|
One-shot ONS — One Shot IEC: R_TRIG (rising edge) full ONS reference → | Passes power for a single scan on a false-to-true transition of the conditions before it, then blocks until the input goes low and high again. | An ONS after a photo-eye contact increments a parts counter once per box, not once per scan. | |
One-shot rising OSR — One Shot Rising IEC: R_TRIG | Output-style one-shot: sets its output bit for one scan when the rung input goes from OFF to ON. Same behaviour as ONS, packaged as an instruction block. | An OSR captures the exact scan an operator presses Cycle Start to stamp a timestamp register. | |
One-shot falling OSF — One Shot Falling IEC: F_TRIG | The falling-edge twin: sets its output bit for one scan when the rung input goes from ON to OFF. | An OSF fires when a conveyor sensor clears, triggering the "part exited" logic exactly once. |
Timer blocks measure elapsed time against a preset and expose status bits (EN enabled, TT timing, DN done) that other rungs read as contacts. Allen-Bradley names them TON / TOF / RTO; IEC 61131-3 uses TON / TOF / TONR.
| Symbol | Name (AB / IEC) | What it means | Usage example |
|---|---|---|---|
On-delay timer TON — Timer On-Delay IEC: TON full timer guide → | Starts timing when the rung goes TRUE and sets its DN bit once the preset elapses; resets to zero the moment the rung goes false. | A TON delays a second conveyor starting for 5 s after the first, to stagger inrush current. | |
Off-delay timer TOF — Timer Off-Delay IEC: TOF TON vs TOF compared → | DN is TRUE while the rung is energised, and stays TRUE for the preset time after the rung goes false — a hold-on delay. | A TOF keeps a cooling fan running for 30 s after the heater it serves switches off. | |
Retentive timer RTO — Retentive Timer On IEC: TONR full timer guide → | Accumulates run-time across multiple TRUE periods and keeps its accumulator when the rung goes false. Only a RES (reset) instruction clears it. | An RTO totals motor run-hours across shifts to trigger maintenance at 500 h. |
Counter blocks tally false-to-true transitions of their rung against a preset. Like timers, they expose status bits (CU/CD counting, DN done) that gate other rungs.
| Symbol | Name (AB / IEC) | What it means | Usage example |
|---|---|---|---|
Count-up counter CTU — Count Up IEC: CTU full CTU reference → | Increments its accumulator by one on each false-to-true rung transition and sets DN when the count reaches the preset. | A CTU counts boxes past a photo-eye and sets DN at 24 to signal a full pallet layer. | |
Count-down counter CTD — Count Down IEC: CTD full CTD reference → | Decrements the accumulator on each false-to-true transition. Often shares an address with a CTU so one counter tracks items in minus items out. | A CTD decrements the buffer count each time the downstream machine takes a part. | |
Up-down counter CTU + CTD pair IEC: CTUD full CTUD reference → | The IEC combined counter: separate count-up and count-down inputs drive a single accumulator — one block instead of a paired CTU/CTD. | A CTUD tracks live occupancy of a car park: entry gate counts up, exit gate counts down. |
Past on/off logic, instruction blocks work on numbers. Comparison blocks sit in the power path and gate the rung like a contact; math and move blocks act at the end of the rung like a coil. When the two sides of a compare are different data types, convert first — see the DINT-to-REAL conversion reference.
| Symbol | Name (AB / IEC) | What it means | Usage example |
|---|---|---|---|
Equal comparison EQU — Equal IEC: EQ ( = ) | True while Source A equals Source B, passing power to the rest of the rung. Siblings NEQ, LEQ and GEQ share the same block shape. | EQU checks the recipe number equals 3 before enabling the "Recipe 3" fill sequence. | |
Greater-than comparison GRT — Greater Than IEC: GT ( > ) | True while Source A is greater than Source B — the go-to block for high-level and over-range checks. | GRT compares tank level against 90% to energise the high-level warning beacon. | |
Less-than comparison LES — Less Than IEC: LT ( < ) | True while Source A is less than Source B — the mirror of GRT for low-level and under-range checks. | LES watches line speed below a minimum to flag a slipping drive belt. | |
Move MOV — Move IEC: MOVE full MOV reference → | Copies a source value into a destination tag every scan the rung is true — the workhorse for loading presets, clearing registers and shuffling data. | MOV loads 4000 into a timer preset when the operator selects the "long cycle" mode. | |
Add (math block) ADD — Add IEC: ADD | Stores Source A + Source B in a destination when the rung is true. SUB, MUL and DIV share the shape — swap the label, keep the wiring. | ADD totals the counts from two infeed lanes into a single production register. |
Program-flow symbols change which rungs execute: jumping to subroutines, marking jump targets, and fencing whole zones of logic so they can be disabled as a block.
| Symbol | Name (AB / IEC) | What it means | Usage example |
|---|---|---|---|
Jump to subroutine JSR — Jump to Subroutine IEC: CAL (call) full JSR reference → | When the rung is true, scanning jumps to the named routine, executes it, and returns to the rung after the JSR. The backbone of organised, modular programs. | The main routine calls JSR "ConveyorControl" every scan so conveyor logic lives in its own file. | |
Label LBL — Label IEC: Jump label | Marks the landing point for a JMP (jump) instruction. Scanning resumes at the LBL rung, skipping everything between the JMP and the label. | A JMP over non-critical display logic lands on LBL 20 to shorten the scan during a fault. | |
Return RET — Return IEC: RET | Ends a subroutine and hands execution back to the rung after the JSR that called it. Optional in many platforms — the end of the routine returns implicitly. | A conditional RET exits the fault-handler routine early once the fault is cleared. | |
Master control reset (zone markers) MCR — Master Control Reset IEC: MCS / MCR zone full MCR reference → | Used in pairs to fence a zone of rungs. When the first MCR rung is false, every non-retentive output inside the zone de-energises; latched bits keep their state. | An MCR zone wraps all auto-mode rungs so switching to manual disables them in one move. |
The scaffolding every other symbol hangs on. Ladder diagrams inherit their look from relay wiring schematics — two vertical power rails with numbered horizontal rungs strung between them.
| Symbol | Name (AB / IEC) | What it means | Usage example |
|---|---|---|---|
Power rails Left / right rail IEC: Power rails (L / N heritage) | The two vertical lines framing the diagram. Logical "power" flows from the left rail through each rung's conditions toward the right rail. Rungs evaluate top to bottom, left to right, every scan. | Every rung you write is implicitly connected to both rails — the editor draws them for you. | |
Branch (parallel path) Branch IEC: Parallel connection (OR) | The rung wire splits at a junction into parallel paths that rejoin further right. Power passes if ANY path is true — the graphical OR, and the shape behind every seal-in circuit. | A seal-in contact sits on a branch in parallel with the Start button, holding the rung after release. |
The drawn shapes are nearly universal — the names differ by dialect. Allen-Bradley uses three-letter mnemonics (XIC, XIO, OTE); IEC 61131-3 and Siemens lean on the drawn symbol itself. The key mappings: XIC = -[ ]- = normally-open, and XIO = -[/]- = normally-closed — no matter what the toolbar calls them. When you hit an unfamiliar name, map it back to the drawn symbol: identify the shape (contact, coil or block), check for the slash, read the tag, then trace power flow left to right. The drawn symbol never lies; only the label changes between platforms.
Put the symbols together and you can read any rung. Here is the classic motor start/stop with a seal-in — the numbered callouts walk left to right along the power path.
Two rules cover everything you just read: contacts in series are AND, branches in parallel are OR. Every rung in every ladder program — however long — reduces to those two rules plus the symbols in the chart above.
All 25 symbols on one page — Allen-Bradley mnemonic, IEC name and meaning. Press Ctrl/Cmd + P and choose Save as PDF to keep an offline copy.
| Symbol | Allen-Bradley | IEC 61131-3 | Meaning |
|---|---|---|---|
| XIC — Examine If Closed | NO contact -| |- | Passes power when its bit is TRUE (1). The default input element: the rung sees "closed" whenever the addressed input, sensor or internal bit is ON. | |
| XIO — Examine If Open | NC contact -|/|- | Passes power when its bit is FALSE (0) — the diagonal slash inverts the logic. The rung breaks the moment the addressed bit turns ON. | |
| OTE — Output Energise | Coil -( )- | Follows the rung exactly: ON while a complete path of power reaches it, OFF the scan the rung goes false. The standard, non-retentive output. | |
| OTL — Output Latch | Set coil -(S)- | Sets its bit TRUE and holds it TRUE even after the rung goes false. The bit stays latched until an unlatch instruction on the same address clears it. | |
| OTU — Output Unlatch | Reset coil -(R)- | Resets a latched bit back to FALSE when its rung goes true. Always programmed as the partner of an OTL on the same address. | |
| ONS — One Shot | R_TRIG (rising edge) | Passes power for a single scan on a false-to-true transition of the conditions before it, then blocks until the input goes low and high again. | |
| OSR — One Shot Rising | R_TRIG | Output-style one-shot: sets its output bit for one scan when the rung input goes from OFF to ON. Same behaviour as ONS, packaged as an instruction block. | |
| OSF — One Shot Falling | F_TRIG | The falling-edge twin: sets its output bit for one scan when the rung input goes from ON to OFF. | |
| TON — Timer On-Delay | TON | Starts timing when the rung goes TRUE and sets its DN bit once the preset elapses; resets to zero the moment the rung goes false. | |
| TOF — Timer Off-Delay | TOF | DN is TRUE while the rung is energised, and stays TRUE for the preset time after the rung goes false — a hold-on delay. | |
| RTO — Retentive Timer On | TONR | Accumulates run-time across multiple TRUE periods and keeps its accumulator when the rung goes false. Only a RES (reset) instruction clears it. | |
| CTU — Count Up | CTU | Increments its accumulator by one on each false-to-true rung transition and sets DN when the count reaches the preset. | |
| CTD — Count Down | CTD | Decrements the accumulator on each false-to-true transition. Often shares an address with a CTU so one counter tracks items in minus items out. | |
| CTU + CTD pair | CTUD | The IEC combined counter: separate count-up and count-down inputs drive a single accumulator — one block instead of a paired CTU/CTD. | |
| EQU — Equal | EQ ( = ) | True while Source A equals Source B, passing power to the rest of the rung. Siblings NEQ, LEQ and GEQ share the same block shape. | |
| GRT — Greater Than | GT ( > ) | True while Source A is greater than Source B — the go-to block for high-level and over-range checks. | |
| LES — Less Than | LT ( < ) | True while Source A is less than Source B — the mirror of GRT for low-level and under-range checks. | |
| MOV — Move | MOVE | Copies a source value into a destination tag every scan the rung is true — the workhorse for loading presets, clearing registers and shuffling data. | |
| ADD — Add | ADD | Stores Source A + Source B in a destination when the rung is true. SUB, MUL and DIV share the shape — swap the label, keep the wiring. | |
| JSR — Jump to Subroutine | CAL (call) | When the rung is true, scanning jumps to the named routine, executes it, and returns to the rung after the JSR. The backbone of organised, modular programs. | |
| LBL — Label | Jump label | Marks the landing point for a JMP (jump) instruction. Scanning resumes at the LBL rung, skipping everything between the JMP and the label. | |
| RET — Return | RET | Ends a subroutine and hands execution back to the rung after the JSR that called it. Optional in many platforms — the end of the routine returns implicitly. | |
| MCR — Master Control Reset | MCS / MCR zone | Used in pairs to fence a zone of rungs. When the first MCR rung is false, every non-retentive output inside the zone de-energises; latched bits keep their state. | |
| Left / right rail | Power rails (L / N heritage) | The two vertical lines framing the diagram. Logical "power" flows from the left rail through each rung's conditions toward the right rail. Rungs evaluate top to bottom, left to right, every scan. | |
| Branch | Parallel connection (OR) | The rung wire splits at a junction into parallel paths that rejoin further right. Power passes if ANY path is true — the graphical OR, and the shape behind every seal-in circuit. |
A cheat sheet gets you reading — the simulator gets you writing. Create a free account and every symbol on this sheet becomes a live, draggable instruction in the browser: watch contacts open, coils latch and timers count in real time, with auto-graded scenarios to drill each one.
Start free →No install. No PLC licence. No credit card. Real contacts, coils, timers and counters with auto-graded feedback.
Start free →