Understanding Contacts and Coils: The Building Blocks of Ladder Logic
In the last post, we covered the basic idea behind ladder logic — rungs, rails, contacts, and coils. Now let's slow down and really understand contacts and coils, because this is the single most common place I see junior technicians get confused, especially when a rung isn't doing what they expect.
Normally Open vs. Normally Closed
The Confusion Starts Here
A normally open (NO) contact, symbol -| |-, is closed (passes power) when its associated bit is TRUE. Simple enough.
A normally closed (NC) contact, symbol -|/|-, is closed (passes power) when its associated bit is FALSE. This is where people trip up. The contact's physical state on your screen doesn't describe the wiring in the field — it describes the software logic. If you've got an NC contact referencing a Stop pushbutton wired normally closed (which is standard safety practice), that contact is "closed" logically when the pushbutton is untouched, and "opens" the rung when someone presses it.
Here's the trap:
field devices can also be wired NC for safety — think limit switches, e-stops, safety interlocks. When a device is wired NC and referenced in the program with an NO contact, or vice versa, the logic works but it inverts your intuition. I've watched experienced electricians burn 40 minutes on a live panel because they assumed a contact's software symbol matched the physical switch type in the field, when actually the addressing had been set up the opposite way. Always check the I/O map before you trust your gut.
Coils Aren't Just "Outputs"
There's More Than One Kind
A standard coil -( )- follows the rung exactly. Rung true, coil energized. Rung false, coil de-energized. Every scan, every time. No memory.
But you'll also run into:
Latch (Set) coils -(L)
once energized, they stay energized even after the rung goes false, until a separate Unlatch instruction resets them. This is how you build "sticky" states — a fault flag that stays raised until an operator acknowledges it, for example.
Unlatch (Reset) coils -(U)-
the counterpart, used to clear a latched bit.
One-shot / edge-triggered outputs — these fire for exactly one scan when a condition transitions, rather than staying on the whole time the condition is true. Critical for counting events or triggering a single action per press, rather than repeating it every scan while a button is held.
The Mistake Almost Everyone Makes: Double-Coiling
If you assign the same output coil on two different rungs, most PLCs won't stop you — but only the last rung in scan order will actually control that output's final state. I've seen this cause real head-scratchers on legacy programs where someone added a rung years ago "just to test something" and forgot to remove it. The output behaved erratically, and it took forever to trace because both rungs looked individually correct. Rule of thumb: one coil, one rung, always. If you need multiple conditions to drive the same output, combine them with OR branches on a single rung instead of duplicating the coil elsewhere in the program.
Practical Takeaway
Before you touch a live panel, get in the habit of tracing every contact back to its actual field device and confirming NO/NC wiring against the schematic — not against what the on-screen symbol implies. And when you're writing new logic, search the whole program for an output address before you use it, so you don't accidentally create a second coil for something already controlled elsewhere.
Next up
we'll look at seal-in circuits — how a simple feedback loop lets a momentary pushbutton hold a motor running, and why this pattern shows up in almost every control circuit you'll ever troubleshoot.
Comments
Post a Comment