ladder logic

plc contacts

normally open vs normally closed

NO vs NC Contacts in PLC Ladder Logic: Full Breakdown

‌
Flat vector diagram comparing normally open and normally closed contact symbols in PLC ladder logic rungs

Normally open and normally closed contacts trip up engineers at every experience level. Not because the concept is hard, but because there are two completely separate layers: the physical device wired in the field and the software instruction sitting in your ladder rung. Conflating them is one of the most reliable ways to wire a machine that does exactly the opposite of what you intended.

What Do Normally Open and Normally Closed Mean in a PLC?

A normally open (NO) contact in PLC ladder logic passes power (evaluates true) when the associated bit in controller memory is 1. A normally closed (NC) contact passes power when that same bit is 0. In Rockwell Studio 5000 these are the XIC and XIO instructions. In Siemens TIA Portal they are the standard contact and the negated contact. The instruction describes the bit state required for the rung to conduct, nothing more. It does not tell you anything about how the field device is physically wired.

The Two Layers You Must Keep Separate

Every input in a PLC system has two distinct properties that interact to produce the bit state the CPU reads. Mixing them up is where confusion breeds.

  • Layer 1: Physical contact type. The field device itself (pushbutton, limit switch, relay contact, proximity sensor output) is either physically NO or NC in its de-energised, unpressed, or non-actuated state.
  • Layer 2: Software instruction. The XIC or XIO instruction in your rung evaluates the bit that the input module writes based on the voltage it sees. This is purely a software statement about bit state.

The bit that the input module writes depends on the combination of both layers. A physically NC switch wired to an input, with no actuation, holds the input at 24 VDC, so the module writes a 1 to that bit. A physically NO switch in the same state holds the input at 0 VDC, so the module writes a 0. Once you know the bit state, the XIC or XIO instruction determines whether the rung conducts.

Flat vector diagram comparing a normally closed pushbutton wiring to a PLC input showing bit state 1 at rest versus a normally open pushbutton showing bit state 0 at rest
Physical contact type determines the resting bit state. The ladder instruction then decides what to do with that bit.

XIC vs XIO: The Rockwell View

If you have already read the post on XIC vs XIO ladder logic contacts, you know the mechanics. To summarise briefly: XIC (Examine If Closed) passes when its tag bit is 1, XIO (Examine If Open) passes when its tag bit is 0. Neither instruction cares whether the physical device is wired NO or NC. It only evaluates the current state of the bit.

The same principle applies in TIA Portal, CODESYS, Omron CX-Programmer and every other IEC 61131-3 compliant tool. The symbol differs by vendor but the logic is identical. If you are new to Siemens and want a parallel reference, the S7-1200 first program walkthrough shows exactly where these contact instructions appear in the Siemens environment.

Truth Table: All Four Combinations

Physical contact typeActuated?Input bit stateXIC resultXIO result
NONo (at rest)0False (no power flow)True (power flows)
NOYes (pressed)1True (power flows)False (no power flow)
NCNo (at rest)1True (power flows)False (no power flow)
NCYes (pressed)0False (no power flow)True (power flows)
All four physical/instruction combinations. Memorise the middle two columns and the rest follows automatically.

Why the Wiring Choice Matters for Safety

The most common real-world reason to choose NC wiring is fail-safe detection. If a cable breaks or a terminal comes loose, the input bit drops to 0. If your logic uses an XIC on that bit to allow a motion or output, a broken wire automatically removes the enable condition. The machine stops safely without any fault detection logic on your part. This is exactly why E-stops, guard doors and safety gates are almost always wired NC to a PLC input, even when a dedicated safety relay handles the power-cut path. The emergency stop circuit wiring guide covers the hardware side of that in detail.

Wire break blind spot: If you wire a critical device NO and use an XIO contact to detect its absence, a broken cable looks identical to the device not being actuated. The rung passes and the machine thinks the device is clear. For anything safety-related, NO wiring with XIO logic should be avoided unless a dedicated safety system handles the detection independently.

