Ladder Logic Symbols: Complete Reference for PLC Programming

Ladder logic uses a graphical notation derived from relay circuit diagrams. Every symbol represents a specific PLC instruction — contacts test bit state, coils set bit state, and function blocks execute timers, counters, math, and comparisons. This reference covers every common symbol with IEC 61131-3 names and platform variants.

Contents

Reading a Rung

A ladder logic program is arranged as horizontal rungs between two vertical power rails (left and right). The left rail represents the power source; the right rail represents the return.

Execution flows left to right. Each rung contains:

  • Conditions (contacts) on the left — these test the state of bits or values
  • Output action (coil or function block) on the right — executed only if all conditions are true (i.e., there is a logical "continuity" path from left rail to output)

Contacts in series implement AND logic: all must be true. Contacts in parallel implement OR logic: any one of them being true provides continuity.

The PLC scans all rungs sequentially from top to bottom in each scan cycle. Output coils are written at the end of each rung evaluation.

Contact Symbols

Contacts are always input conditions — they test the state of a tag (bit address) without changing it.

Ladder Logic Contact Symbols
Symbol TextAB NameIEC 61131-3 NamePasses Power When
—[ ]— XIC (Examine If Closed) Normally Open Contact (NO) Referenced bit = 1 (ON)
—[/]— XIO (Examine If Open) Normally Closed Contact (NC) Referenced bit = 0 (OFF)
—[P]— ONS with XIC, or OSR contact Positive Transition Contact (P) On the rising edge (OFF→ON transition), one scan only
—[N]— ONS with XIO, or OSF contact Negative Transition Contact (N) On the falling edge (ON→OFF transition), one scan only

XIC — Examine If Closed (Normally Open Contact)

The most common contact. Passes power (rung continuity) when the bit address it references is 1 (TRUE/ON). In physical relay terms, this is a normally open contact — it closes when energised.

Used for: start buttons, sensor inputs, timer done bits, any condition that must be true to allow an action.

XIO — Examine If Open (Normally Closed Contact)

Passes power when the bit address it references is 0 (FALSE/OFF). In physical relay terms, this is a normally closed contact — it is closed at rest and opens when the referenced coil energises.

Used for: stop buttons (which are physically NC), e-stop interlock conditions, permissive logic ("action allowed only when fault is NOT present").

Transition Contacts (One-Shot)

Positive transition (P) and negative transition (N) contacts pass power for exactly one scan — on the rising or falling edge of the referenced bit. Used to trigger single-cycle actions: incrementing a counter, advancing a state machine step, or resetting a register.

Coil Symbols

Coils are output instructions — they write to a bit address based on the rung's power flow.

Ladder Logic Coil Symbols
Symbol TextAB NameIEC 61131-3 NameAction
—( )— OTE (Output Energise) Coil (standard output) Sets bit to 1 if rung is true; clears bit to 0 if rung is false
—(L)— OTL (Output Latch) Set coil (S) Sets bit to 1 when rung is true; bit stays 1 even if rung goes false
—(U)— OTU (Output Unlatch) Reset coil (R) Clears bit to 0 when rung is true; bit stays 0 even if rung goes false
—(P)— OSR (One-Shot Rising) Positive transition coil Sets bit to 1 for exactly one scan on rung rising edge
—(N)— OSF (One-Shot Falling) Negative transition coil Sets bit to 1 for exactly one scan on rung falling edge

OTE — Output Energise (Standard Coil)

The standard output coil. The bit follows the rung: 1 when rung is true, 0 when rung is false. This is equivalent to an unsealed relay output — it resets automatically when the input conditions are no longer met.

OTL / OTU — Latch and Unlatch

Latching coils are always used in pairs: OTL sets a bit, OTU clears it. Once latched ON by OTL, the bit stays ON even if the OTL rung goes false. It only clears when the OTU rung goes true.

