Problem Description
On a SIMATIC S7-300 system, the CPU reports RUN, digital input module LEDs correctly track operator panel push buttons, but no digital output activates. This symptom points to a failure in the path between input image acquisition and output image write to the output module. The fault may be in the user program, the output module, the load voltage supply, the HMI interlock, or the field wiring.
System Overview: S7-300 I/O Path
The SIMATIC S7-300 modular controller uses a backplane bus to transfer the process image between the CPU and signal modules (SM). The digital input module SM321 writes the state of each input into the process-image input (PII) area at the start of OB1. The CPU executes the user program and updates the process-image output (PIQ). The SM322 digital output module then writes PIQ bits to the physical outputs. A break anywhere in this chain produces the reported symptom.
The S7-300 platform is part of the Siemens product lifecycle and is available until 2033. The product family page lists current catalog modules, firmware versions, and migration paths: SIMATIC S7-300.
The classic S7-300 reference architecture uses a 1:1 mapping between PII/PIQ and the physical I/O bytes. The CPU cycle is: read inputs (PII) → execute OB1 → write outputs (PIQ). An empty OB1 still performs the read and the write, so the path itself is rarely the issue, but the program logic that decides what to write to PIQ often is.
Symptoms Checklist
| Indicator | Expected When Healthy | Faulty State Observed |
|---|---|---|
| CPU RUN LED | Green, solid | Green (CPU reports RUN) |
| CPU SF LED | Off | May be lit if a diagnostic OB is missing |
| CPU FRCE LED | Off | Often lit if force table is active |
| Input module LEDs (SM321) | Track physical inputs | OK |
| Output module LEDs (SM322) | Track PIQ bits | All off, or SF on |
| Output module load supply L+/M | 24 VDC present | Often missing, reversed, or fused off |
| User program in CPU | OB1 plus logic blocks in work memory | May be empty, on MMC only, or wrong project |
| Diagnostic buffer | Clean | OB not loaded, I/O access error, module fault entries |
Root Cause Matrix
| # | Root Cause | How to Confirm | Fix |
|---|---|---|---|
| 1 | Force table active, PIQ forced to 0 | CPU FRCE LED on; force view shows entries | PLC > Clear Force; toggle mode selector |
| 2 | User program not actually loaded | Online > Module Information > Memory tab | Download blocks to target; save to MMC |
| 3 | OB1 missing from project | Diagnostic buffer: OB not loaded | Add OB1, download full program |
| 4 | OB82 (diagnostic interrupt) missing | Diagnostic buffer: OB82 not loaded | Insert OB82 with BE; download |
| 5 | HW Config mismatch (wrong slot for SM322) | Compare HW Config with physical rack | Correct HW Config and download |
| 6 | Output module load supply L+ missing | Measure 24 V at SM322 L+ terminal | Restore 24 V supply and fuse |
| 7 | Output module diagnostic trip (overload, wire break, short) | SF LED on SM322; diagnostic buffer entry | Resolve field fault; acknowledge via OB82 |
| 8 | Field wiring break or wrong common | Continuity test on M return; voltage on output terminal | Rewire per module wiring diagram |
| 9 | Interlock in user logic not satisfied (HMI fault bit) | VAT shows PIQ = 0 despite input = 1 | Resolve upstream interlock; ack on HMI |
| 10 | Reed switch / sensor fault latched, blocking downstream logic | HMI shows latched alarm; related PIQ = 0 | Fix sensor, clear fault bit, ack on HMI |
| 11 | CPU in restart pending after fault | Diagnostic buffer: restart pending | Manual warm restart via PG or mode selector |
| 12 | MMC corrupted or wrong firmware version | Diagnostic buffer: MMC fault / firmware update | Reformat MMC, reload firmware, reload project |
| 13 | CPU battery dead, RAM contents lost | BATF LED on; program missing after power cycle | Replace battery, reload from MMC |
| 14 | PIQ address in program does not match SM322 base address | HW Config base address vs symbol table | Correct addressing; recompile; download |
Diagnostic Procedure
Step 1 - Confirm CPU Operating Mode and Force State
Open STEP 7 (Classic) or TIA Portal with the project that matches the target PLC. Go online and check the CPU operator panel and the FRCE LED.
- Connect the PG/PC via MPI, PROFIBUS, or Ethernet to the CPU.
- In STEP 7: Online > Accessible Nodes > select the CPU.
- Open PLC > Module Information. The Operating Mode tab shows RUN, RUN-with-test, or STOP. The Force tab shows any active force values.
- If FRCE is on, note the affected addresses. The most common single cause of "no outputs" with all inputs working is a force table still holding PIQ bits at 0 from a previous commissioning session.
Step 2 - Clear the Force Table
- In STEP 7: Online > Force opens the force view.
- To clear all force values: PLC > Clear Force. The CPU briefly enters STOP during this operation. The FRCE LED should go off.
- Switch the CPU back to RUN via the mode selector (toggle to STOP then back to RUN) or PLC > Run from the menu.
- Confirm outputs now follow the program. If they do, the issue is resolved and you should disable or remove the original force entries before returning the line to production.
Step 3 - Read the Diagnostic Buffer
The diagnostic buffer is the single most useful diagnostic for an S7-300 fault. It records every mode change, OB failure, module insert/remove, and I/O access error in chronological order.
- Online > Accessible Nodes > select CPU > Module Information.
- Click the Diagnostic Buffer tab.
- Look for entries containing "OB not loaded", "STOP due to", "Module removed/inserted", "I/O access error", "Firmware update", or "MMC fault".
- Click an entry to see the detail and the affected OB or module address.
- Note the event timestamps. A repeated I/O access error against the same PIQ byte usually means a wiring or HW Config mismatch rather than a logic bug.
Step 4 - Verify OB1 Is Present and Running
If OB1 is missing, the S7-300 stays in STOP. If OB1 is present but OB82 (diagnostic interrupt OB) is missing, the CPU can go to STOP the first time the SM322 reports a fault such as wire break or overload. Default STEP 7 templates include both.
- In the STEP 7 project tree: CPU > Program Blocks.
- Confirm OB1 is listed. Open it online and watch the scan. If the timestamp on OB1 does not advance, OB1 is not running.
- Add OB82 (drag from Standard Library > System Blocks > OB82) and place a single
BEinstruction in it. Download to the CPU. - If OB1 is empty but present, the CPU will read inputs and write outputs unchanged. Outputs still follow the inputs, so an empty OB1 cannot explain the fault on its own.
Step 5 - Confirm Load Voltage on the Output Module
The SM322 has a separate load voltage connection (L+ and M) on the front connector. The backplane powers the module's logic, but the output transistors switch the load voltage. If L+ is missing, all outputs read 0 V at the terminal even when PIQ is 1.
- Bring the CPU to STOP.
- Pull the front connector from the SM322.
- Measure between L+ and M on the connector with a multimeter. You should see 24 VDC +/- 10%.
- If 0 V, trace the supply back through fuse, disconnect, and the 24 V PSU. S7-300 PSUs (for example, 6ES7 307-1EA01-0AA0, 5 A) commonly feed output modules through a fused 24 V distribution rail.
- Check the polarity. Reversed L+ and M on some SM322 variants can trigger a module fault and light the SF LED.
Step 6 - Monitor PIQ with a VAT
- In STEP 7: PLC > Monitor/Modify.
- Create a VAT with the PIQ addresses of the SM322 (for example,
QW 4andQW 5if the module is in slot 4). - Go online and watch the values. Toggle a known input and confirm the corresponding PIQ bit changes.
- If PIQ changes but the output module LED does not, the SM322 is the suspect - likely a defective output driver or a diagnostic shutdown on that channel.
- If PIQ does not change, the logic or interlock in the user program is the suspect.
Step 7 - Check for HMI / Reed Switch Interlock
A common pattern in this class of fault is a sensor fault written to an HMI tag, then read by the PLC, which uses it to inhibit outputs until the operator acknowledges the alarm on the HMI. The case described involves a reed switch that latches a fault on the HMI and prevents downstream clamp outputs.
- On the HMI (WinCC flexible, TIA Portal HMI, or third-party), open the alarm view or status page for the reed switch.
- Identify the PLC tag that holds the latched fault (for example,
DB10.DBX0.0named Reed_Fault). - In STEP 7 VAT, monitor that tag. If it stays at 1, the inhibit stays active.
- Use the cross-reference (Ctrl+Alt+F) on the tag to find every rung that uses it. The output coils you see inhibited will be gated by that bit, often through an AND or a SET/RESET chain.
- On the HMI, locate the ACK or Reset button. Verify that the button is wired to a write tag back to the PLC and that the PLC has a logic block to reset the fault bit on that signal's rising edge.
Step 8 - Inspect the Reed Switch Cable Run
A damaged cable from a reed switch to the junction box can cause intermittent contact, double pulses, or stuck-on / stuck-off states. The PLC input LED may show the contact closed, but the actual signal after debounce and the related process state may differ from what the HMI shows.
- With the process in a safe state, disconnect the reed switch at the junction box.
- Measure continuity end-to-end. A typical reed switch cable is 2-conductor shielded; check both conductors and the shield drain.
- Check insulation resistance to ground with a megohmmeter at 500 V - typical reading should be greater than 1 MOhm.
- Inspect the cable run for pinch points, abrasion, oil ingress, and connector corrosion. Reed switches are often mounted on moving guards or cylinders, so the flexing portion of the cable is the most likely failure point.
- Replace the cable if any reading is marginal. A flaky reed signal is also a safety issue, not just a process issue.
Step 9 - Check Output Module Diagnostics
SM322 modules with diagnostic capability (for example, 6ES7 322-1BH01-0AA0) report wire break and overload on a per-channel basis via diagnostic interrupt.
- The CPU diagnostic buffer will show "Diagnostic interrupt from SM322 in slot X".
- Open HW Config, right-click the SM322, Module Information > Diagnostics tab.
- Resolve the channel-level fault: wire break typically means an open load (broken wire, missing lamp), overload means a short or undersized wire, and short circuit means a direct short to M.
- Acknowledge the diagnostic with ACK in the diagnostic view or via the OB82 logic. On a healthy module the SF LED on the SM322 should go off and PIQ writes should resume.
Step 10 - Compare Hardware Configuration with Physical Rack
- Open HW Config in STEP 7.
- Compare each slot's module type and order number (for example, SM 322 DO 16 x 24 VDC / 0.5 A, 6ES7 322-1BH01-0AA0) with the label on the physical module.
- Confirm the starting address in HW Config matches the address the program uses. Address mismatches cause the CPU to either report an "I/O access error" in the diagnostic buffer or simply write to the wrong module.
- If you change HW Config (for example, swap an 8-channel SM322 for a 16-channel module), recompile the hardware and download it. A stale HW Config in the CPU is a common cause of intermittent I/O faults.
Reed Switch and HMI Interlock Deep Dive
The case described in the field involves a reed switch whose fault is latched on the HMI and inhibits outputs for related clamps. This is a typical safety-related interlock chain:
- The reed switch physical contact closure is read by an SM321 input.
- PLC logic detects that the contact state is inconsistent (for example, expected open but the input stays closed for more than X seconds).
- The PLC sets a fault bit in the process DB.
- The HMI polls or is notified by the PLC and displays the alarm.
- The operator presses ACK on the HMI, which writes a reset bit back to the PLC.
- The PLC clears the fault bit and re-enables downstream outputs.
If any link in this chain is broken - the sensor, the PLC logic, the HMI ACK write, or the cable from the reed switch to the junction box - the outputs stay inhibited. This is by design, but it confuses technicians who only see "inputs are on, outputs are off" without checking the fault DB.
Recommended diagnostic for this case:
- Force the suspect input via STEP 7 to verify the input wiring is sound.
- Monitor the fault DB word by word with a VAT while toggling the input.
- On the HMI, look for a Reset or Acknowledge button on the alarm and verify it is wired to a write tag to the PLC.
- Check the cable from the reed switch to the junction box with a continuity and insulation test. Replace if any reading is below spec.
- After clearing the fault, perform a function test of the affected clamps under safe conditions to confirm the inhibit chain has been released end-to-end.
Common S7-300 Output Modules Reference
| Order Number | Description | Channels | Rated Load Voltage | Per-Channel Current | Per-Channel Diagnostics |
|---|---|---|---|---|---|
| 6ES7 322-1BH01-0AA0 | SM 322 DO 16 x 24 VDC / 0.5 A | 16 | 24 VDC | 0.5 A | Yes (wire break, overload) |
| 6ES7 322-1BL00-0AA0 | SM 322 DO 32 x 24 VDC / 0.5 A | 32 | 24 VDC | 0.5 A | Yes |
| 6ES7 322-1BF01-0AB0 | SM 322 DO 8 x 24 VDC / 2 A | 8 | 24 VDC | 2 A | Yes |
| 6ES7 322-1HH01-0AA0 | SM 322 DO 16 x Relay, 230 VAC / 2 A | 16 | 24-230 V (relay) | 2 A | Limited |
| 6ES7 322-1FF01-0AA0 | SM 322 DO 8 x 230 VAC / 2 A Triac | 8 | 120/230 VAC | 2 A | Limited |
CPU Mode Selector Behavior
The S7-300 CPU mode selector has three positions: RUN, RUN-P, and STOP. RUN-P allows the PG/PC to write to the program (programming mode). RUN is "process" mode and blocks online writes. When the mode selector is in RUN-P and the program is downloaded, the new code takes effect on the next OB1 scan.
To recover from a fault that has latched outputs off:
- Toggle the mode selector to STOP.
- Wait at least 2 seconds.
- Toggle back to RUN (or RUN-P if you need to download).
- Confirm the RUN LED is solid green and the SF and BF LEDs are off.
- If the CPU does not stay in RUN, the diagnostic buffer will tell you which OB the CPU tried to call and failed. That OB is the one to add or fix.
Memory, Battery, and MMC Behavior
The S7-300 has three layers of program storage: the load memory (the Micro Memory Card / MMC), the work memory (RAM on the CPU), and the system memory (bit memories, timers, counters, PII, PIQ).
- The MMC is the persistent store. The user program on the MMC survives a power cycle.
- Work memory contents in RAM survive a power cycle only if the battery on the CPU is healthy (BATF LED off). On CPUs without a battery holder, the work memory is lost on power cycle and the program must be reloaded from the MMC.
- If the MMC is missing, unformatted, or has a firmware mismatch, the CPU may stay in STOP with a diagnostic buffer entry such as "MMC fault" or "Firmware update required".
On commissioning day, format the MMC in STEP 7 (PLC > MMC > Format) before downloading the project. A corrupted MMC is a frequent cause of intermittent STOP/RUN cycling.
STEP 7 Force Table Reference Commands
The following menu paths are useful when the force table is suspected:
| Action | STEP 7 Classic Path | Effect |
|---|---|---|
| Open force view | Online > Force | Shows active force entries |
| Clear all force values | PLC > Clear Force | CPU briefly enters STOP, FRCE LED off |
| Enable force from PG | PLC > Force > Enable | Authorizes the PG to write force values |
| Disable force | PLC > Force > Disable | Removes PG authority, does not clear values |
| Watch force in VAT | PLC > Monitor/Modify | Force values override the program values |
Verification
- The CPU diagnostic buffer shows no "OB not loaded", "I/O access error", or "Module fault" entries since the last restart.
- The FRCE LED on the CPU is off and the force table is empty.
- A VAT shows PIQ bits change in step with the corresponding PII bits.
- Output module LEDs track PIQ.
- Field-side load voltage (output terminal to M) equals the rated module voltage when the output is on.
- The HMI shows no active alarms related to the suspect input.
- All output channels are function-tested by toggling each input and verifying the physical actuator (valve, contactor, lamp) responds.
- The mode selector is returned to RUN (not RUN-P) before the line is handed back to operations, to prevent further online writes.
Preventive Measures
- Save the STEP 7 project to the MMC after every change. The S7-300 CPU loses RAM contents on a power cycle without a battery; the MMC is the persistent store.
- Disable or remove force entries after commissioning. Use the force table only for tests, never for production override.
- Wire the load supply L+/M through a fused disconnect so a downstream short does not bring down the whole output module.
- Use SM322 modules with diagnostic capability for any output that drives a safety-relevant function (clamp, gate, brake).
- Implement OB82 with a BE instruction so a transient diagnostic does not stop the CPU.
- Document the HMI ACK tag-to-PLC mapping in the project so that operators and technicians can locate it without reverse engineering the program.
- Add OB121 and OB122 with a BE to prevent CPU STOP on programming errors and I/O access errors during commissioning.
- Schedule periodic inspection of the reed switch cabling on moving parts, especially the flexing portion at the cylinder or guard.
FAQ
Why are my S7-300 inputs lighting the LEDs but no outputs turn on when the CPU is in RUN?
The most common causes are an active force table forcing outputs to 0 (FRCE LED on), a missing OB1 or OB82 so the CPU cannot complete the scan, an output module load supply (L+/M) that is missing or fused off, or a latched interlock in the user program (for example, a sensor fault bit written by the HMI). Read the diagnostic buffer and clear any force values first.
How do I clear force values on a Siemens S7-300 CPU?
Connect STEP 7 to the CPU online, open PLC > Clear Force, then toggle the mode selector to STOP and back to RUN. The FRCE LED on the CPU should go off. As an alternative, on most S7-300 CPUs you can also navigate the operator panel menu to "Clear Force" with the arrow keys and OK button.
How do I read the S7-300 diagnostic buffer?
In STEP 7 Classic, use Online > Accessible Nodes, select the CPU, then PLC > Module Information and open the Diagnostic Buffer tab. In TIA Portal, the equivalent is Online > Diagnostics > Diagnostic Buffer for the online CPU. The buffer lists mode changes, OB faults, I/O access errors, and module insert/remove events in chronological order with timestamps.
What is OB82 and why does it matter if outputs are not coming on?
OB82 is the diagnostic interrupt OB. If the SM322 reports a wire break, overload, or short circuit and OB82 is not present in the project, the CPU goes to STOP. With OB82 present (even if it contains only a BE instruction), the CPU stays in RUN and the diagnostic is recorded. Without it, a single channel-level fault on the output module can take down the whole CPU.
My HMI shows a persistent reed switch fault and downstream outputs are inhibited - how do I find the inhibiting logic?
Identify the HMI tag that represents the fault (for example, DB10.DBX0.0). In STEP 7, open the cross-reference (Ctrl+Alt+F) for that tag to find every location in the program that reads or writes it. The output coils you see inhibited will be gated by that bit, often through an AND or a SET/RESET chain. Acknowledge the alarm on the HMI and confirm the tag clears in the VAT before expecting outputs to return.
How do I confirm the load voltage (L+/M) on an SM322 is present without removing the module?
With the CPU in RUN and the SM322 front connector seated, measure DC voltage between the L+ and M terminals on the front connector using a multimeter on the 24 VDC range. A reading of 24 VDC +/- 10% indicates the load supply is good. If the reading is 0 V, the supply, fuse, or wiring is the fault, not the module itself.