Troubleshooting F-I/O Passivation Alarms on S7-319F ET-200S

David Krause15 min read
Safety SystemsSiemensTroubleshooting
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

Problem Statement

A SIMATIC S7-300 CPU 319F-3PN/DP fail-safe controller is paired with an ET-200S PROFIBus DP slave carrying PROFIsafe I/O (4F-DO, 1-F RO relay, standard DI/DO and AI modules). The CPU diagnostic buffer fills with a four-second repeating sequence of F-I/O passivated, Module OK, and Distributed I/O Station Failures events, yet the ET-200S IM 151 interface module's BF (bus fault) LED never latches on. A safety-relevant digital input that should read logic 1 occasionally drops to 0, triggering memory bits that feed the F-application. Program patches that decouple the suspect input from the safety logic do not stop the diagnostic cascade, confirming the symptom is generated at the PROFIsafe transport layer rather than in the application logic.

This fault pattern is characteristic of a transient PROFIBus communication degradation that is severe enough to break the PROFIsafe watchdog, but not severe enough to keep the DP slave off the bus long enough for the master to declare a station failure. It also matches a documented F-CPU configuration corruption that occurs when STEP 7 V5.x is used to upload the hardware configuration from a fail-safe CPU and then download it back. Both mechanisms are detailed in the root cause analysis below.

Affected Hardware and System Topology

The reference installation uses the following components:

Component Order Number Role
S7-300 CPU 319F-3 PN/DP 6ES7318-3FL01-0AB0 F-master, PROFIBus DP master, PROFINET IO controller
ET-200S IM 151-1 HIGH FEATURE 6ES7151-1BA02-0AB0 PROFIBus DP slave interface module
PM-E 24 V DC power module 6ES7138-4CA01-0AA0 ET-200S power module
4F-DO 24 V DC PROFIsafe 6ES7138-4FB02-0AB0 Fail-safe digital output, 4 channels
1 F-RO 24 V DC 6ES7132-4HB01-0AB0 Fail-safe relay output
2 DI 24 V DC Standard 6ES7131-4BB01-0AA0 Standard digital input module
2 AI U Standard 6ES7134-4FB01-0AB0 Standard analog input module

Refer to the SIMATIC S7-300 CPU 319F-3 PN/DP Manual and the ET 200S Distributed I/O System Manual for module pin-out, base unit selection, and PROFIsafe address assignment rules. The safety program is compiled with S7 Distributed Safety V5.4 SP5 or later; the F-signature must be re-issued after any HW Config change. Hardware configuration is performed in STEP 7 V5.6 with the optional S7 F ConfigurationPack.

Decoding the Diagnostic Buffer Sequence

The diagnostic buffer shows the following events fired within roughly four seconds:

Time Event Interpretation
6:54:37.280 Module OK IM 151 reports healthy state to the DP master
6:54:37.300 Distributed I/Os station return DP slave has re-entered data exchange after a brief drop
6:54:37.314 Module problem or maintenance necessary Channel diagnostic pending, often a wire-break or overload on a single channel
6:54:37.333 F-I/O passivated F-CPU has invalidated PROFIsafe data; outputs drop to safe state (0)
6:54:37.482 Module OK IM 151 again reports healthy state
6:54:37.615 Distributed I/O Station Failures DP master logged a station failure on this PROFIBus address
6:54:41.833 F-I/O depassivated F-CPU restored the F-I/O to active operation after a successful watchdog cycle

The pairing of Station Failures with Module OK on either side is the diagnostic signature of a slave that drops off the bus and returns within one DP cycle. The PROFIsafe F_WD_Time must therefore be set shorter than the worst-case recovery time, or the safety layer will passivate the I/O even though the DP layer believes the slave is healthy.

Note the four-second period from passivated to depassivated: this matches the default STEP 7 F_WD_Time of 4000 ms for the 4F-DO when installed with the S7 Distributed Safety library defaults. If the actual DP cycle time is longer than 1.5 seconds (which is common when the master is also running PROFINET and the DP cycle is interleaved), passivation events will recur on every cycle regardless of the physical layer health.

Root Cause Analysis

Cause 1: Safety HW Upload and Download Pitfall

The single most common cause of this exact symptom pattern on an F-CPU is the STEP 7 sequence PLC > Upload to PG followed by PLC > Download on the hardware configuration. STEP 7 regenerates the F-parameters when it re-emits the HW Config, and the regenerated F_iPar_CRC almost always differs from the CRC stored in the offline project. The F-CPU compares the live CRC of every F-slave against the CRC compiled into the safety program; a mismatch triggers an immediate passivation of all F-I/O at that station and records an F-I/O passivated event with cause code W#16#39C4. The passivation cannot be cleared by operator action; only a fresh download of the safety program from the original (uncorrupted) project will restore the F-I/O.