Common application: alarm latching, fault latching, motor run/stop control (OTL on start rung, OTU on stop or fault rung).

OSR / OSF — One-Shot Coils

OSR generates a one-scan pulse on the rising edge of the rung; OSF on the falling edge. Useful for triggering single actions (e.g., triggering a subroutine call, incrementing a register once per cycle).

Timer Instructions

IEC 61131-3 defines three standard timer function blocks, available in all compliant platforms.

Timer Function Block Summary
IEC NameFull NameAB/Siemens NameBehaviour
TON Timer On-Delay TON (AB), TON (Siemens) Output Q goes TRUE after input IN has been TRUE for preset time PT. Resets when IN goes FALSE.
TOF Timer Off-Delay TOF (AB), TOF (Siemens) Output Q goes FALSE after input IN has been FALSE for preset time PT. Q is TRUE whenever IN is TRUE.
TP Timer Pulse RTO/RES pair (AB), TP (Siemens) On rising edge of IN, output Q goes TRUE for exactly PT duration, regardless of IN state during pulse.

TON — On-Delay Timer

The most commonly used timer. When the enable rung (IN) goes true, the timer begins counting. When the accumulated time (ET) reaches the preset time (PT), the done bit (Q) goes true. The timer resets (Q = false, ET = 0) as soon as IN goes false.

Application: Conveyor start delay (allow belt to come to speed before loading), fault confirm time (a sensor must be active for 500 ms before alarm is raised), cooling fan run-on timer.

TOF — Off-Delay Timer

