XIC (Examine If Closed) is the normally-open contact instruction in ladder logic: it passes logical continuity to the rest of the rung when the bit it examines is 1 (ON), and blocks it when the bit is 0.
Join 1900+ learners practicing PLC programming
How it works
XIC is the single most used instruction in any ladder program, and the name explains the logic better than the symbol does. The instruction examines a bit and asks: is the (imaginary) contact closed? If the referenced bit is 1, the answer is yes — the contact conducts and rung continuity continues to the next element. If the bit is 0, the contact is open and everything to its right on that path stays false. The ] [ symbol mimics the normally-open contact of a hardwired relay, which is exactly what it replaced.
Where the bit comes from matters for timing. During the input-scan phase of the PLC scan cycle, the controller copies the physical input terminals into the input image table. When the program scan then evaluates your XIC, it reads that frozen image — not the live terminal. A sensor that flickers ON and OFF within one scan can therefore be missed entirely, and every XIC addressing the same input is guaranteed to see the same value within a single scan. That consistency is a feature: your rung logic can never see an input change mid-rung.
An XIC is not tied to physical inputs. It can examine an internal bit, a timer done bit (Timer1.DN), a counter done bit (Counter1.DN), or an output bit — examining an output with an XIC is exactly how the classic seal-in (latching start/stop) circuit works. The instruction never writes anything; it only reads. Any number of XIC instructions in any number of rungs can examine the same bit.
The classic beginner trap: XIC does not mean "normally open push-button". It means "true when the bit is 1". If a normally-closed physical switch is wired to the input, the bit is 1 while the switch is untouched — and an XIC examining it is true even though nobody pressed anything. Program against the bit state, not against the physical device you imagine on the other end of the wire.
Across vendors
| Platform | Name / syntax | Notes |
|---|---|---|
| Allen-Bradley (Studio 5000 / RSLogix) | XIC | Instruction mnemonic XIC tag — e.g. XIC Start_PB. Drawn as ] [ on the rung. |
| IEC 61131-3 (CODESYS, OpenPLC) | NO contact | No mnemonic — the graphical normally-open contact -| |- in LD. In Structured Text it is simply IF Start_PB THEN …, and in Instruction List LD Start_PB. |
| Siemens (TIA Portal) | NO contact | The -| |- element in LAD; in STL the A (AND) / O (OR) bit-logic instructions read the bit, e.g. A "Start_PB". |
| Mitsubishi (GX Works) | LD / AND / OR | LD X0 loads a normally-open contact on X0; AND / OR extend the rung in series/parallel. |
XIC is Allen-Bradley vocabulary. Everyone else just calls it a normally-open (NO) contact — the symbol and the bit-equals-1 evaluation rule are identical across every IEC 61131-3 ladder editor.
In practice
| Photo_Eye Green_Lamp | |----] [--------------------------------( )-------|
The simplest possible rung: an XIC examining the Photo_Eye input bit drives an OTE coil. Every scan, the PLC reads the input image — if the photo-eye sees a part (bit = 1), the XIC is true and the lamp bit is written to 1; if not, the OTE writes 0. The lamp tracks the sensor with a delay of at most one scan time.
| Start_PB Stop_PB Motor | |----] [--------]/[------------+------------( )--| | Motor | | |----] [-----------------------+ |
The XIC examining the Motor output bit — in parallel with the Start_PB contact — is what makes this circuit latch. On the scan where Start_PB is pressed, the rung goes true and Motor is written to 1. On the next scan, the XIC Motor branch is now true, so the rung stays true even after the operator releases the button. Pressing Stop_PB breaks continuity and the seal collapses.
This example shows XIC examining two different kinds of bits in one circuit: a physical input (Start_PB) and the output bit itself (Motor). It is the standard motor-starter pattern and the first circuit worth memorizing.
Gotchas
Assuming XIC means "a normally-open button is wired here"
XIC is true when the bit is 1 — full stop. Safety devices (E-stops, guard switches) are wired normally closed, so their healthy state reads 1 and an XIC on them is true with nobody touching anything. Reading the electrical drawing and the ladder together is the only way to get this right.
Expecting an XIC to catch a pulse shorter than the scan time
The XIC reads the input image captured once per scan. A 2 ms pulse from a high-speed sensor on a 10 ms scan will often be missed. Use a latching input, a high-speed counter card, or an event task instead.
Duplicating a tag on XIC and OTE in ways that fight each other
Any number of XICs may examine a bit, but if two OTE rungs write the bit the last rung scanned wins. When a seal-in circuit "randomly" drops out, search the program for a second OTE on the same tag.
Using XIC where an edge is needed
An XIC is level-triggered: it stays true as long as the bit is 1. Feeding a counter or a toggle from a plain XIC means the action repeats every scan while the input is held. Put an ONS after the XIC when the logic must fire once per press.
Drop the instruction on a rung in the browser simulator, toggle the inputs, and watch the rung state, accumulator values and outputs update scan by scan.
Questions
XIC stands for Examine If Closed. It is the Allen-Bradley name for the normally-open contact instruction in ladder logic: the instruction is true (passes rung continuity) when the bit it examines is 1, and false when the bit is 0. It reads the bit — it never changes it.
The XIC symbol is two parallel vertical bars on the rung — ] [ — the same symbol as a normally-open relay contact, with the tag name written above it. The normally-closed counterpart (XIO) adds a diagonal slash: ]/[.
They are exact opposites. XIC (Examine If Closed) is true when the examined bit is 1; XIO (Examine If Open) is true when the bit is 0. For any bit, exactly one of the two evaluates true on a given scan. XIC maps to the IEC normally-open contact, XIO to the normally-closed contact.
Yes. XIC works on any BOOL: physical inputs, internal memory bits, timer and counter done bits, and output bits. Examining an output bit with an XIC is exactly how a seal-in circuit holds a motor running after the start button is released.