This is the documented behaviour of the S7 Distributed Safety configuration tool: F-parameters are an integral part of the safety signature and are not designed to be round-tripped through PG upload. Always keep an offline project archive and never use upload as a backup method. See the S7 Distributed Safety, Configuring and Programming Manual, section on F-parameter consistency.

Cause 2: PROFIBus Physical Layer Degradation

The BF LED on the IM 151 will only latch when the master declares a station failure, which by default requires three consecutive failed request/response cycles (see Cause 4). A marginal PROFIBus segment can produce one or two failed telegrams per minute without ever tripping that threshold. Each failed telegram breaks the PROFIsafe CRC sequence and pushes the F-WD counter one step toward passivation. Common physical-layer defects:

  • Termination resistors left ON at intermediate nodes instead of only the two physical end nodes. Termination is 220 ohm across pins A (pin 3) and B (pin 8) on the PROFIBus connector, with a 390 ohm pull-up to +5 V on pin 3 and pull-down to GND on pin 8.
  • Shield not bonded to cabinet ground at the cable entry, producing common-mode noise that the IM 151 interprets as a corrupted frame.
  • PROFIBus connector with a broken insulation-displacement contact; the cable still conducts DC but the characteristic impedance is disturbed.
  • Total cable length exceeding the baud-rate limit (see Cause 3).
  • Missing or reversed bus terminator on a multi-drop segment where a node was added or removed.

Cause 3: PROFIBus Baud Rate Selection

STEP 7 installs 12 Mbps as the default DP baud rate for new projects. 12 Mbps is intolerant of any cable quality deviation and should only be used on short segments with high-quality PROFIBus cable. The ET-200S manual specifies the following maximum segment lengths:

Baud Rate Max Segment Length (Type A cable) Recommended Use
9.6 to 187.5 kbps 1000 m Very long runs, noisy environments
500 kbps 400 m Long runs with good cable
1.5 Mbps 200 m Default for industrial cells
3 Mbps 100 m Short high-speed segments
6 Mbps 100 m Reserved for fast I/O
12 Mbps 100 m Only with premium cable and short runs

For a mixed segment containing the IM 151-1 HIGH FEATURE, 4F-DO, 1-F RO, and standard DI/AI, 1.5 Mbps is the recommended operating point. If the cable run from the CPU 319F-3PN/DP to the ET-200S exceeds 100 m, drop to 500 kbps. The diagnostic burst in the original report happened at 12 Mbps and stopped recurring after the baud rate was forced down to 1.5 Mbps.

Cause 4: Retry Counter and Station Failure Threshold

The CPU 319F acts as a DP class 1 master. The number of retries the master allows before declaring a slave failed is configured per slave in HW Config under DP Slave Properties > Operating Mode. The STEP 7 default is 2 retries, meaning the master will tolerate two failed request/response cycles before it logs Distributed I/O Station Failures. The transient in the report was failing one cycle at a time, which is below the station-failure threshold but above the PROFIsafe threshold. The relationship is:

Station_failure_declared = (Failed_telegrams > Retry_count) F_WD_passivation = (Consecutive_bad_PROFIsafe_frames > F_WD_Time / DP_cycle_time)

If the DP cycle is 10 ms and the F_WD_Time is 4000 ms, the F-CPU will passivate after 400 consecutive bad PROFIsafe frames, while the master will only declare a station failure after 3 consecutive bad DP telegrams. A noise event lasting 30 to 50 ms triggers passivation without triggering a station failure, which exactly matches the symptom.

Cause 5: Sporadic Input Dropout

The reported input that occasionally drops from 1 to 0 is consistent with two separate root causes:

  1. Sensor or wiring fault: an intermittent break in the field wiring, a failing sensor, or a 24 V supply droop on the input module base unit. This will appear as a brief channel diagnostic and may also trip the input module's Module problem or maintenance necessary event in the buffer.
  2. PROFIsafe passivation echo: when the F-CPU passivates the F-DI, the F-application code sees the safe-state value (0) on that input even though the underlying sensor is still high. This is correct behaviour by design, but if the F-application has not been written to recognise the F_PERIPH_OK flag, the application will act on the 0 value as if it were real.

The user's attempt to deselect the input in the safety program did not stop the buffer events because the cause is at the F-I/O driver layer, not in the F-application. Modifying the F-application cannot recover from a transport-layer passivation.

