Implementing E-Stop and A+/A- Interlock in Siemens LOGO! 8

David Krause15 min read
HMI ProgrammingSiemensTutorial / How-to
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

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).
A LOGO! is not a safety PLC. It does not hold SIL/PL ratings. A real personnel-protection E-stop must use hardwired, positive-opening contacts that drop the contactors directly. The LOGO! program can add operational interlocks, but it cannot be the single point of failure for a safety function.

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:

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!.

Use the LOGO! digital input to monitor the E-stop, not to break the contactor coil current. The E-stop NC contact goes to the contactor A1/A2 loop. The LOGO! input is wired in parallel with the coil loop, or to a mirror contact of the safety relay, for status only.

Typical wiring topology for a category 1 / PL c arrangement:

24 V DC PSU E-stop NC Contactor K1 Contactor K2 LOGO! I1 monitor M2 fault latch

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:

  1. Latch a Run-Enable flag with a Set/Reset flip-flop (SR in FBD).
  2. Drive the Set input from the start pushbutton edge plus the E-stop OK and an overload-free condition.
  3. Drive the Reset input from the E-stop, the overload, or a self-detected Q1 ∧ Q5 fault.
  4. Cross-couple the direction permits: A+ = Enable ∧ Fwd ∧ ¬A- running; A- = Enable ∧ Rev ∧ ¬A+ running.
  5. 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.

LOGO! 8 base modules without a battery lose retained data after a power-off exceeding the super-cap hold-up (typically 2–3 days at 25 °C). For a school project this is fine. For production, install a LOGO! battery module or migrate to a fail-safe controller such as a Sirius 3SK1 or a SIMATIC S7-1500F.

9. Verification and Commissioning

Commission the program in five deliberate steps, recording the result of each on a sign-off sheet.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

Back to blog