Sensor Wiring: NO, NC and the PLC Input Bit

Discrete sensors (inductive, capacitive, photoelectric) add another wrinkle: they can source or sink current depending on wiring, and many have both NO and NC output terminals. The output signal at the sensor terminal determines the voltage at the PLC input terminal, which determines the bit state. If you are using a 3-wire PNP sensor, the output goes high (sourcing 24 VDC) when the target is detected and the sensor output is NO. That drives the PLC input high, writing a 1 to the bit. An XIC on that bit passes when the target is present. Swap to the NC terminal of the same sensor and the logic inverts entirely. The 3-wire PNP and NPN sensor wiring guide covers this with wiring diagrams, and if you are still sorting out whether your module sinks or sources, sinking vs sourcing PLC I/O is worth a read first.

A Real-World Gotcha From the Field

On a conveyor commissioning job a few years ago, we had a jam-detection limit switch wired NC (as specified on the drawing) and an XIO contact in the rung to trigger an alarm when the bit went low. The alarm kept firing at random. Turned out the switch body had a loose mounting bolt and was vibrating slightly on the conveyor frame, intermittently breaking the NC contact. Because the wiring was NC, any brief mechanical bounce looked like a jam event. We swapped to a proximity sensor on an NO output, used XIC for the alarm trigger, and the false alarms stopped. The lesson: NC wiring is safer against open-circuit faults, but it is also sensitive to any event that physically opens the circuit, including mechanical vibration. For intermittent sensor faults like this one, always check the physical mounting before assuming an electrical fault.

Normally Closed Contacts in Interlock Logic

NC contacts in ladder logic (XIO instructions, not physically NC devices) are used constantly in interlocks. A fault latch bit, a stop command, an overtemperature signal: all of these are typically represented as XIO contacts in the permissive chain for an output. The rung reads naturally as 'motor runs if start is pressed AND no stop AND no fault'. The ladder logic interview questions article covers this pattern in depth if you want practice questions around it.

Dual-Zone Conveyor Enable: NO Position Confirm with NC Fault Guard. Ladder logic (4 rungs): Rung 0: examine if Zone1_PartPresent is on (XIC), then examine if Zone2_PartPresent is on (XIC), then examine if Conveyor_FaultLatch is off (XIO), then examine if Estop_Active is off (XIO), then energize output Conveyor_Enable (OTE). Rung 1: examine if Conveyor_Enable is on (XIC), then examine if HMI_StartCmd is on (XIC), then latch output Conveyor_Run (OTL). Rung 2: examine if HMI_StopCmd is on (XIC), then unlatch output Conveyor_Run (OTU). Rung 3: examine if Conveyor_Run is on (XIC), then energize output Conveyor_Drive_Out (OTE). Zone1_PartPresent and Zone2_PartPresent are XIC contacts, representing NO-wired inductive sensors that go high when a part is confirmed in position. Conveyor_FaultLatch and Estop_Active are XIO contacts: both bits are 0 in normal operation, so XIO passes freely. Any fault or E-stop sets those bits to 1, which immediately opens the XIO contacts and drops Conveyor_Enable regardless of the start latch state.