Q follows IN immediately (Q = IN while counting hasn't expired). On the falling edge of IN, the timer starts counting; Q stays true for PT duration after IN goes false, then Q goes false.

Application: Motor brake release delay, exhaust fan run-on after machine stop, conveyor purge time after process stops.

TP — Pulse Timer

Generates a fixed-duration output pulse. On the rising edge of IN, Q goes true and stays true for exactly PT, regardless of what IN does during the pulse. IN can go false and back true — Q won't reset or extend.

Application: Solenoid pulse (inject lubrication for 500 ms once per cycle), single-shot audible alarm, barcode scanner trigger pulse.

Timer Parameters

Timer Function Block Parameters
ParameterDirectionTypeDescription
INInputBOOLEnable input — starts/resets the timer
PTInputTIMEPreset Time — duration (e.g., T#5s, T#500ms)
QOutputBOOLOutput bit — reflects timer completion state
ETOutputTIMEElapsed Time — current accumulated time value

Counter Instructions

Counter Function Block Summary
IEC NameFull NameBehaviour
CTU Count Up Increments CV on each rising edge of CU input. Q goes TRUE when CV ≥ PV. Reset (R input) clears CV to 0.
CTD Count Down Decrements CV on each rising edge of CD input. Q goes TRUE when CV ≤ 0. Load (LD input) sets CV to PV.
CTUD Count Up/Down Combines CTU and CTD. CU increments, CD decrements, same CV. QU = CV ≥ PV; QD = CV ≤ 0.

CTU — Count Up

The standard counter. Counts rising edges on the CU (count-up) input. CV (current value) starts at 0 and increments by 1 per pulse. When CV reaches the preset value (PV), the done bit (Q) goes true. CV continues counting above PV unless the program resets it.

Application: Part counter (count pieces on a conveyor), batch counter (count bottles filled per batch), error occurrence counter.

Counter Parameters

CTU Counter Parameters
ParameterDirectionTypeDescription
CUInputBOOLCount-up pulse input (rising edge triggers count)
RInputBOOLReset — clears CV to 0 when TRUE
PVInputINTPreset Value — target count
QOutputBOOLDone bit — TRUE when CV ≥ PV
CVOutputINTCurrent Value — present count

Comparison Instructions

Comparison instructions are used as contacts in a rung — they pass power (return TRUE) based on the relationship between two values. They do not modify data.

Comparison Instructions
IEC SymbolAB MnemonicPasses Power When
EQ ( = )EQUSource A = Source B
NE ( ≠ )NEQSource A ≠ Source B
GT ( > )GRTSource A > Source B
LT ( < )LESSource A < Source B
GE ( ≥ )GEQSource A ≥ Source B
LE ( ≤ )LEQSource A ≤ Source B

Example: Enable a conveyor only when the product count is less than 100:

—[LT Product_Count 100]——( )— Conveyor_Run

Comparison instructions can compare integers, real numbers, or timer/counter values.

Math Instructions

Math instructions are output-type instructions (placed on the right side of the rung, executed when rung is true).

Common Math Instructions
IEC SymbolAB MnemonicFunction
ADDADDDest := Source A + Source B
SUBSUBDest := Source A − Source B
MULMULDest := Source A × Source B
DIVDIVDest := Source A ÷ Source B
MODMODDest := Source A modulo Source B
SQR / SQRTSQRDest := √Source A
NEGNEGDest := −Source A
ABSABSDest := |Source A|
CPT (compute)CPTEvaluate a general expression; result to Dest

Allen-Bradley Studio 5000 supports a CPT (Compute) instruction that accepts a full arithmetic expression in one block, e.g., Dest := (TankLevel - Offset) * ScaleFactor. This avoids chaining multiple ADD/MUL rungs.

Move and Copy

Move and Copy Instructions
IEC NameAB MnemonicFunction
MOVEMOVCopy Source value to Destination register
—MVM (Masked Move)Copy Source to Destination using a bit mask (only bits where mask = 1 are copied)
—FAL (File Arithmetic and Logic)Apply an operation to an array of values
—COP (Copy File)Copy a block of consecutive memory locations
—FLL (File Fill)Fill a memory block with a constant value

MOV is one of the most frequently used instructions: loading a preset value into a timer or counter PV, copying an analogue input value to a setpoint tag, initialising a register.

Program Control Instructions

Program Control Instructions
IEC NameAB MnemonicSiemens equivalentFunction
JMP / LBLJMP / LBLJMP / LABELUnconditional jump to a label within the same routine; skips rungs between JMP and LBL
RETRET—Return from subroutine (end of called routine)
JSR / RETJSR / RETCALL / RETJump to Subroutine — calls another ladder routine; returns when RET is executed
MCRMCR—Master Control Reset — disables all coils between two MCR instructions when rung is false
EOT / ENDEND—Marks the end of the ladder program scan

MCR (Master Control Reset) deserves special attention: when an MCR zone is inactive (rung false), all OTE coils within the zone are forced OFF. OTL/OTU latches, however, retain their state. MCR should not be used as a safety function — use hardware safety devices instead.

Platform Naming Differences

IEC 61131-3 defines standard names, but each PLC manufacturer uses their own mnemonics in their ladder editor. The underlying function is identical:

Ladder Logic Symbol Names Across Platforms
FunctionIEC 61131-3Allen-BradleySiemens (LAD)Mitsubishi
Normally open contact—[ ]—XIC—| |—LD / AND
Normally closed contact—[/]—XIO—|/|—LDI / ANI
Standard output coil—( )—OTE—( )—OUT
Set coil—(S)—OTL—(S)—SET
Reset coil—(R)—OTU—(R)—RST
Positive transition—[P]—ONS / OSR—|P|—PLS
On-delay timerTONTONTONOUT T
Off-delay timerTOFTOFTOFOUT T (mode)
Count upCTUCTUCTUOUT C
Equal comparisonEQEQUCMP (==)LD= / AND=
Greater thanGTGRTCMP (>)LD> / AND>
MoveMOVEMOVMOVEMOV

When migrating a program between platforms, the logic structure is the same — only the instruction names change. Most modern programming tools (Studio 5000, TIA Portal, CODESYS) display the IEC 61131-3 graphical symbols even when the underlying mnemonic differs.