S7-400H GD Communication Restriction: Why Global Data Is Unsupported
Global Data (GD) communication is a SIMATIC S7 mechanism that allows cyclic, broadcast-style exchange of small data packets between CPUs over the MPI bus, the K bus, or backplane without any explicit send/receive block programming. It is widely deployed on S7-300 and standard S7-400 installations for low-cost distribution of status words, hand-shake flags, and small recipe headers. The same mechanism is explicitly disabled on S7-400H fault-tolerant CPUs. This technical reference documents the architectural reason for the restriction, quantifies the payload limits that make GD unsuitable for redundancy in the first place, lists the alternative communication services that H-system projects must use instead, and provides a diagnostic checklist that confirms the block at the STEP 7 engineering station.
1. Overview of Global Data Communication in SIMATIC S7
Global Data communication is implemented inside the SIMATIC S7 CPU firmware and exposes itself through STEP 7 as a configuration table rather than as executable code blocks. The engineer assigns each participating CPU to a "GD circle," defines the maximum number of GD packets, and selects which process I/O areas (inputs, outputs, bit memory, timer/counter status, peripheral I/O) participate as senders or receivers. The CPU operating system then broadcasts the configured packets cyclically at a scan rate that the user sets in the GD table editor (typical values: 1, 2, 5, 10, 20, 60, 120 seconds). For each receiver the firmware updates the local process image area at the configured rate.
The protocol is intentionally minimal so it can be implemented entirely in firmware without consuming any application OB or FB execution time. That minimalism, however, is also what disqualifies it from redundant systems. The attributes that define GD communication are:
| Attribute | Value |
|---|---|
| Transport medium | MPI bus, K bus (backplane of S7-400), or PROFIBUS subnet when configured as GD subnet |
| Packet max size (S7-300 sender) | 22 bytes per packet (16 data bytes + 4 bytes GD header + 2 bytes alignment) |
| Packet max size (S7-400 sender) | 54 bytes per packet (variable data area) |
| Max GD packets per CPU | Up to 16 GD circles; up to 4 packets per circle (firmware-dependent) |
| Transport acknowledgement | None - broadcast best-effort, no ACK/NAK handshake |
| Sender identity | Fixed, statically configured; identified by MPI address |
| CPU-side firmware support | S7-300 (all CPU 31x), S7-400 standard (CPU 41x non-H), WinAC, ET 200S IM 151-7 CPU |
| CPU-side firmware restriction | S7-400H (CPU 41x-xH) - GD table is rejected by STEP 7; configuration download blocked |
Further details are documented in the SIMATIC S7-300 CPU 31xC and CPU 31x reference manual on the Siemens Industry Online Support portal. See the SIMATIC S7-300 CPU 31xC and CPU 31x: Technical Specifications entry for the per-CPU GD packet tables and the STEP 7 V5.5 help entry "Global Data Communication" for configuration flow.
2. S7-400H Fault-Tolerant Architecture Constraints
The S7-400H system is a Siemens-redundant PLC platform designed for processes where a single CPU failure must not interrupt production. Two identical H-CPUs run the same user program in lockstep and exchange state information through dedicated synchronization modules and fiber-optic sync cables. The two CPUs share I/O either through a switched DP master or through Y-link coupling, and either CPU may assume the master role at runtime.
The architectural elements that influence the GD support decision are:
| Architectural element | Effect on GD support |
|---|---|
| Two CPUs running identical programs | No way to nominate a "single" sender for a GD packet - both H-CPUs could be considered the sender depending on master/standby state |
| Event-driven synchronization over fiber-optic sync modules | GD's broadcast timing model assumes a deterministic, cyclic scan on the MPI bus; sync module activity disrupts that assumption |
| H-CPU may switch master role on failure | GD table requires static MPI sender assignment; the change-of-master event has no protocol mechanism to redirect GD send ownership |
| Redundant backplane shared with system services | Backplane bandwidth reserved for sync, diagnostics, and HMI connection; GD broadcast would compete for the same resources |
| Failover requirement | Receivers cannot tolerate missing packets during a switchover; GD's "no acknowledgement" property violates this requirement |
3. Root Cause: Why GD Is Unsupported on S7-400H CPUs
The definitive answer is published in the official Siemens manual "SIMATIC Fault-tolerant Systems S7-400H," section 11.4 ("Communication"). See the SIMATIC Fault-tolerant Systems S7-400H system manual. The manual states that GD communication is excluded from the H-system's communication service set, and the reason is twofold:
- GD requires a 1:1 static sender/receiver relationship identified by unique MPI address. In an H-system the operating system treats the two H-CPUs as a single logical controller for the purpose of external communication. The H-CPU pair owns an H-station address (S7-H station) but the individual CPUs do not present a stable MPI/PROFIBUS identity to outside partners. A third-party CPU configured as a GD receiver cannot bind to either CPU individually because whichever one is currently the master may change at any moment.
- GD offers no transport acknowledgement. A fault-tolerant design requires explicit confirmation that data reached the peer. GD's best-effort broadcast model cannot satisfy that requirement; data loss during the failover window would go unnoticed.
Several engineering opinions are often circulated on why GD is blocked. The matrix below separates the documented reason from commonly cited but unsupported explanations:
| Claim | Status | Authoritative source |
|---|---|---|
| H-CPUs have unique MPI addresses, so GD address uniqueness fails | Partially correct: H-CPUs each have an MPI address, but the external partner sees the H-station, not individual CPUs | SIMATIC S7-400H manual section 11.4 |
| GD packet size is too small (22/54 bytes) for any useful H-state data | Correct - payload is inadequate for redundant state images | S7-300/S7-400 CPU manuals (GD table) |
| GD is non-acknowledged and therefore unsuitable for fault tolerance | Correct - core reason for blocking | SIMATIC S7-400H manual section 11.4 |
| Event-driven sync modules conflict with GD cyclic timing | Correct - sync traffic pre-empts broadcast slots | SIMATIC S7-400H manual section 5 (sync subsystem) |
| Siemens could implement GD for H if they wanted to | Speculation - not supported by Siemens roadmap | No public statement |
4. GD Packet Size and Transfer Limits
The published per-packet size limits are the first hard constraint that disqualifies GD from any meaningful H-system role. The figures below are taken from the S7-300 and S7-400 CPU reference manuals.
| Parameter | S7-300 | S7-400 (non-H) | S7-400H |
|---|---|---|---|
| Maximum data bytes per GD packet | 22 | 54 | Not applicable - GD not supported |
| Max number of GD circles per CPU | Up to 4 (CPU-dependent) | Up to 16 | 0 (feature removed) |
| Max number of GD packets per CPU | Up to 16 | Up to 32 | 0 |
| Max number of CPUs in a GD circle | Up to 15 | Up to 15 | 0 |
| Configurable scan rate | 1 / 2 / 5 / 10 / 20 / 60 / 120 s | 1 / 2 / 5 / 10 / 20 / 60 / 120 s | Not applicable |
| Acknowledgement | None | None | Not applicable |
| Sender identification | Static MPI address | Static MPI address | Not applicable |
The 22/54-byte payload is sufficient to exchange a hand-shake flag, an operating-mode word, or a 4-word recipe index. It is not sufficient to mirror a single process image partition, a sequence step table, or any meaningful slice of an H-state database. A 32 KB shared data block cannot be distributed via GD; it would require 1458 packets at the S7-400 rate, exceeding the 32-packet CPU limit by two orders of magnitude.
5. MPI Addressing Model on H-Systems vs Standard CPUs
The MPI addressing question is frequently raised because it appears to be the simplest answer to "why GD fails on H." The reality is more subtle and depends on which interface is examined.
Each H-CPU physically owns an MPI address, a PROFIBUS address, and (on later 41x-4H CPUs) an IP address. STEP 7 and TIA Portal accept those addresses when you configure the rack. However, the H-station as a whole presents a logical communication identity to outside partners. S7 connections (PUT/GET, BSEND/BRCV) opened against the H-station are routed by the master CPU and fail over to the reserve CPU automatically when the master becomes unavailable. A GD packet cannot replicate that routing layer because the GD table is a static map compiled at download time with no runtime failover logic.
| Identity | Standard CPU | H-CPU pair (H-station) |
|---|---|---|
| External partner sees | One CPU with one MPI/PROFIBUS/IE address | One H-station with one address; physical CPU identities are internal |
| GD sender identity | Single MPI address - works | H-station address - GD firmware cannot resolve to a single sender CPU |
| GD receiver identity | Single MPI address - works | H-station address - GD receiver cannot bind reliably during master switchover |
| Behavior on CPU failure | Partner loses all GD packets until repair | H-system promotes reserve - GD has no failover semantics |
6. Event-Driven Synchronization and Its Conflict with GD
The H-system uses event-driven synchronization over the fiber-optic sync modules rather than a fixed cyclic sync scan. Synchronization events are triggered by OB 1 entry/exit, OB 35/OB 100, and any change to retentive data areas. When an event fires, the master CPU freezes its user program execution at the next sync point, copies the relevant state to the reserve CPU, waits for the reserve CPU's acknowledge, and only then resumes execution. The whole cycle completes within the configured monitoring time (default 100 ms; typical 30 ms for CPU 414-4H, 20 ms for CPU 417-4H).
GD communication does not participate in this sync model because GD packets are written to the receiver's process image at the GD scan rate, which is decoupled from the OB 1 cycle. Two consequences follow:
- A GD packet sourced from a non-H CPU and consumed by the H-station could be applied to the master CPU's image but not propagated to the reserve CPU's image at the next sync event. The two CPUs would diverge in that GD-receiver variable until a full re-sync.
- A GD packet sourced from the H-station and broadcast to non-H partners would be sent from whichever CPU is currently the master; the partner cannot detect a switchover because GD has no status frame.
The official Siemens position is documented in section 11.4 of the SIMATIC Fault-tolerant Systems S7-400H manual and in the related entry Why is GD communication not supported in S7-400H?.
7. Supported Alternatives to GD on S7-400H
The S7-400H platform supports the full S7 connection-based communication suite. The mapping table below is the practical answer for engineers who previously relied on GD in single-CPU projects.
| Use case | GD on S7-300/400 | Replacement on S7-400H | Acknowledged? | Max payload |
|---|---|---|---|---|
| Distribute <8 bytes of cyclic status to multiple partners | GD broadcast | S7 connection - PUT (FB 15) to each partner, or BSEND (FB 12) over IE/PB | Yes | PUT: 160 bytes; BSEND: 32 KB |
| Pull <8 bytes of cyclic status from multiple partners | GD receive | GET (FB 14) from each partner | Yes | GET: 160 bytes |
| Bidirectional 100-byte status between two CPUs | GD circle of 2 | BSEND/BRCV (FB 12/FB 13) on a configured S7 connection | Yes | 32 KB per call |
| Event-driven short message | GD at 1 s scan rate (closest approximation) | USEND/URCV (FB 8/FB 9), 4 bytes user data | Yes | 4 bytes user data (8 bytes raw) |
| Multi-peer publish | GD circle of >2 CPUs | Publish/subscribe via OPC UA on the IE interface of the H-station (CP 443-1 + OPC UA server) or via multicast S7 connections on Industrial Ethernet | Yes (TCP) | Up to 64 KB per payload |
| Redundant interconnect between two H-stations | GD would not scale | ISO-on-TCP (FB 8 + TCON) or S7 connection over the redundant IE backbone; pair both CP 443-1 with switchover | Yes | 32 KB |
For OPC UA the modern migration path is the SIMATIC S7-1500 generation with its built-in OPC UA server; S7-400H can publish OPC UA through an external CP 443-1 OPC UA server or via the WinCC OPC UA tunnel. See the SIMATIC S7-400H Industrial Ethernet communication manual.
8. Configuration Diagnostics: Confirming GD Is Blocked in STEP 7
If you have inherited an S7-400H project and want to verify that no GD table is in use, run the diagnostic steps below.
STEP 7 V5.5
- Open the project in SIMATIC Manager.
- Select the H-CPU (e.g.,
CPU 414-4H) in the left tree. - Right-click and choose Object Properties → tab Communication.
- Confirm that the Global Data button or sub-tab is absent or greyed out.
- Open menu Options → Define Global Data. If the menu item is disabled, no GD table can be authored for the project.
TIA Portal V13 and later
- Open the project in TIA Portal.
- Open the device configuration of the H-CPU.
- Inspect the Properties → Communication section. The Global data node is not listed for any 41x-xH device.
- Right-click the CPU → Compile. The compiler issues diagnostic message "Global data communication is not supported for fault-tolerant CPUs" if any legacy GD table reference is present in the offline block container.
0xE0FFxxxx ranges in older STEP 7 and severity "Error" entries in the TIA Portal "Go to" results. Always cross-check against the installed STEP 7 version's online help.9. Migration Path: Replacing GD with S7 Communication on H-Systems
The following procedure converts an existing S7-300/400 + GD topology to an S7-400H + S7-connection topology with minimal application rewrites.
- Catalog GD traffic. Export the GD table from the source project (CSV from the GD editor in STEP 7 V5.5). For each row, record: sender CPU, sender DB/M/I/O address, receiver CPU list, scan rate, packet length.
-
Classify each GD row by purpose.
- Status word (one-bit / one-byte / one-word state): convert to a single PUT/GET or to a USEND if event-driven.
- Recipe header (multi-word structured DB): convert to BSEND/BRCV with one call per change.
- Continuous process image slice: convert to PUT/GET at 100 ms – 1 s scan using OB 35 or a cyclic timer OB.
- Alarm flag: convert to USEND/URCV.
- Configure the S7 connections. In NetPro (STEP 7 V5.5) or the device editor (TIA Portal), insert one S7 connection per direction per peer. Configure the connection as "fault-tolerant" if the partner is also an H-station. Do not mark the connection as "GD".
- Implement the FB/FC wrappers. Replace GD-area reads/writes with calls to FB 14 (GET), FB 15 (PUT), FB 12 (BSEND), FB 13 (BRCV), FB 8 (USEND), FB 9 (URCV). Place the calls in OB 1 for cyclic traffic or in the relevant hardware-interrupt OB for event-driven traffic.
- Validate fail-over behavior. With the H-system online, force the master CPU to STOP via the test panel and observe whether the S7 connection remains active (it should, by virtue of the H-system's automatic partner-rebinding). Confirm that the partner's data buffer contains the latest values within the configured monitoring time.
Minimal S7 PUT/GET template
// Trigger a cyclic PUT from H-CPU to a non-H CPU (S7-300) every 100 ms
CALL FB 15, DB 100 (
REQ := "HMI_Ack_Trigger", // BOOL trigger, e.g. from OB 35 timer pulse
ID := W#16#0001, // connection ID from NetPro
DONE := "PutDone",
ERROR := "PutError",
STATUS := "PutStatus",
ADDR_1 := P#DB200.DBX 0.0 BYTE 22, // 22 bytes - same size as a S7-300 GD packet
SD_1 := P#DB300.DBX 0.0 BYTE 22);
// Evaluate error
IF "PutError" THEN
// log STATUS to diagnostic buffer; do not retry blindly
END_IF;
10. Programming Best Practices for H-System Data Exchange
- Use the H-station address as the connection endpoint. Never bind S7 connections to the physical MPI/PROFIBUS/IE address of an individual H-CPU; the H firmware re-routes the connection automatically after master switchover.
- Configure connection monitoring explicitly. Set the S7 connection's keep-alive time to 5 s and the partner's timeout to a value larger than the worst-case H master switchover (typically 100 ms) but smaller than the process's safety time.
- Use large-payload blocks (BSEND/BRCV) for recipe or parameter data. A single BSEND of 32 KB eliminates the need to chop the data into multiple GD packets.
- Avoid cyclic GD-style broadcasts. If you need one-to-many distribution on an S7-400H project, use multicast S7 connections or OPC UA publishing from the H-station's CP 443-1.
- Reserve bandwidth for sync. The H-system's sync modules consume a portion of the backplane cycle. Adding heavy communication traffic can delay sync acknowledgements and trigger an OB 70 / OB 72 "Communication fault" event. Monitor OB 70 call counts in the diagnostic buffer of the H-CPU.
- Document the GD migration. Mark every legacy DB that used to be a GD target in the project comments so future engineers do not assume the data is still being broadcast.
11. Troubleshooting Matrix: GD Errors on S7-400H
The matrix below maps the most common symptoms an engineer encounters when trying to deploy GD on an H-system to the documented cause and to the resolution path.
| Symptom | Diagnostic location | Likely cause | Resolution |
|---|---|---|---|
| "Define Global Data" menu is greyed out in STEP 7 V5.5 | SIMATIC Manager menu Options | Project contains one or more H-CPUs | Convert all inter-CPU traffic to S7 connections |
| TIA Portal compiler reports "GD not supported on fault-tolerant CPU" | Compile result window | Legacy GD table imported from STEP 7 V5.x | Delete the GD table entries and rebuild with S7 connections |
| OB 70 (Communication fault) fires repeatedly after switching to S7 connection | H-CPU diagnostic buffer | Connection endpoint bound to physical CPU address instead of H-station address | Reconfigure the connection to target the H-station address |
| Partner receives no data after master switchover | Partner CPU diagnostic buffer, event ID W#16#0E32 | Connection was not flagged as fault-tolerant; partner must re-establish after switchover | Re-create the connection in NetPro with the "fault-tolerant connection" option enabled on both endpoints |
| Status flags update slowly on the partner CPU | Partner trace / process image | PUT call rate set too low (e.g. 5 s) or OB 35 period set to 1 s | Reduce the trigger period to 100 ms; verify OB 35 is running on both H-CPUs |
| H-CPU emits SF (system fault) with cause "Communication: GD not configured" | H-CPU diagnostic buffer, SF/BF LED pattern | Residual GD configuration from a previous standard-CPU project | Re-download the hardware configuration with GD table cleared |
Frequently Asked Questions
Why can't I use GD communication with S7-400H CPUs?
GD communication is explicitly unsupported on S7-400H CPUs because the protocol assumes a static, non-acknowledged 1:1 sender/receiver relationship, while the H-system requires redundant, acknowledged communication that survives master switchover. See section 11.4 of the SIMATIC Fault-tolerant Systems S7-400H manual.
What is the maximum data size for GD communication?
Up to 22 bytes per packet on S7-300 and up to 54 bytes per packet on S7-400 standard CPUs, with a maximum of 16 packets per circle and a configurable scan rate of 1, 2, 5, 10, 20, 60, or 120 seconds. The transfer is not acknowledged.
What are the recommended alternatives to GD communication on S7-400H?
Use S7 connection-based services: PUT (FB 15) / GET (FB 14) for small cyclic payloads, BSEND (FB 12) / BRCV (FB 13) for large structured data up to 32 KB, USEND (FB 8) / URCV (FB 9) for 4-byte event messages, and OPC UA publishing via CP 443-1 for one-to-many distribution.
Does GD communication require acknowledgement?
No. GD communication is a best-effort broadcast with no ACK/NAK handshake. Receivers cannot tell the difference between a packet that was lost and a sender that is offline. This is the primary reason it is unsuitable for fault-tolerant systems.
Can I configure an H-CPU as a GD sender if I accept the risk of data loss during switchover?
No. STEP 7 V5.5 and TIA Portal both reject GD table entries that target an H-CPU as sender or receiver. The configuration download is blocked at compile time, regardless of how the application-side risk is evaluated. You must redesign the traffic as S7 connections.