Dual-Zone Conveyor Enable: NO Position Confirm with NC Fault GuardLadder logic
Toggle inputs
Rung 0
Ladder logic rung: examine if Zone1_PartPresent is on (XIC), then examine if Zone2_PartPresent is on (XIC), then examine if Conveyor_FaultLatch is off (XIO), then examine if Estop_Active is off (XIO), then energize output Conveyor_Enable (OTE) examine if Zone1_PartPresent is on (XIC), then examine if Zone2_PartPresent is on (XIC), then examine if Conveyor_FaultLatch is off (XIO), then examine if Estop_Active is off (XIO), then energize output Conveyor_Enable (OTE) XIC Zone1_PartPresent Zone1_PartPresent Zone1_PartPresent XIC Zone2_PartPresent Zone2_PartPresent Zone2_PartPresent XIO Conveyor_FaultLatch Conveyor_FaultLatch Conveyor_FaultLatch XIO Estop_Active Estop_Active Estop_Active OTE Conveyor_Enable Conveyor_Enable Conveyor_Enable
Rung 1
Ladder logic rung: examine if Conveyor_Enable is on (XIC), then examine if HMI_StartCmd is on (XIC), then latch output Conveyor_Run (OTL) examine if Conveyor_Enable is on (XIC), then examine if HMI_StartCmd is on (XIC), then latch output Conveyor_Run (OTL) XIC Conveyor_Enable Conveyor_Enable Conveyor_Enable XIC HMI_StartCmd HMI_StartCmd HMI_StartCmd OTL Conveyor_Run Conveyor_Run Conveyor_Run L
Rung 2
Ladder logic rung: examine if HMI_StopCmd is on (XIC), then unlatch output Conveyor_Run (OTU) examine if HMI_StopCmd is on (XIC), then unlatch output Conveyor_Run (OTU) XIC HMI_StopCmd HMI_StopCmd HMI_StopCmd OTU Conveyor_Run Conveyor_Run Conveyor_Run U
Rung 3
Ladder logic rung: examine if Conveyor_Run is on (XIC), then energize output Conveyor_Drive_Out (OTE) examine if Conveyor_Run is on (XIC), then energize output Conveyor_Drive_Out (OTE) XIC Conveyor_Run Conveyor_Run Conveyor_Run OTE Conveyor_Drive_Out Conveyor_Drive_Out Conveyor_Drive_Out
energizedTip: click a contact in the diagram to flip its bit.
Zone1_PartPresent and Zone2_PartPresent are XIC contacts, representing NO-wired inductive sensors that go high when a part is confirmed in position. Conveyor_FaultLatch and Estop_Active are XIO contacts: both bits are 0 in normal operation, so XIO passes freely. Any fault or E-stop sets those bits to 1, which immediately opens the XIO contacts and drops Conveyor_Enable regardless of the start latch state.

Common Mistakes and How to Avoid Them

  • Assuming the instruction matches the device. A pushbutton labelled NC on its datasheet does not mean you must use an XIO instruction. Trace the bit state first.
  • Double-inversion. Wiring a physically NC device and then using an XIO instruction gives you the same logic as a NO device with XIC. It works, but it is confusing to the next engineer. Pick one inversion point and stick to it.
  • Ignoring module power loss. If 24 VDC to the input module drops, all bits go to 0. XIO contacts on those bits all pass. Map out what your outputs do in that scenario.
  • NC wiring without a current-limiting path check. A short to 0 V on a line powering an NC-wired device holds the input low permanently. This can mimic the device being actuated. Check with a multimeter at the terminal, not just in the PLC online view. The PLC I/O fault diagnosis guide covers exactly this test procedure.
  • Forgetting to update the wiring diagram when you invert logic in software. The physical diagram should reflect reality. If the device is wired NO, the symbol on the drawing should show NO, regardless of which instruction you use in ladder.

Siemens, CODESYS and Other Platforms

In TIA Portal, the NO contact symbol is two vertical bars with no extra mark. The NC contact adds a diagonal slash. The evaluation logic is identical to XIC and XIO: NO passes when the tag is true, NC passes when it is false. If you are working in CODESYS or Beckhoff TwinCAT, the IEC 61131-3 standard defines the same two contact types with the same graphical symbols. The 5 types of PLC programming languages post gives a broader view of how ladder fits alongside ST, FBD and SFC if that context is useful.

For Siemens-specific ladder work, the S7-1200 timers in TIA Portal article shows contact instructions being used alongside TON and TOF blocks, which is a realistic look at how NO and NC contacts appear in a real program. The structured text in TIA Portal guide also shows how the same NO/NC logic translates when you leave ladder entirely.

Quick Decision Guide

