A motor start/stop in ladder uses a seal-in (latching) rung: a Start NO contact in parallel with a contact of the motor output, in series with the Stop input and the permissives, driving the motor output coil. Because the Stop button is wired NC, its input is TRUE when not pressed, so it appears as a normally open contact in the rung.
- The parallel motor contact “seals in” the coil after Start is released
- An NC-wired Stop is programmed with a normally open contact
- Put every permissive (E-stop OK, MPCB OK) in series in the same rung
- Simulate first, download second
Every PLC programmer writes this circuit first, and many write it wrong: the classic mistake is an NC contact on an NC-wired stop button, which means the motor can never start. We will do it right and explain why.
Step 1: From Hardwired Circuit to Ladder
| Hardwired element | PLC equivalent | Ladder symbol |
|---|---|---|
| Start push button (NO) | DI_Start_PB | Normally open contact ┤ ├ |
| Stop push button (NC) | DI_Stop_PB (TRUE when not pressed) | Normally open contact ┤ ├ |
| Contactor auxiliary contact (seal-in) | DO_Motor_Run used as a contact | Normally open contact in parallel with Start |
| E-stop / MPCB in series with coil | DI_EStop_OK, DI_MPCB_OK | Normally open contacts in series |
| Contactor coil | DO_Motor_Run | Coil ( ) |
Step 2: Open PLC_PRG in the Ladder Editor
- Under the application, double-click
PLC_PRG. If it was created in another language, add a new POUMotor_Logicof type Program in LD and call it from PLC_PRG. - Insert a new network (rung). Add a contact and type
DI_Start_PB(use input assistance with F2 to pick the variable). - Add a parallel contact under it and enter
DO_Motor_Run. - Add series contacts
DI_Stop_PB,DI_EStop_OK,DI_MPCB_OK. - End the rung with a coil
DO_Motor_Run. - Add a second network: contact
DO_Motor_Run→ coilDO_Start_Lamp.
Step 3: Run the Rung in the Simulator
Start/stop ladder simulator
Hold Start for a moment, release it, then press Stop. Try the E-stop and an MPCB trip while running.
Green contact = passing power. Orange moving wire = rung is true and the output is energised.
The same logic in Structured Text (you will meet ST properly in Lab 18):
DO_Motor_Run := (DI_Start_PB OR DO_Motor_Run) AND DI_Stop_PB AND DI_EStop_OK AND DI_MPCB_OK;
DO_Start_Lamp := DO_Motor_Run;Step 4: Build, Download and Test on the Kit
- Build the project and fix any errors (undeclared variable = typo in a tag name).
- Download and run (Lab 8 explains every option).
- Press Start: the contactor pulls in and the Start lamp lights. Release Start: it stays on.
- Press Stop: it drops. Press E-stop while running: it drops and does not restart when the E-stop is reset.
- Watch the rung online: energised parts are highlighted, exactly like the simulator.
Practice Exercise
Add a second Start button at the conveyor (DI_Start_PB2) and a second Stop button (DI_Stop_PB2, NC). Decide which go in parallel and which in series, then test both in the simulator logic on paper.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Motor never starts | NC contact used for an NC-wired stop button | Use a normally open contact for DI_Stop_PB |
| Motor stops when Start is released | Seal-in contact missing or wrong variable | Parallel contact must be DO_Motor_Run |
| Motor restarts after E-stop reset | Start PB stuck or wired NC | Check DI_Start_PB is FALSE at rest |
| Build error: identifier not defined | Typo or variable not mapped | Use F2 input assistant to pick the mapped variable |
Frequently asked questions
What is a seal-in contact in ladder logic?
A contact of the output placed in parallel with the Start button so the rung stays true after Start is released. It replaces the auxiliary contact used in hardwired start/stop circuits.
Why use a normally open contact for an NC stop button?
The NC button gives TRUE when not pressed. A normally open contact passes power when its input is TRUE, so the rung works normally and opens when Stop is pressed or a wire breaks.
Should I use SET/RESET coils for start/stop?
You can, but a seal-in rung is easier to read and automatically drops on power loss. Use SET/RESET when the state must be held across many rungs.
Which languages does Automation Builder support?
The IEC 61131-3 languages: Ladder (LD), Function Block Diagram (FBD), Structured Text (ST), Instruction List (IL) and Sequential Function Chart (SFC), plus CFC.