The short answer: normally open (NO) and normally closed (NC) describe a physical contact in its normal, unactuated condition. Rockwell XIC and XIO instructions test a BOOL data bit: XIC is true when the bit is 1, while XIO is true when the bit is 0. A normally closed field Stop contact can therefore appear as an XIC in the program when healthy wiring makes a positively named tag such as Stop_OK equal 1.
IEC 61131-3 defines Ladder Diagram (LD) as one of the graphical programming languages for programmable controllers. Vendor instruction names and symbols vary; this guide uses Rockwell's XIC (Examine if Closed) and XIO (Examine if Open) because their names are a frequent source of confusion.
Scope: this is a reading and documentation method for ordinary control logic. It is not an emergency-stop circuit, a safety-function design, or a substitute for the controller's I/O manual, risk assessment, validation, and applicable machinery-safety requirements. IEC and Rockwell sources were last checked August 31, 2026.
The three layers that the contact symbol hides
Layer 1: the field contact
A normally open (NO) contact is open when the device is in its defined normal, unactuated state. Actuation closes it. A normally closed (NC) contact is closed at rest; actuation opens it.
“Normal” does not mean “what the machine usually does during production.” It refers to the device's specified reference state—commonly unactuated and de-energized, with exceptions defined by the device and application. Read the device documentation instead of guessing from the process condition.
Layer 2: the electrical input and data bit
The PLC input module converts its terminal condition into controller data. In a common 24 VDC sourcing or sinking arrangement, the simplified result is:
- an energized input becomes bit
1; - a de-energized input becomes bit
0.
The field contact choice influences that value, but it does not determine it alone. Supply arrangement, module type, channel configuration, diagnostics, intermediate relays, and the actual wire path all matter. Some modules invert or otherwise process a signal before the program sees the final tag, so the I/O list must state what 0 and 1 mean.
Layer 3: the ladder instruction
Rockwell's current Studio 5000 help defines both instructions in terms of the addressed BOOL data bit:
- XIC evaluates true when the bit is
1and false when it is0. - XIO evaluates true when the bit is
0and false when it is1.
The graphical marks resemble relay contacts, but the instruction is not a wiring diagram of the field device. It is a Boolean test repeated during the controller scan. The instruction name says nothing by itself about whether the device in the field is physically NO or NC.
XIC/XIO truth table
| Input bit | XIC result | XIO result | Possible field interpretation |
|---|---|---|---|
| 0 | False | True | Input not energized; could mean device at rest, device actuated, broken wire, or lost supply depending on wiring |
| 1 | True | False | Input energized; physical meaning still depends on the circuit |
This table is intentionally about the data bit, not the field contact. The “possible field interpretation” column stays conditional because several physical states can produce the same bit.
Worked example: a normally closed Stop contact with XIC
Consider an ordinary process-control Stop pushbutton with a normally closed contact feeding a PLC input. The project names the input tag Stop_OK, meaning 1 when the stop loop is healthy and not pressed.
- At rest and with wiring healthy, the contact is closed, the input is energized,
Stop_OK = 1, and an XICStop_OKis true. - When pressed, the contact opens,
Stop_OK = 0, and the XIC becomes false. - If the wire breaks or input power is lost,
Stop_OKalso becomes0; the rung drops out instead of continuing to run.
That last behavior is often described as de-energize-to-stop: several loss-of-signal failures produce the same “not healthy” program state as pressing Stop. It is a useful control and diagnostic property, but it does not make a standard input, standard PLC, or single contact into a safety-rated system.
Now invert only the software test. If the same Stop_OK tag is addressed by XIO, the instruction is true when the loop is not healthy. That may be exactly right for an alarm branch such as Stop_Circuit_Fault, but it is normally wrong as the permissive that lets the motor run. The correct instruction follows the condition the rung needs, not the contact shape drawn on the device datasheet.
Decision procedure: choose the instruction from the required truth
Use this sequence during design review or troubleshooting:
- Define the field device's normal state. Write whether each physical contact is NO or NC when the device is unactuated and de-energized.
- Trace terminal voltage. For normal, actuated, and relevant fault states, record whether the PLC terminal is energized.
- Confirm the controller value. Use the I/O module documentation, channel configuration, and online data to establish the tag's
0or1state. Do not infer it from the ladder symbol. - Write the tag meaning. Prefer a name whose true state is obvious, such as
Stop_OK,Guard_Closed, orTank_High. If the project keeps hardware addresses, add a description that states the meaning. - State the rung requirement in words. For example: “The run permissive must be true only while the stop loop is healthy.”
- Choose the Boolean test. Use
XICwhen the rung must pass for bit1; useXIOwhen it must pass for bit0. - Test normal, actuated, and fault cases. Include lost field power, broken conductor, failed sensor, forced tag, stale communication data, and controller startup behavior when they are credible for the system.
State matrix for the Stop_OK example
| Observed condition | Field contact | Input bit | XIC Stop_OK | Run permissive |
|---|---|---|---|---|
| Healthy, not pressed | Closed | 1 | True | Available, if every other condition is true |
| Stop pressed | Open | 0 | False | Removed |
| Field wire open | May still be closed | 0 | False | Removed |
| Input forced on | Unknown to logic | 1 | True | Potentially misleading; force control and indication are required |
The fourth row is why the program view is not enough. A true instruction proves only the value the program is examining. It does not prove that the field device moved, the wire is intact, or the process reached a safe state.
Common failure modes
Calling the ladder marks NO and NC without context. The labels may be useful shorthand inside one team, but they encourage readers to map a software test directly onto a physical contact. Label the instruction XIC/XIO or “test true/test false” when the distinction matters.
Naming a tag after a terminal instead of its meaning. Local:2:I.Data.3 may be precise, but it makes reviewers reconstruct the entire I/O chain. Use an alias or description that states what a true bit means.
Assuming zero always means the device is actuated. Zero can also mean a broken conductor, missing supply, tripped interposing relay, disabled channel, stale network value, or a configured inversion. The fault response depends on the whole input path.
Treating a process Stop rung as an emergency-stop design. An emergency stop or guard function needs a separate safety analysis, suitable devices and architecture, diagnostic coverage, reset behavior, and validation. This article's one-bit example does not establish any of those properties.
Reviewing only the steady states. Startup, power restoration, communications loss, forces, bypasses, maintenance mode, and simultaneous inputs often reveal the real error. Put those states in the commissioning test sheet instead of leaving them implicit.
A compact review checklist
- The drawing distinguishes physical contacts, terminal state, controller data, and ladder tests.
- “Normal” is defined for each field device rather than inferred from machine operation.
- Every input tag states what
0and1mean. - XIC/XIO choices follow the required Boolean condition.
- The state table includes at least rest, actuated, open-wire, and power-loss cases.
- Online forces and bypasses are controlled and visibly indicated.
- The program never presents a standard control example as a validated safety function.
- The I/O list, electrical drawing, program comments, and commissioning test use the same tag meaning.
Draw the field circuit and PLC rung separately, then connect them with an I/O state table. ChatDiagram's ladder logic maker can keep addresses and tag meanings on the rung. For a zero-sign-up scratch draft, CircuitMaker's ladder generator is the narrower tool. Neither simulates the controller or validates a safety function; verify the actual hardware, configuration, program, and test results.