SituationPhysical wiringPLC instruction
Start pushbutton, momentary run commandNOXIC
Stop pushbutton, safety-criticalNCXIC (bit is 1 at rest, 0 when pressed)
E-stop, fail-safe requiredNCXIC (drop to 0 on actuation or wire break)
Proximity sensor, detect part presentNOXIC
Guard door open alarm (safe = closed)NCXIC (bit 1 = door closed = safe)
Fault latch bit in software interlockN/A (internal bit)XIO (passes when no fault)
A practical cheat sheet for common situations. Column 3 assumes you want fail-safe behaviour where relevant.

When you are wiring up input modules, the PLC analog input wiring guide and the sinking vs sourcing explanation are useful companions: they cover the electrical details that sit underneath the bit state you are reasoning about here. For a broader look at how PLC addressing and memory work together with these bit states, PLC memory and addressing explained fills in the gaps.

Commissioning habit: Before trusting the online view in the PLC, force the input bit manually (if the platform allows it) and verify the field device follows. Then actuate the device physically and verify the bit changes. This two-step check confirms both the wiring and the I/O module are behaving as expected. The PLC troubleshooting with online monitoring guide covers this technique in more detail.

If this article cleared up the hardware-software split, the next step is understanding exactly how XIC and XIO behave at the instruction level across different Rockwell processor families: XIC vs XIO: Ladder Logic Contacts Explained goes deeper on the instruction mechanics. From there, ladder logic interview questions and real answers will test your understanding with the kind of scenarios you will see on a commissioning job or a technical interview. And if you want to see NO and NC contacts working inside a full program, the PLC bottle filling machine project uses both types in a realistic sequence.

Related Blogs

Flat vector diagram comparing XIC and XIO ladder logic contact symbols with bit-state labels showing how each instruction evaluates its tag
ladder logicallen-bradleystudio 5000

XIC vs XIO: Ladder Logic Contacts Explained

XIC and XIO are the two most fundamental contacts in Allen-Bradley ladder logic. Learn exactly how each evaluates its bit, where to use them, and the mistakes that catch beginners out.

9 min read

PLC memory addressing map showing input, output, bit memory and data block segments
plc memoryaddressingdata types

PLC Memory and Addressing Explained

PLC memory addressing controls every tag, bit, byte and word your program touches. Here is how it really works across Siemens, Rockwell and CODESYS platforms.

8 min read

Flat vector diagram of a ladder logic rung showing XIC and XIO contacts connected to an OTE output coil with a TON timer block, representing ladder logic interview questions
ladder logicplc interviewplc programming basics

Ladder Logic Interview Questions: Real Answers

Preparing for a PLC role? These ladder logic interview questions cover contacts, coils, timers, counters, latching, scan cycle, and common gotchas interviewers love to probe.

13 min read

Flat vector diagram of a ladder logic rung showing XIC and XIO contacts connected to an OTE output coil with a TON timer block, representing ladder logic interview questions
ladder logicplc interviewplc programming basics

Ladder Logic Interview Questions: Real Answers

Preparing for a PLC role? These ladder logic interview questions cover contacts, coils, timers, counters, latching, scan cycle, and common gotchas interviewers love to probe.

13 min read

Sinking vs sourcing PLC input wiring diagram showing NPN and PNP sensor connections
sinking sourcing ioplc wiringnpn pnp sensors

Sinking vs Sourcing PLC I/O: Wiring It Right

Sinking vs sourcing PLC I/O confuses almost every technician at least once. Here is the current-flow logic that makes it click, plus real wiring rules.

8 min read

PNP and NPN 3-wire sensor wiring diagram to PLC input terminals
sensor wiringplc inputspnp npn

3-Wire Sensor Wiring: PNP vs NPN to PLC Inputs

PNP or NPN sensor, sinking or sourcing input? Learn exactly how to wire 3-wire sensors to any PLC input card with real wiring rules and common mistakes.

9 min read