Step-by-Step Diagnostic Procedure

Follow this sequence before touching the HW Config or the safety program. Each step produces evidence that narrows the root cause.

  1. Capture the full diagnostic buffer. In STEP 7 V5.x, open the project online, select the CPU, and choose PLC > Module Information > Diagnostic Buffer. Click Save As to export the buffer as text for archival. Look for events with W#16#39xx, W#16#35xx, and W#16#38xx IDs; these are F-I/O, DP diagnostics, and module faults respectively.
  2. Compare offline and online System Data. In HW Config, select the CPU and choose Station > Compare Offline/Online. Any difference in the PROFIsafe parameters (F_source_address, F_dest_address, F_WD_Time, F_iPar_CRC) confirms the configuration drift described in Cause 1. The compare tool will flag the F-parameter blocks specifically.
  3. Check the F-periphery DB. The S7 Distributed Safety library writes the passivation count and the F_PERIPH_OK status to the F-I/O DB. Cross-reference the DB timestamp with the diagnostic buffer timestamp to confirm passivation events are coming from the live PROFIsafe driver and not from the application.
  4. Inspect PROFIBus bus statistics. In HW Config, right-click the DP master system and select DP Master System > Bus Statistics (requires STEP 7 V5.5 SP4 or later). Look at the Error Counters and Retry Counters per slave. A non-zero retry counter with zero station failures is the exact signature of Cause 2/4.
  5. Verify termination. Power down the segment. Disconnect the PROFIBus connector from the IM 151. Measure between pin 3 (B) and pin 8 (A) on the connector with a multimeter: should read 220 ohm if the connector's termination switch is ON, and infinite if OFF. Repeat at every node on the segment. Exactly two nodes should read 220 ohm; these are the physical ends.
  6. Verify baud rate. In HW Config, double-click the DP master system and confirm the Network Settings tab. Lock the value to 1.5 Mbps even if STEP 7 suggested 12 Mbps. A change in baud rate requires the CPU to be stopped, the HW Config re-downloaded, and all DP slaves to be re-parameterised.
  7. Capture PROFIBus traffic. If a PROFIBus analyser is available (Softing PB-T3, Inatech, or Siemens BT200), tap the segment near the IM 151 and capture for at least 10 minutes. Look for repeating CRC errors, retransmission requests, and any idle-time violations.
  8. Check the suspect sensor input. With the CPU in STOP, monitor the input channel in HW Config Monitor/Modify. Apply a known-good 24 V signal and observe whether the channel stays at 1. If it drops, the field wiring is the fault. If it stays, the application-level observation was a PROFIsafe passivation echo.

Corrective Actions

Apply fixes in this order. Stop the CPU before each download.

  1. Restore the master offline project. If HW Config was uploaded and re-downloaded, restore the project from the offline archive. Do not use the uploaded version. Re-compile the safety program in S7 Distributed Safety to refresh the F-signature, then download HW Config, then download the safety program, then perform a CPU restart (warm restart). Verify the F-signature in the safety printout matches the offline project.
  2. Correct PROFIBus termination. Enable the termination resistor only at the two physical end nodes. Disable it at every intermediate node. Verify shield bonding at the cabinet entry of every node.
  3. Lock baud rate to 1.5 Mbps. In HW Config, set the DP master system network settings to 1.5 Mbps, save the project, download to the CPU. Power-cycle the IM 151 so it re-detects the baud rate.
  4. Add diagnostic OBs. Ensure OB82 (diagnostic interrupt), OB85 (program execution error), and OB86 (rack failure) are present in the project. Without these OBs, the CPU will go to STOP on the first diagnostic event and the buffer sequence becomes impossible to interpret.
  5. Increase F_WD_Time if justified. The default 4000 ms F_WD_Time is conservative. If the DP cycle time is long or the segment is noisy, raise F_WD_Time to a value at least three times the worst-case DP cycle time. The trade-off is longer safety reaction time; verify the change does not violate the process safety time requirement documented in the safety requirement specification.
  6. Do not jumper the suspect input. Hard-jumpering 24 V to an F-DI masks the safety function and may trigger additional diagnostics because the F-CPU will detect a static-on input that the F-application expects to cycle as part of the safety function. Use a signal generator that respects the sensor's normal cycling pattern.
  7. Replace suspect connectors and cable. If termination and baud rate fixes do not stop the retry counter, replace the PROFIBus connectors on the affected segment, then the trunk cable itself.

