S7-414FH Safety Program Download: Resolving F-Module SF Faults After Upload/Download Round-Trip
1. Problem Summary
On a Simatic S7-414FH system (CPU 417-4H or 414-4H in F-mode paired with S7 F Systems), an upload of the runtime program from the F-CPU to the engineering workstation (EWS) followed by a download of that same uploaded program back to the same CPU forces every ET 200M failsafe module (SM 326F DI/DO, SM 336F AI) into SF (Safety Fault / passivated) mode. The standard S7-400H program portion continues to run, but the F runtime group shuts down and all F channels report passivation with diagnostic LED SF on the module and the F-CPU. Crucially, downloading the original offline backup (the project archive on the EWS) returns the system to full operation immediately. The fault is therefore not in the I/O wiring, the PROFIBUS DP/PA topology, or the ET 200M IM 153-2 redundant interface, but in the F-block container that the upload/download cycle returns to the F-CPU. The conditions where the fault appears are: - F-CPU mode: S7-414FH (Failsafe + Fault-Tolerant) running S7 F Systems V6.1 - Programming environment: STEP 7 Professional V5.4 SP6 + S7 F Systems V6.1 + CFC V7.0 - Storage medium: EPROM (not RAM) for the F-blocks - Operation: Upload from CPU to PG, then download same online blocks back to the same CPU The conditions where the fault does NOT appear: - Downloading the original offline backup - Cold restart / warm restart with the original project - Online delta download of compiled F-blocks using the F-password2. Affected System Configuration
| Component | Identified Part / Version | Role in Fault |
|---|---|---|
| CPU | CPU 414-4H (6ES7 414-4HJ04-0AB0) in F-mode | F-CPU; stores F-signature and F-blocks |
| Firmware | CPU 414-4H V4.x or higher (F-capable) | Enforces F-signature compare at startup |
| STEP 7 | SIMATIC STEP 7 Professional V5.4 SP6 + S7 F Systems V6.1 + CFC V7.0 | Editor, F-compiler, F-library container |
| Load memory | MMC (Flash) or EPROM card on CPU | Persists F-blocks; affects F-signature generation path |
| F-I/O | ET 200M with SM 326F DI/DO, SM 336F AI, IM 153-2 | Receives passivation on F-signature mismatch |
| F-runtime group | OB 35 (default) with F-FB / F-DB generated by S7 F Systems | Generates the F-signature for the running program |
| Standard program | Same CFC V7.0 charts, non-safety blocks | Continues to run; not the source of the SF |
3. Root Cause: F-Block Signature and F-CPU Password Mismatch
The F-CPU maintains a calculated F-signature (a 32-bit CRC) over every safety-related block in the runtime program. This signature is computed at F-compile time, written into the offline block container, and re-verified on every restart. The F-CPU also holds an internal copy of the active F-signature in its retentive/system data area. When you upload a running F program from the F-CPU, the PG receives the runtime blocks as they exist in the F-CPU's work memory. These are not bit-for-bit identical to the offline blocks in the project. The differences are:- Runtime F-DBs (instance data blocks) have been expanded and re-initialized by the F-runtime group, so their initial values, comments, and network attributes differ from the compiled offline copy.
- F-CPU password protection metadata is stripped or replaced during upload because the password cannot be transmitted to a non-authenticated PG.
- F-signature fields in the block headers are normalized to runtime values (the offline F-signature lives in the system data, not the block header) and any auxiliary F-CRC bytes inserted by the F-compiler are removed.
- F-CPU-specific security flags (F-protection mode, F-CPU password hash) are removed from the uploaded blocks.
- F-signature mismatch: The F-CPU computes the F-signature of the downloaded blocks and compares it to the stored F-signature in its system data. The downloaded blocks do not match the offline project, so the F-CPU sees a new F-signature. The F-CPU then refuses to start the F-runtime group and passivates every F channel.
- F-CPU password not present: F-CPU mode in S7 F Systems V6.1 requires that the F-CPU password be set in the offline project before a download is permitted. The uploaded blocks do not carry this password, so the F-CPU enters "F-CPU password not assigned" state and refuses F-mode startup.
4. Diagnostic Buffer Evaluation
After the failed download, open the diagnostic buffer of the F-CPU (CPU > Diagnostic Buffer in STEP 7) and filter for safety-related events. The events that confirm the F-signature mismatch and password issue are:| Event ID (Hex) | Event Text | Meaning |
|---|---|---|
| 0x75D1 | F-signature comparison: F-signature of the loaded F-program differs from the stored F-signature | Confirms the F-CPU recognized the program as a different F-program than the one originally loaded |
| 0x75D2 | F-CPU password not assigned / F-CPU in unprotected state | Confirms the F-password was not transferred with the download |
| 0x75D3 | F-runtime group not started: F-signature error | Confirms the F-OB did not start, which is why all F-channels passivated |
| 0x39xx / 0x38xx | Module failure / channel passivated on F-SM 326 / SM 336 | Side-effect; not the root cause but appears for every F-channel |
5. F-Block Signature Mismatch Mechanism
The F-signature in S7 F Systems is not a single block CRC. It is a global F-signature calculated across the entire F-program container in this order:- All F-FBs (function blocks with safety logic).
- All F-FCs (safety functions called from F-FBs).
- All F-DBs (instance and global F-data blocks).
- The F-runtime group OB (typically F-OB 35 by default) and its F-shells.
- The F-shared DB references and the F-IO DB mapping.
- Re-editing a CFC chart that contains F-blocks and re-compiling.
- Switching to a different F-library version (F-lib V1.x to V2.x migration, for instance).
- Re-saving an F-DB in STEP 7 without F-compilation.
- Online upload of the blocks and subsequent download without F-compilation.
6. Step-by-Step Recovery Procedure
Use this sequence to bring the F-CPU back to a clean state. Do not attempt the failed download again until the offline project is confirmed F-consistent.6.1 Capture the F-CPU diagnostic state
- Connect the EWS to the F-CPU via Ethernet (PROFINET or Industrial Ethernet of the plant network) and establish an online connection to the F-CPU in STEP 7 V5.4 SP6.
- Open
CPU > Diagnostic Bufferand save the buffer to a text file for the maintenance log. - Open
CPU > Module Information > F-Parameters(visible only in S7 F Systems V6.1) and note the currently stored F-signature. - Open
PLC > F-CPU Passwordand record whether a password is set. If the field is empty, the F-CPU has no password assigned.
6.2 Place all F-channels in maintenance bypass
Before the F-program is reloaded, all F-channels must be operationally bypassed by the upstream safety relay or hardwired logic (e.g. emergency stop maintained, valve outputs isolated). This is mandatory because the F-runtime group will be off-line for several minutes.6.3 Re-F-compile the offline project
- Open the offline project on the EWS. Verify it is the original backup, not the uploaded copy.
- Open the S7 F Systems configuration editor (
Options > F-Systems Configuration). - Select
F-Compile > Check Consistency. Resolve every error in the message window. - Select
F-Compile > Compile All F-Blocks. The F-compiler regenerates all F-shells, the F-runtime group OB, the F-IO DB, and recomputes the F-signature. - Save the project. The S7 F Systems status bar should show "F-program consistent" and a green check.
6.4 Re-assign the F-CPU password
- Open
PLC > F-CPU Password. - Enter the original F-CPU password that was assigned when the system was first commissioned. If the password is unknown, the F-CPU must be reset to factory defaults (requires the original Siemens support password recovery procedure, which requires proof of ownership).
- Confirm the password assignment. The F-CPU online view will now show "F-CPU password assigned".
6.5 Download the offline program to the F-CPU
- In the offline project, select
PLC > Download to Target System. - STEP 7 will prompt for the F-CPU password. Enter it.
- Select the entire program (blocks and system data) for download.
- Confirm the download. The F-CPU will perform a full restart and validate the F-signature against the freshly compiled blocks.
6.6 Verify the F-runtime group startup
- After the F-CPU completes restart, the diagnostic buffer should show
0x75D4 F-runtime group started, F-signature OK(or equivalent "F-signature valid" event). - Open
CPU > Module Information > F-Parametersand confirm the F-signature matches the one shown in the offline project underOptions > F-Systems Configuration > F-Signature. - Open the CFC runtime view for the F-charts and confirm the F-runtime group is green and running.
- Run a manual passivation/integration test on a single F-channel to confirm F-mode is fully operational.
7. Proper Upload/Download Workflow for F-Programs
The general rule for S7 F Systems is: an upload is never a substitute for a project archive. If a remote upload is part of the client's standard operating procedure (for change control, version tracking, or cyber-security reasons), the workflow must be wrapped as follows:7.1 Upload-only step (for archive / documentation)
- Connect to the F-CPU and upload blocks to the EWS.
- Save the uploaded project under a clearly named directory (for example,
ProjectArchive_YYYYMMDD_HHMMSS). - Do NOT use this uploaded project for download. Treat it as a read-only forensic copy.
7.2 Re-download requires the offline project
- The authorized engineer opens the original offline project, not the upload.
- If changes are required, edit the offline project, F-compile, then download.
- After download, the F-CPU accepts the program because the F-signature was generated by the F-compiler under the F-password.
7.3 Why a round-trip is not equivalent
The F-compiler is the only authorized process that produces a valid F-program container for the F-CPU. An upload returns runtime blocks; a download expects offline F-compiled blocks. The two sets are not interchangeable. The S7 F Systems manual is explicit on this point and the F-CPU firmware refuses to start the F-runtime group if the F-signature does not match.8. EPROM vs RAM Considerations
The system uses EPROM (MMC) for load memory. This adds two extra constraints that compound the signature issue.8.1 EPROM (MMC) and F-blocks
On S7-400H, F-blocks can be stored on the Flash MMC, but the F-signature is stored in the F-CPU's system data area, not on the card. When the MMC is exchanged, the F-CPU retains the previously stored F-signature and compares it against the program on the new MMC at startup. A round-trip upload/download without F-compilation changes the program on the MMC in a way the F-CPU does not recognize as the original F-program.8.2 EPROM erase and rewrite
If the EPROM is write-protected or in EPROM mode (read-only after initial programming), a download to the F-CPU from the EWS will fail at the write step. The F-CPU will report0x75D0 F-program cannot be written to load memory or similar. Switch the MMC to RAM-compatible (writable) mode before attempting the download. After the download, you can re-burn the EPROM from the now-correct RAM image using the STEP 7 PLC > Copy RAM to ROM function with the F-CPU password active.
8.3 The interaction with the round-trip
In the failing scenario, the upload likely read runtime blocks from the F-CPU's work memory (RAM) and presented them to the EWS as if they were offline blocks. The download then wrote these runtime blocks back to the MMC, overwriting the original F-compiled image. On restart, the F-CPU found a program whose F-signature did not match the previously stored F-signature in system data, hence the 0x75D1 event. This is also whyCopy RAM to ROM should never be used on a F-CPU that is in a transient or failed F-state; always bring the offline project back to a known good state and F-compile before re-burning the MMC.
9. CFC-Specific F-Compilation Behavior
CFC V7.0 compiles charts into FB/FC/DB block containers. When the chart contains F-blocks (F-CPU, F-channel driver, F-runtime group driver, F-shells), the CFC compiler delegates the F-related portion to the S7 F Systems F-compiler. The S7 F Systems F-compiler inserts additional code that the standard STEP 7 compiler does not see.9.1 Two-stage compilation
- CFC compiles the chart into standard FBs/FCs/DBs.
- S7 F Systems F-compiles the same set plus inserts F-shells, F-CRC padding, and the F-signature generator.
9.2 What is and is not preserved in the upload
| Block component | Preserved in upload? | Re-generated by F-compile? |
|---|---|---|
| F-runtime group OB code | Yes (runtime form) | Yes (offline form has F-shells) |
| F-shells | Partially | Yes, on F-Compile |
| F-CRC padding | No | Yes |
| F-IO DB cross-references | Yes (runtime form) | Yes (offline form has additional safety fields) |
| F-signature value | Recomputed by F-CPU on download | Computed and stored in offline project on F-Compile |
| F-CPU password hash | Stripped | Re-derived when password is set in offline project |
9.3 The recommended CFC + F workflow
- Edit the CFC chart.
- Compile the chart (CFC menu:
Chart > Compile > Charts). - F-compile the F-program (
Options > F-Systems Configuration > F-Compile All). - Check F-consistency (
F-Compile > Check Consistency). - Download to the F-CPU with the F-password.
10. S7-414H vs S7-414FH: Why the FH System Behaves Differently
In the original report, the standard S7-400H program uses CFC and the round-trip upload/download works. The S7-414FH program uses CFC and the same round-trip fails. The difference is the F-mode in the FH firmware.| Aspect | S7-414H (standard H) | S7-414FH (F-capable H) |
|---|---|---|
| F-mode | Disabled | Enabled; firmware enforces F-signature check |
| F-runtime group | None | Mandatory, started by F-OB in F-runtime environment |
| F-CPU password | Not required | Required before any F-block download |
| Upload of standard program | Round-trip safe (CFC blocks are uploaded and downloaded without F-signature concerns) | Standard blocks round-trip safe; F-blocks do not round-trip safe |
| F-signature enforcement | None | Enforced at every restart, on every MMC change, on every download |
11. Verification and Commissioning Checks
After the recovery procedure, run a structured verification pass before returning the system to the client.11.1 F-signature verification
- Open
Options > F-Systems Configuration > F-Signaturein the offline project. Note the signature value. - Open the F-CPU online and view
CPU > Module Information > F-Parameters. Confirm the online F-signature equals the offline F-signature. - If they differ, do not start production. Re-F-compile and re-download.
11.2 F-channel passivation/integration test
- Force-passivate a single F-DI channel from the CFC chart (or via the standard F-test mode in the F-channel driver block).
- Confirm the F-channel LED reports passivation (SF on the module, channel passivated in the module information).
- Re-integrate the channel and confirm the F-runtime group accepts the channel back without diagnostic events.
- Repeat for one F-DO and one F-AI channel.
11.3 F-OB and F-runtime group status
- Open the CFC online view of the F-charts.
- Confirm the F-runtime group is running (status green, F-OB 35 cycle time within expected range).
- Confirm no F-block has a quality flag of "invalid" or "substituted".
11.4 F-CPU password persistence
- Cycle power to the F-CPU.
- Confirm the F-CPU retains the F-password assignment (the password is stored in retentive system data).
- Confirm the F-runtime group restarts automatically and the F-signature verification passes.
11.5 Audit trail
- Document the F-signature before and after the operation.
- Document the F-CPU password change (if any) and the authorized engineer.
- Document the diagnostic buffer events captured during the failed upload/download cycle, for the change-control record.
12. Frequently Asked Questions
Why does uploading and downloading the same F-program break an S7-414FH, while a standard S7-414H survives the round-trip?
S7-414FH runs in F-mode and the firmware enforces an F-signature (32-bit CRC) over the entire F-block container. An upload returns runtime blocks; a download expects offline F-compiled blocks. The two are not bit-for-bit equivalent, the F-signature mismatches, the F-runtime group refuses to start, and every F-channel is passivated. The S7-414H has no F-signature check, so the round-trip is harmless.
What diagnostic buffer event confirms the F-signature mismatch on a 414FH?
Event ID 0x75D1 ("F-signature comparison: F-signature of the loaded F-program differs from the stored F-signature"), typically followed by 0x75D3 ("F-runtime group not started: F-signature error") and a wave of 0x39xx passivation events for each F-channel. The 0x75D1 event is the definitive root-cause indicator.
Is the original F-CPU password required to download an F-program to a 414FH?
Yes. S7 F Systems V6.1 requires the F-CPU password to be assigned in the offline project before a download is permitted. If the password is unknown, the F-CPU must be reset to factory defaults using the Siemens support password recovery procedure, which requires proof of ownership and the original support password generated when the system was commissioned.
Does EPROM (MMC) load memory change the F-program download behavior?
The F-signature is stored in the F-CPU's retentive system data, not on the MMC, so a download that changes the program on the MMC will still fail the signature check. The MMC must also be in writable (RAM-compatible) mode for the F-block download to succeed. After a successful download you can use STEP 7 Copy RAM to ROM to re-burn the MMC.
Can an S7 F Systems V6.1 F-program be safely round-tripped via upload/download for backup purposes?
No. An upload is a read-only forensic snapshot. The uploaded blocks must never be downloaded back to the F-CPU. For backup, always maintain the offline STEP 7 project on the EWS and back it up as a project archive (File > Archive). After any edit, run F-consistency check and F-compile before download. The F-signature is only valid when produced by the F-compiler under the F-password.
Which S7 F Systems software versions are affected by this round-trip behavior?
All S7 F Systems versions that implement F-signature verification, which includes S7 F Systems V5.x through V6.1 and onward. The behavior is by design: the F-CPU is required to refuse any F-program that does not match the stored F-signature. The same rule applies to S7-300F and S7-400F/FH with S7 F Systems distributed safety (S7 F Systems V6.1 with Distributed Safety F-library) on a 414FH.