Forward/Reverse Motor PLC Ladder Diagram (Run It Free)
This page walks through the complete forward/reverse motor control PLC program — the seal-in latches that hold each direction, the cross-interlock that stops the two contactors from ever pulling in together, the stop-before-reverse logic, and the auxiliary-feedback fault detection that catches a welded contactor. The ladder is grounded in a live scenario you can run right now in your browser: write the rungs, press the forward and reverse push-buttons, watch the motor spin each way, and get instant pass/fail feedback — no PLC hardware and no software to install.
motorforward-reverseinterlocksafety
How forward/reverse motor control works
A reversing motor starter drives a three-phase motor in either direction by swapping two of the three supply phases. In the power circuit this is done with two contactors: the forward contactor connects the phases straight through, and the reverse contactor swaps L1 and L3. Energising the wrong pair — or both contactors at once — creates a phase-to-phase short across the swapped lines, so the single most important job of the PLC program is to guarantee the two contactors can never be energised at the same time.
The control logic is a pair of seal-in (latching) rungs, one per direction, tied together by a cross-interlock. Pressing FWD_PB energises FWD_CONTACTOR, which seals itself in through a holding contact so the motor keeps running after the button is released. Pressing REV_PB does the same for REV_CONTACTOR. STOP_PB and the E-stop drop both. The cross-interlock is the contact of each direction wired normally-closed into the other direction's rung, so whenever one contactor is in, the opposite rung is broken.
In this scenario six inputs are pre-wired for you: FWD_PB (%I0.0), REV_PB (%I0.1), STOP_PB (%I0.2), ESTOP (%I0.3, normally-closed — TRUE means healthy), and the two contactor auxiliary feedback contacts FWD_AUX (%I0.4) and REV_AUX (%I0.5). Five outputs are pre-wired: FWD_CONTACTOR (%Q0.0), REV_CONTACTOR (%Q0.1), FWD_LAMP (%Q0.2), REV_LAMP (%Q0.3), and FAULT_LAMP (%Q0.4).
The seal-in and cross-interlock rungs
Each direction is a memory latch. The cleanest way to build it is with SET/RESET coils on an internal bit, then drive the physical contactor from that bit through the interlock.
FWD_BIT is SET by a momentary press of FWD_PB and RESET by any of: STOP_PB, the E-stop dropping out, a fault, or — for stop-before-reverse safety — REV_PB. REV_BIT mirrors it: SET by REV_PB, RESET by STOP_PB, E-stop, fault, or FWD_PB. Because pressing the opposite direction button resets the running bit, the motor always coasts to stop before the other direction can take over, which protects the gearbox and the contactors from a plugging-style instant reversal.
The physical coils then carry the cross-interlock: FWD_CONTACTOR := FWD_BIT AND NOT FAULT_BIT AND NOT REV_BIT, and REV_CONTACTOR := REV_BIT AND NOT FAULT_BIT AND NOT FWD_BIT. The NOT REV_BIT term in the forward rung (and vice versa) is the software interlock — even if both bits were somehow set, neither contactor would energise. In a real panel this software interlock is backed up by a mechanical interlock on the contactors and by the normally-closed auxiliary contacts in the power-circuit wiring, giving three independent layers of protection.
Welded-contactor fault detection with auxiliary feedback
A contactor whose main contacts weld shut is one of the most dangerous failures in a reversing starter: the PLC commands the coil off, but the motor keeps running, and if the operator then selects the opposite direction the interlock in software is no longer enough. This scenario teaches the standard guard — auxiliary-contact feedback.
Each contactor carries a normally-open auxiliary contact wired back to an input: FWD_AUX and REV_AUX. When the program de-energises a contactor coil, its auxiliary should drop within one scan. If the coil is commanded OFF but the auxiliary is still reading ON, the main contacts are stuck (welded or mechanically jammed). The program latches FAULT_BIT, lights FAULT_LAMP, and forces both contactors off until the fault is cleared. The E-stop input does the same: losing ESTOP (it is normally-closed, so TRUE is healthy) drops both contactors and latches the fault.
This is exactly the kind of diagnostic logic the CCST and most maintenance roles expect you to be able to read and write. You can build it and watch the fault latch fire in the live scenario — toggle a contactor's auxiliary out of step with its coil and the fault lamp comes on.