Verification Protocol

  1. Clear the diagnostic buffer with PLC > Clear Diagnostic Buffer.
  2. Run the process under normal load for a minimum of one hour with the F-application active.
  3. Open the diagnostic buffer again and confirm no Distributed I/O Station Failures events were recorded.
  4. Open the F-I/O DB and confirm F_PERIPH_OK = TRUE continuously and the passivation counter did not increment.
  5. Run the safety acceptance test as defined in the safety requirement specification. Verify all safety functions respond within the documented reaction time.
  6. Sign and date the safety acceptance test report. Archive the test report alongside the safety printout and the diagnostic buffer export.
  7. Update the maintenance log with the baud rate, termination settings, and the date the original offline project was restored.

Prevention and Best Practices

  • Never use Upload HW on an F-CPU. Use the STEP 7 project archive function (File > Archive) for backups. An upload round-trip on an F-CPU will silently corrupt the PROFIsafe CRC.
  • Maintain an offline master copy. Store the master project on a read-only network share with version control. Every safety program change must start from this master.
  • Lock the baud rate explicitly. Do not rely on the STEP 7 default. Set 1.5 Mbps explicitly in HW Config and document the setting in the project header.
  • Configure F_WD_Time from process data, not from defaults. Calculate: F_WD_Time = 3 * (Worst_case_DP_cycle_time + PROFIsafe_processing_time). The worst-case DP cycle is the configured cycle multiplied by the master load factor, which includes all other slaves and PROFINET interleaving.
  • Install diagnostic OBs in every project. A safety PLC without OB82, OB85, and OB86 will fault on the first transient. The OBs are free diagnostic capacity; never delete them.
  • Schedule PROFIBus health checks. Read the bus statistics from HW Config at every preventive maintenance interval. A rising retry counter is an early warning before passivation events start.
  • Document the safety signature in the project. Print the F-signature at every safety program change and store the printout with the project's revision history.
Safety notice: Modifying F-parameters, F_WD_Time, or the F-signature constitutes a safety-relevant change. The change must be approved by the safety engineer of record and verified by an independent acceptance test before the system is returned to production.

Frequently Asked Questions

What causes F-I/O to passivate without the BF LED lighting on the ET-200S?

The PROFIsafe safety layer passivates F-I/O after a number of consecutive bad CRC frames equal to F_WD_Time / DP_cycle_time. The DP master only declares a station failure after the configured retry count is exhausted (default 2, so 3 failed cycles). A marginal PROFIBus segment can fail enough cycles to break PROFIsafe while still staying below the station-failure threshold, so the BF LED never latches. This is the exact symptom of a transient noise event on the bus.

Can I jumper 24 V directly to an F-DI input for testing?

No. Hard-jumpering a safety input bypasses the field sensor and defeats the safety function. It also produces a static-on input that may be flagged as a discrepancy error by the F-application if the function is designed with discrepancy monitoring. Use a signal generator that mimics the sensor's normal cycling pattern, and document the test bypass in the safety acceptance test report.

Why does uploading and re-downloading HW Config break an F-CPU?

STEP 7 recalculates PROFIsafe parameters when re-emitting the hardware configuration, which produces a different F_iPar_CRC than the offline project. The CPU compares the live CRC against the CRC compiled into the safety program; a mismatch triggers an immediate passivation of all F-I/O at the affected station and logs event W#16#39C4. The only fix is a full safety program download from the original offline project.

What is the correct PROFIBus baud rate for an ET-200S segment?

1.5 Mbps is recommended for any segment with mixed cable quality or a total length over 50 m. 12 Mbps is the STEP 7 default but requires high-quality PROFIBus cable and a total run under 100 m. 500 kbps is recommended for very long or noisy segments. The maximum segment lengths are 1000 m at 9.6 to 187.5 kbps, 400 m at 500 kbps, 200 m at 1.5 Mbps, and 100 m at 3 to 12 Mbps.

How do I read the diagnostic buffer on an S7-300 F-CPU?

In STEP 7 V5.x, connect online to the CPU, then choose PLC > Module Information and select the Diagnostic Buffer tab. Events are listed in reverse chronological order. Export the buffer with Save As to archive the events. F-I/O passivation events use event IDs in the W#16#39xx range, DP diagnostics use W#16#35xx, and module faults use W#16#38xx.

How do I compare offline and online System Data to find a configuration drift?

In HW Config, select the CPU and choose Station > Compare Offline/Online. STEP 7 displays each System Data block and flags differences in red. Focus on the PROFIsafe parameter blocks (F_source_address, F_dest_address, F_WD_Time, F_iPar_CRC). Any difference in these blocks confirms the configuration has drifted and the F-CPU will continue to passivate the affected F-I/O until the original offline project is restored.

Back to blog