1. Overview
This reference documents how to implement a software emergency-stop (E-stop) and an A+/A- mutual-exclusion interlock in a Siemens LOGO! 8 controller using LOGO!Soft Comfort. The pattern is the classic one-direction-at-a-time permissive interlock, in which two outputs (A+ and A-) must never energise together. It is built around three ideas: a positively-driven hardware E-stop, a latched Run-Enable, and cross-coupled direction permits that prevent Q1 and Q5 from being high in the same scan.
The article separates two concepts that are frequently conflated in school and prototyping work:
- A hardware E-stop per ISO 13850 and IEC 60204-1 that physically breaks the power path to the actuators.
- A software E-stop / permissive interlock inside the LOGO! program that drops every output Q when the safety chain opens or when the controller detects a contradictory command (Q1 and Q5 both requested at once).
2. Prerequisites
Before opening LOGO!Soft Comfort, confirm the following hardware and software prerequisites.
| Item | Specification | Notes |
|---|---|---|
| LOGO! base module | LOGO! 8 family (6ED1052-1xx08-0BAx generation) | Digital inputs I1–I8, transistor or relay outputs Q1–Q4. Expansion modules add I9–I24 and Q5–Q16. |
| LOGO! firmware | LOGO! 8 generation, FS:01 or later | Edge-triggered blocks and the UDF library require LOGO! 8.0+. |
| LOGO!Soft Comfort | V8.0 or later | FBD, LAD, and UDF editors; matches the device firmware before download. |
| E-stop pushbutton | IEC 60947-5-1, positive-opening NC contact, 1NO/1NC or 2NC | Yellow/red mushroom, twist or pull release. ABB E-stops of the MPM and MCEB families meet this requirement: see the ABB emergency-stops and pilot devices catalogue. |
| Contactors | Mechanically linked or mirror-contact, IEC 60947-4-1 | Mirror contact used to read back contactor state into a LOGO! input for PL c/category 1 monitoring. |
| Reset pushbutton | 1NO momentary, blue | Used for software re-enable after the E-stop has been released. |
| 24 V DC supply | PELV/SELV per IEC 60204-1 | Powers the LOGO! L+ and M terminals; the contactor coil loop uses the same rail through the E-stop. |
Reference documents to keep open while building:
- Siemens LOGO! product page
- Siemens Industry Online Support (search for "LOGO!")
- ISO standards portal (for ISO 13850, ISO 13849-1)
- IEC standards portal (for IEC 60204-1, IEC 60947-5-1)
- ABB Emergency Stops and Pilot Devices
3. Safety Boundary: Hardware E-Stop vs. Software Permissive Interlock
ISO 13850 and IEC 60204-1 require the emergency-stop function to override all other commands, bring the machine to a defined safe state, and remain active until a manual reset is performed. The physical interruption is done by an E-stop device with at least one positive-opening NC contact (per IEC 60947-5-1, Annex K) wired in series with the contactor coils or the safety relay's input loop.
A LOGO! can supervise that chain (read the NC contact on an input, react to its opening, latch a fault, prevent re-start), but it cannot replace the chain. If the only thing standing between a moving axis and an operator is a transistor output of the LOGO!, the design does not meet category 1 or higher. Categories 3 and 4 require two-channel monitoring, cross-fault detection, and a certified safety relay such as a Sirius 3SK or a Pilz PNOZ, not a LOGO!.
Typical wiring topology for a category 1 / PL c arrangement:
The red wire carries the contactor-coil current; the E-stop NC opens it directly. The blue taps let the LOGO! see the same status on input I1 so the program can latch a fault flag (M2), drop Run-Enable (M1), and prevent a re-start until the reset pushbutton is pressed.
4. The A+/A- Mutual-Exclusion Problem
A common school assignment and a frequent real-world fault is the A+/A- interlock: two outputs (here Q1 = A+ forward, Q5 = A- reverse) must never be ON at the same time. If they are, two contactors in the same motor power stage close simultaneously and short the phase-to-phase or DC-bus through the motor windings. The user asked specifically how to interrupt all signals going to a Q when the conflict is detected.
The accepted pattern is:
- Latch a Run-Enable flag with a Set/Reset flip-flop (SR in FBD).
- Drive the Set input from the start pushbutton edge plus the E-stop OK and an overload-free condition.
- Drive the Reset input from the E-stop, the overload, or a self-detected Q1 ∧ Q5 fault.
- Cross-couple the direction permits: A+ = Enable ∧ Fwd ∧ ¬A- running; A- = Enable ∧ Rev ∧ ¬A+ running.
- Read back the actual Q status, not the requested command, to defeat a welded-contact fault.
Read-back uses the LOGO! flag Ni (network input) or a real input wired to an auxiliary contact of the contactor. The latter is the only method that meets ISO 13849-1 PL c or higher, but for school work the read-back from the same output variable is acceptable and is what is implemented below.
5. Step-by-Step FBD Implementation in LOGO!Soft Comfort
Open LOGO!Soft Comfort, create a new project, select the base module (for example 6ED1052-1MD08-0BA1) and choose the FBD view. The complete network uses two SR flip-flops, three AND blocks, one OR, one Pulse Relay, two edge detectors, and two on-delay timers.
5.1 I/O Allocation
| Symbol | Address | Type | Description |
|---|---|---|---|
| I_estop | I1 | DI, NC contact | TRUE = E-stop released, FALSE = pressed |
| I_start | I2 | DI, NO momentary | Set Run-Enable (rising-edge evaluated) |
| I_reset | I3 | DI, NO momentary | Acknowledge / fault reset |
| I_fwd | I4 | DI, NO maintained | Forward command (selector or pushbutton) |
| I_rev | I5 | DI, NO maintained | Reverse command |
| I_ol | I6 | DI, NC | Motor overload relay (TRUE = healthy) |
| Q_fwd | Q1 | DO | A+ direction contactor |
| Q_rev | Q5 | DO (on expansion module) | A- direction contactor |
| M_run | M1 | Flag, retentive | Run-Enable latch |
| M_fault | M2 | Flag, retentive | Latched fault (E-stop, overload, or Q1∧Q5) |
5.2 Building the E-Stop and Overload Health Bar
Drop a 4-input AND block (Constants/Connectors → &:4) or two cascaded 2-input ANDs. Wire I1 (E-stop) and I6 (overload) to its inputs. The output B001 is high only when both permissive conditions are met. Reserve the remaining two inputs for a thermal cutout and a guard interlock so the function block does not have to be re-drawn later. Do not invert the inputs: the NC contact drives a TRUE when the safety chain is closed.
5.3 Run-Enable Latch (M1)
Insert an SR flip-flop from the Flip-flop folder. The S input is driven by the start pulse, the R input by any fault condition, and the output goes to flag M1.
S logic. Place a Pulse Relay (mode = rising-edge triggered, no off-delay) and wire I2 to its trigger input. The relay converts the momentary pushbutton to a one-shot high pulse, defeating contact bounce and the held-button case. AND the pulse output with NOT(M_fault) so a start cannot re-latch a fault that has not been acknowledged.
R logic. OR together M_fault, NOT(B001), and the conflict detector output. Use a 4-input OR (B004). When any of those goes high the latch drops and stays dropped until S is re-pulsed AND the fault has been acknowledged.
5.4 Fault Latch (M2)
The fault latch distinguishes "fault present" from "fault acknowledged". Use a second SR flip-flop. The S input is the OR of the rising edge of NOT(I1), the rising edge of NOT(I6), and the rising edge of (Q1 ∧ Q5). Wrap each in an Edge-Triggered block so a static low input does not continuously re-set the latch.
The R input is the rising edge of I3 (reset pushbutton). Edge evaluation guarantees that the operator must press reset to clear the fault; tying I3 high does not bypass the latch, which matches ISO 13850 §4.4.3 on manual reset.
5.5 Cross-Coupled Direction Permits
For A+ (Q1) use a 3-input AND. Inputs are M1 (enable), I4 (forward command), and NOT(Q5). For A- (Q5) mirror the logic with I5 (reverse command) and NOT(Q1). Connect the AND outputs to Q1 and Q5 respectively.
This is the "all signals to a Q" interrupt: the moment Q5 goes high, the NOT(Q5) input to the A+ AND goes low, the AND collapses, Q1 drops within one LOGO! scan. The same happens in the opposite direction. The cross-coupling is the program-level equivalent of the mechanical electrical interlock that lives between two contactors in a reversing starter.
5.6 Conflict Detector
Drop a 2-input AND with Q1 and Q5. Even though the cross-coupling should prevent both from being high, welded-contact or scan-order edge cases can still produce a one-scan conflict. Wire the AND output to the edge-triggered input of the fault-latch S. This latches the fault, the latch resets M1, and both contactors drop within one LOGO! cycle (basic unit default scan ≈ 50 ms; configurable down to ≈ 10 ms on the fast-scan basic units).
6. Alternative: Ladder Diagram View
LOGO!Soft Comfort can render the same network as a ladder diagram. Convert with View → LAD. The rung structure is:
Rung 1: | I1 ]--[ I6 ]-------------------------------( edge + TON -> B001 )
Rung 2: | I2 ]--[edge]--[ /M_fault ]----------------( S of M1 latch )
Rung 3: | M_fault ]--[ /I1 ]--[ /I6 ]--[ Q1∧Q5 ]----( R of M1 latch )
Rung 4: | /I1 ]--[edge]---/
+ | /I6 ]--[edge]---OR--( S of M2 fault latch )
+ | Q1 ]---[ Q5 ]---[edge]/
Rung 5: | I3 ]--[edge]-------------------------------( R of M2 fault latch )
Rung 6: | M1 ]--[ I4 ]--[ /Q5 ]----------------------( Q1 )
Rung 7: | M1 ]--[ I5 ]--[ /Q1 ]----------------------( Q5 )
LOGO!Soft Comfort evaluates rungs top-to-bottom each scan, so the order in which rungs 6 and 7 appear matters. Both Q1 and Q5 read back the output from the previous scan, so the cross-coupling is race-free even when both rungs are written in the same block. If the project uses the fast-scan setting, the maximum time between an unsafe combination forming and the program reacting is two scan cycles, well under the contactor dropout time of 20–30 ms.
7. Parameter Reference Table
| Block | Parameter | Value | Meaning |
|---|---|---|---|
| B001 (AND health) | Inputs | 4 | Use 2 of 4, keep headroom for thermal cutout and guard interlock |
| B002 (Pulse Relay) | Mode | Rising-edge, no off-delay | One-shot per start press |
| T1 (TON I1) | Delay | 30 ms | Debounce E-stop NC contact |
| T2 (TON I6) | Delay | 30 ms | Debounce overload NC contact |
| T3 (TON I2) | Delay | 100 ms | Suppress double-pulse of the start button |
| B003 (SR latch M1) | Retention | Enabled | Survives power cycle only if E-stop is released; document in the program comment |
| B004 (OR reset) | Inputs | 4 | Fault bus: M_fault, /B001, Q1∧Q5, spare |
| B005 (SR latch M2) | Retention | Enabled | Fault latches across power cycle |
| B006, B007, B008 (Edge) | Type | Rising | Detect loss of E-stop, loss of overload, conflict |
| B009 (Edge reset) | Type | Rising | Operator must press reset |
| B010 (AND conflict) | Inputs | 2 | Q1 ∧ Q5 detection |
| B011 (AND A+) | Inputs | 3 | M1 ∧ I4 ∧ ¬Q5 |
| B012 (AND A-) | Inputs | 3 | M1 ∧ I5 ∧ ¬Q1 |
8. Reset, Acknowledge, and Bounce Filtering
The E-stop pushbutton and the overload relay are both NC contacts that bounce for 5–20 ms on release. Insert a TON (on-delay) on I1 and I6 of 30–50 ms so the input is stable before the edge detector sees a transition. A 100 ms TON on the start input I2 prevents an over-eager operator from double-pulsing the start.
The reset pushbutton I3 must be edge-evaluated. If it is held high after a fault, the SR flip-flop would be permanently reset and the next fault would not latch. With a rising-edge trigger, the operator must release and re-press I3 to acknowledge a new fault, which matches ISO 13850 §4.4.3 on manual reset.
For retained flags (M1, M2) set the retention bit in the block properties. The retention only takes effect if the LOGO! has a battery option or the super-cap is charged. On a power cycle, M2 should power up in the latched state so the operator must re-acknowledge, not in the cleared state.
9. Verification and Commissioning
Commission the program in five deliberate steps, recording the result of each on a sign-off sheet.
- Simulation in LOGO!Soft Comfort. Press F5 to start the simulator. Force I1 = 0 and confirm Q1 and Q5 stay low. Force I2 = 1 momentarily and confirm M1 latches, but no Q energises without I4 or I5. Force I4 and I5 simultaneously and confirm Q1 and Q5 never go high together; the M2 fault latches and M1 drops within one scan.
- Online monitor with the real LOGO!. Connect via Ethernet, click Online → Start Online Test. The screen shows the live state of every input, output, flag and block. Verify the contactor pull-in and drop-out times visually with a voltmeter on the coil terminals.
- Hardware E-stop actuation. With outputs idle, press the real E-stop. K1 and K2 must drop within the contactor dropout time (typically 20–30 ms). The LOGO! input I1 must read 0, M2 must be latched, and Q1 and Q5 must remain 0.
- Reset sequence. Release the E-stop, observe I1 returns to 1. Press I3 once; M2 clears. Press I2; M1 latches. Press I4; Q1 energises within one scan. Release I4, press I5; Q5 energises only after Q1 drops.
- Conflict forcing. With a software override, briefly force Q1 and Q5 to energise in the same scan by tying I4 and I5 high at the same instant. The M2 fault must latch and both outputs must drop within one cycle. Document the recovery procedure.
The sign-off sheet should capture: firmware version (read from LOGO! → Tools → Diagnostics → Device Info), program name, hash of the .lsc file, and the date. Archive the file under version control so any later modification is traceable.
10. Troubleshooting Matrix
| Symptom | Probable Cause | Diagnostic | Correction |
|---|---|---|---|
| No Q1 or Q5 ever, even with I4 and I5 high | M1 never latched; M2 is latched from prior fault | Online monitor M1 and M2; check I3 reset button | Acknowledge with I3, then pulse I2 |
| Q1 and Q5 both drop together even though only one command is given | Cross-coupling NOT(Q5) or NOT(Q1) is inverted; wrong read-back polarity | Toggle I4 alone, watch I1..I5 and Q1/Q5 in monitor | Remove inadvertent NOT block on Q1/Q5 read-back |
| Outputs chatter, ~50 ms on / off | Bounce on I1 or I6; no TON debounce | Add an oscilloscope-style trend on I1 in LOGO!Soft Comfort | Insert 30 ms TON on I1 and I6 |
| Start press does nothing, M1 stays 0 | Pulse relay is off-edge instead of on-edge | Open B002, change trigger to rising edge | Re-compile and download |
| Reset button does not clear M2 | Reset is level-evaluated, M2 is re-set by the same input | Check B009 is rising-edge triggered, not level | Add a rising-edge block on I3 |
| Outputs work, then stop after power cycle | Retention not enabled, M1 was on when power dropped | Open M1 block, tick "Retentive" | Re-download, verify in Device Info |
| E-stop pressed but contactor does not drop | Wired as NO instead of NC, or E-stop is monitored only, not in the coil loop | Multimeter across E-stop contacts, 0 Ω when released | Re-wire to NC, move NC into the contactor coil circuit |
| Software E-stop trips, real contactors still energise | LOGO! output only drives a logic-level signal, not the coil | Check Q1 and Q5 ratings vs. contactor coil inrush | Insert interposing relay, or drive contactor coil directly via Q (if rated) |
| M2 latches immediately on first power-up | Edge detector misconfigured, latches on first scan | Put a one-shot pulse on the LOGO! power-up bit B25 (LOGO! 8) to clear edges at start | AND each edge-detector input with B25 inverted so the first cycle is suppressed |
| Program downloads but LOGO! stays in STOP | Program hash mismatch, user program empty, or expansion module address conflict | LOGO! → Tools → Diagnostics → Device Info, look for "User program: invalid" | Re-compile, re-download, check expansion module DIP switches |
11. Frequently Asked Questions
Is a software E-stop in a LOGO! enough for personnel protection?
No. ISO 13850 and IEC 60204-1 require the E-stop to be a hardwired, positive-opening device that breaks the contactor coil current directly. A LOGO! can supervise the chain and latch a fault, but it must not be the only barrier between a hazard and a person. For SIL/PL-rated applications, use a certified safety relay or a SIMATIC F-CPU.
Can I implement the A+/A- interlock without a separate fault latch?
Yes. Feed the Q1 ∧ Q5 AND directly into the Reset of the Run-Enable SR. The M1 latch drops on the first cycle the conflict is detected. Adding M2 lets you distinguish "running" from "tripped" and forces a manual reset, which ISO 13850 prefers and which gives the operator a single, deliberate recovery action.
Why read back the actual Q1 and Q5 instead of the requested I4 / I5?
Reading the request cannot detect a welded contact or a scan-order race. Reading the Q variable (or, better, a contactor auxiliary contact wired to a LOGO! input) closes the loop on the physical world. The cross-coupling then becomes self-correcting: a stuck Q5 immediately inhibits Q1 even if I4 stays high.
Which LOGO! firmware supports edge detection natively?
LOGO! 8.0 (FS:01) and later. The base module exposes the rising-edge and falling-edge blocks in the FBD library. Match LOGO!Soft Comfort V8.0 or later to the device firmware before downloading; an older editor will refuse the program or warn about unknown blocks.
How do I retain the fault flag across a power cycle?
Open the SR flip-flop block for M2 in the FBD editor and tick "Retentive" in the block properties. On a LOGO! 8 base module, retention requires the battery option; without a battery, the super-cap holds the value for roughly 2–3 days at 25 °C, which is usually enough for a school or bench project but not for unattended production.
What is the scan time, and does it affect the interlock?
The basic LOGO! 8 unit scans at roughly 50 ms by default; the fast-scan basic unit (for example 6ED1052-1HF08-0BAx) scans at about 10 ms. The cross-coupled AND guarantees the interlock resolves in at most one scan, so even the slow unit (50 ms) is well within the 20–30 ms dropout time of a standard contactor — the contactor will drop before the next scan ever runs.