Resolving ET200SP Modbus Master Error 7000 with PtP Blocks

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

Resolving ET200SP Modbus Master Error 7000 with PtP Blocks

When a SIMATIC ET 200SP distributed I/O station is configured as a Modbus RTU master and paired with a SIMATIC S7-300, S7-400, S7-400H, S7-1200, or S7-1500 controller, the most common commissioning symptom is that the MODBUS_COMM_LOAD (STEP 7 V5.5: FB640 "Modbus_Master"; TIA Portal: MODBUS_COMM_LOAD_DB) function block reports status code 7000 on its STATUS output, never sets the DONE bit, and the CPU diagnostic buffer records an area access error on the backplane serial module. The block is then disabled (EN never propagates) and no Modbus traffic is generated. This article explains why status 7000 is reported, what is missing in the program, and the exact block sequence required to clear the fault and bring up the link.

1. Problem Overview

Symptom summary observed on a typical S7-400H station with an ET 200SP on PROFIBUS or PROFINET:

  • The block instance of MODBUS_COMM_LOAD / FB640 executes, but the DONE output never goes TRUE.
  • The STATUS output reads 16#7000 continuously.
  • The S7 CPU diagnostic buffer lists "Area access error" on the ET 200SP interface module (e.g., IM 155-6 DP HF (6ES7155-6BA01-0CN0)) and the PtP communication module (e.g., CM PtP, 6ES7137-6AA00-0BA0 or 6ES7137-6AA01-0BA0).
  • No REQ pulses reach the Modbus master block, or the block remains disabled.
  • Status LEDs on the CM PtP module do not progress through the typical initialization sequence.
Important: Status 7000 is technically a no-job-active code, not an error code. It is returned by the block when the underlying point-to-point (PtP) port has not been initialized. Treating it as a wiring or slave address problem leads engineers to chase red herrings. The actual fault is missing initialization, not bad serial parameters.

2. What Status 7000 Actually Means

Siemens Modbus and PtP function blocks return status codes from a shared numbering scheme. Status 7000h is the inactive code emitted when the block has not yet been called with an active job, or when the referenced channel is not ready. The relevant excerpts from the Modbus RTU status table are summarized below.

Selected MODBUS_COMM_LOAD and MODBUS_MASTER Status Codes (S7-300/400 / TIA Portal)
STATUS (hex) Meaning Severity Likely Cause on ET200SP
7000 No job active / channel not initialized Informational PtP configuration block missing or not yet processed
7001 First call of an asynchronous job, no data yet Informational Job in progress, wait
7002 Subsequent call of an asynchronous job, no data yet Informational Job in progress, wait
8080 Serial port number out of range or port not configured Error PtP block not downloaded, wrong module address
8090 Module does not support the requested function Error Wrong module type selected in HW config
80A0 Negative acknowledgement from module Error Module not yet ready or fault state
80C0 Data consistency error between block and module Error Module firmware / library version mismatch

Status 7000 should not be treated as a fault in isolation. When it persists on every cycle, the context is missing initialization, and the CPU diagnostic buffer's area access error confirms this: the block is trying to access process image addresses that have not been mapped because the serial port configuration is incomplete.

3. Root Cause: Missing PtP Communication Blocks

The ET 200SP CM PtP module does not perform Modbus RTU on its own. It is a generic serial interface (RS-232, RS-422, RS-485) that requires the user program to load a protocol stack and channel parameters at run time. In STEP 7 V5.5, this is done with the PtP communication library for distributed I/O (Siemens entry ID 69124220). In TIA Portal, the protocol is loaded by the MODBUS_COMM_LOAD instruction itself, but on STEP 7 V5.5 / S7-300/400, the equivalent Modbus master block (FB640) only operates once the lower-level PtP blocks have been added and processed.

The blocks that must be present in the program are:

  • FB611 – PtP send/utility block
  • FB612 – PtP receive/utility block
  • FB613 – PtP protocol utility block
  • FB614 – PtP protocol utility block
  • FB617 – PtP protocol/initialization block for the serial port

If any of these blocks is missing from the S7 program container, the call to MODBUS_COMM_LOAD / FB640 cannot acquire the initialized channel and falls back to status 7000. Adding these blocks resolves both the persistent 7000 status and the area access error in the CPU diagnostic buffer.

Note on STEP 7 V5.5 vs TIA Portal: On TIA Portal (S7-1200 / S7-1500) the same logical function is folded into the MODBUS_COMM_LOAD instruction and no separate lower-level blocks are required. The FB611–FB617 sequence is specific to STEP 7 V5.5 with the legacy PtP library, which is why engineers porting an S7-1200 working program to an S7-400H often get stuck at status 7000.

4. Hardware and Software Prerequisites

Before reconfiguring the software, verify that the hardware configuration matches the assumed topology. The following items are required.

Hardware and Software Requirements for ET200SP Modbus Master
Item Catalog Number / Version Purpose
SIMATIC ET 200SP interface module (PROFINET) 6ES7155-6AU00-0CN0 (IM 155-6 PN HF) PN interface to controller
SIMATIC ET 200SP interface module (PROFIBUS) 6ES7155-6BA01-0CN0 (IM 155-6 DP HF) DP interface to controller (common in S7-400H stations)
CM PtP module (RS-485, Modbus RTU) 6ES7137-6AA01-0BA0 Serial interface for Modbus
BaseUnit (Type C0 / C1 with PE) 6ES7193-6BP00-0BA0 / 6ES7193-6BP00-0BD0 Power and PE termination for RS-485
STEP 7 V5.5 + SP x 6ES7810-4CC10-0YA5 (or later) Programming environment for S7-300/400
PtP library for distributed I/O (STEP 7 V5.5) Siemens support entry 69124220 FB611, FB612, FB613, FB614, FB617
Modbus RTU sample application (S7-300 / ET 200S) Siemens support entry 109474714 Reference project with FB640 / FB641
TIA Portal V16+ (alternative for S7-1200/1500) 6ES7822-1AA06-0YA5 Alternative programming path

Refer to the SIMATIC ET 200SP manual collection for the latest configuration limits, status/error codes, and module firmware requirements. The IM 155-6 DP HF status and error display page is the authoritative source for LED codes on the head module.

5. Required Function Block Architecture

The program sequence on the CPU is split into two layers: an initialization layer (PtP blocks) and an application layer (Modbus master/slave blocks). The initialization layer is one-shot per port. The application layer is cyclic.

5.1 Initialization layer (call once per port)

In OB100 (warm restart) or in a startup section, instantiate and call:

  1. FB617 with the configured port index, baud-rate code, parity, and data bits. Wire the instance DB to a global DB for visibility.
  2. FB613 and FB614 to register the protocol state machine.
  3. FB611 and FB612 to expose the send/receive buffers used by the higher layer.

These blocks write configuration records into the CM PtP module through the backplane of the ET 200SP. The ET 200SP interface module then enables the channel and reports the channel state to the CPU.

5.2 Application layer (cyclic in OB1)

Once the initialization layer has run, the Modbus master block FB640 "Modbus_Master" can be called cyclically. The relevant input parameters are:

FB640 (Modbus_Master_PtP) Key Input Parameters
Parameter Type Meaning Typical Value (9600,N,8,1)
REQ BOOL Edge-triggered request to start a job Edge from timer or trigger tag
PORT WORD Logical port identifier on the ET 200SP W#16#0000 (first port) or 0001
BAUD WORD Baud-rate code (see Section 7) W#16#0006 = 9600
PARITY WORD 0 = none, 1 = odd, 2 = even 0
FLOW_CTRL WORD 0 = none, 1 = XON/XOFF, 2 = RTS/CTS 0 for Modbus RTU on RS-485
MODE WORD Protocol mode (ASCII / RTU) 1 = RTU
TIMEOUT TIME Slave response timeout T#500ms to T#2s
SLAVE_ADDR BYTE Modbus slave address 1…247 1
DATA_ADDR WORD Modbus function code + register W#16#0001 (read coils 0…15)
DATA_LEN WORD Number of registers/coils to read/write 1 to 125 (registers) or 1 to 2000 (coils)
DONE BOOL Job complete (one cycle) Connect to display / next-job trigger
ERROR BOOL Job failed (one cycle) Latch to operator faceplate
STATUS WORD Detailed status word 0 = OK, see table above

After the application layer is in place and OB100 has executed, the persistent 7000 status is replaced by a one-shot DONE pulse followed by either 0 (success) or one of the 80xx error codes. The CPU diagnostic buffer no longer logs an area access error on the CM PtP module.

6. Step-by-Step Configuration Procedure

  1. Verify HW config. In SIMATIC Manager (STEP 7 V5.5) or TIA Portal, open HW Config and confirm the ET 200SP station contains the CM PtP module (6ES7137-6AA01-0BA0) on the correct slot. The module must be assigned to a logical port index. The port address assigned in HW config is what FB640 uses internally.
  2. Install the PtP library. From Siemens support entry 69124220, install the S7-300/400 PtP library for distributed I/O. Copy the FBs into the S7 program container.
  3. Install the Modbus RTU library. From Siemens support entry 109474714, install the Modbus RTU master/slave example for S7-300 and ET 200S. This provides FB640 (Modbus_Master) and FB641 (Modbus_Slave) along with their instance data blocks.
  4. Insert initialization FBs in OB100. Drop FB611, FB612, FB613, FB614, and FB617 into OB100. Connect the configuration inputs (port, baud-rate code, parity, data bits) and let the FBs run once on startup.
  5. Insert FB640 in OB1. Place FB640 "Modbus_Master" in OB1 (or in a slow cyclic OB such as OB35 if you want a fixed scan period for polling). Wire the application-layer inputs and connect REQ to a free-running clock or to a previous DONE to chain jobs.
  6. Set BAUD parameter. For 9600 baud, set BAUD = W#16#0006 (see Section 7 for the full table). The number 6 is the code, not the baud rate itself.
  7. Compile and download. Compile the S7 program, perform a full download to the S7-400H, and ensure the ET 200SP head module is online and the CM PtP module reports no fault (green status LED, no BF / SF).
  8. Run OB100 once. Trigger a CPU restart (STOP → RUN on the active S7-400H controller) so that OB100 executes and the PtP blocks initialize the port. If the program is downloaded to a running CPU, force a restart of the user program.
  9. Monitor STATUS. In a VAT or in the HMI tag list, monitor the STATUS output of FB640. The 7000 code should clear within a single scan after OB100 runs, replaced by 7001 / 7002 during a transaction and 0 (or an 80xx error) at the end.
Safety hint: If the Modbus RTU bus is wired to field instrumentation in a hazardous area, isolate the bus before forcing a CPU restart. ET 200SP CM PtP modules can drive transient RS-485 activity during re-initialization that may disturb end devices.

7. FB640 Baud Rate Parameter Encoding

Many engineers miss the fact that the BAUD input on FB640 is an index, not a value in bits per second. The mapping is fixed and reproduced below from the FB640 documentation.

BAUD Code Mapping for FB640
BAUD (WORD) Baud Rate (bit/s)
0001 300
0002 600
0003 1 200
0004 2 400
0005 4 800
0006 9 600
0007 19 200
0008 38 400
0009 57 600
000A 76 800
000B 115 200

For 9 600 / 8 / N / 1 (the most common Modbus RTU default) the configuration is: BAUD = W#16#0006, PARITY = 0 (none), DATA_BITS = 8 (implicit), and STOP_BITS = 1 (implicit). The MODE input selects RTU (typically 1) or ASCII (typically 0).

8. Common Configuration Errors

Error Matrix: Symptom vs Root Cause
Symptom Likely Root Cause Remedy
Persistent 7000, no DONE, no ERROR Missing FB611/FB612/FB613/FB614/FB617 Add the five PtP blocks; rebuild and download
7000 transitions to 8080 on first call Port number out of range or CM PtP not in HW config Re-check HW config slot and port index
7000 transitions to 8090 Wrong module type (e.g., DI module in place of CM PtP) Replace module, recompile, re-download
7000 transitions to 80A0 CM PtP is in fault (channel diagnostic alarm) Read the channel diagnostics; check wiring and termination
7000 transitions to 80C0 Library / firmware version mismatch Upgrade FB640 library to match CM PtP firmware
7000 with DONE pulsing but STATUS = 7001 FB617 not present, but FB640 was chained Add FB617 and force re-init in OB100
Area access error in diagnostic buffer on every cycle PtP DBs not loaded; user program references I/O outside process image Confirm the instance DBs of the PtP blocks are downloaded
7000 only on first cycle after PLC restart, then OK OB100 not executing PtP blocks in correct order Call FB611–FB617 sequentially in OB100 before OB1

The most frequent field reports correspond to rows 1 and 7. The area access error in the diagnostic buffer is often misread as a hardware fault. In reality, the CPU is logging the I/O access failure caused by the missing initialization blocks, not by the module itself.

9. Diagnostics and Area Access Errors

When the PtP initialization blocks are absent, the CPU diagnostic buffer records an entry of the form:

"Area access error when reading I/O address x (module slot y)"

The exact wording depends on the CPU firmware level. The SIMATIC ET 200SP status and error codes page lists all such entries, including the invalid configuration states and the supply voltage L+ loss on BaseUnit types BU...D that are also commonly confused with this symptom.

To filter the buffer, open the CPU in SIMATIC Manager, navigate to CPU › Diagnostic Buffer, and apply a filter for "Area length error" or "I/O access error". Once the PtP blocks are added, no further entries of this type should be logged for the same slot.

False positive: Some S7-400H firmware revisions log a single area access error at the moment of the redundant link switchover (for example when the active controller changes). This is not related to the PtP initialization issue. If the entry appears only during H-switchover and the Modbus link recovers, the entry can be ignored after the fix is applied.

10. Cross-Platform Compatibility

The behavior and the fix differ depending on the controller generation. The table below summarizes the engineering paths.

Modbus RTU Master on ET 200SP - Controller Compatibility
Controller Programming Environment Modbus Block PtP Init Blocks Needed? Notes
S7-300 (CPU 31x) STEP 7 V5.5 FB640 (Modbus_Master) Yes - FB611..FB617 Add PtP library 69124220
S7-400 (CPU 41x) STEP 7 V5.5 FB640 (Modbus_Master) Yes - FB611..FB617 Same procedure as S7-300
S7-400H (CPU 41xH) STEP 7 V5.5 FB640 (Modbus_Master) Yes - FB611..FB617 Run on both controllers; OB100 on each
S7-1200 (CPU 12xx) TIA Portal V13+ MODBUS_MASTER (instruction) No - folded into MODBUS_COMM_LOAD Configure CM PtP in device config
S7-1500 (CPU 15xx) TIA Portal V13+ MODBUS_MASTER (instruction) No - folded into MODBUS_COMM_LOAD Same as S7-1200
ET 200SP CPU (CPU 15xxSP) TIA Portal V13+ MODBUS_MASTER (instruction) No - local CM PtP, instruction uses local port Use device port selector

For S7-1200 / S7-1500 stations, the only block required to load the port is MODBUS_COMM_LOAD, and the only block required for the master is MODBUS_MASTER. The status 7000 symptom rarely appears on these controllers, because the instruction set includes internal initialization. The symptom is essentially STEP 7 V5.5 / S7-300/400 specific.

11. Verification Procedure

  1. Diagnostic buffer clean. Force a warm restart and verify that no new "Area access error" entry is logged for the CM PtP slot.
  2. STATUS transitions. Watch the STATUS output of FB640 in a VAT. Expected sequence: 7000 (idle) → 7001 (job starting) → 7002 (job in progress) → 0 (DONE pulse) on success. On failure, expect an 80xx code with ERROR pulsing high.
  3. DONE pulse. Confirm that the DONE output generates one positive edge per successful poll, with no double-pulsing or hanging HIGH.
  4. Slave response. Connect a Modbus RTU slave (or a simulator) and verify that the response data appears in the configured receive DB. Cross-check the CRC-16 of the response with a Modbus protocol analyzer.
  5. LEDs on CM PtP. Observe the TXD / RXD activity LEDs on the CM PtP module. Periodic flashes during polling confirm the physical layer is alive.
  6. CPU LEDs. No SF (red) on the CPU, no BF / SF on the ET 200SP IM 155-6 head module, no group fault on the CM PtP module.
  7. Long-duration test. Run the polling loop for at least one hour and confirm that no status regresses to 7000 and that no diagnostic buffer entries are appended.

If all seven checks pass, the Modbus RTU master on the ET 200SP is healthy. If a check fails, return to Section 8 and use the error matrix to isolate the new symptom.

Is status 7000 on MODBUS_COMM_LOAD an actual error?

Status 7000 ("no job active") is an informational code, not a hard error. It becomes a problem when it persists on every cycle, which on ET 200SP with STEP 7 V5.5 indicates that the underlying PtP configuration blocks (FB611, FB612, FB613, FB614, FB617) have not been added to the S7 program. Add those blocks and re-download to clear the 7000 state.

Which PtP blocks must be present to clear error 7000 on ET 200SP?

On STEP 7 V5.5 with S7-300/400 controllers, instantiate FB611, FB612, FB613, FB614, and FB617 from the PtP library for distributed I/O (Siemens support entry 69124220) and call them in OB100 before FB640 executes. On TIA Portal S7-1200/1500, the same function is folded into MODBUS_COMM_LOAD and no separate blocks are required.

What value do I enter in the BAUD parameter of FB640 for 9600 bit/s?

FB640 expects an index, not the raw baud rate. For 9 600 bit/s, set BAUD = W#16#0006. The full mapping is: 0001 = 300, 0002 = 600, 0003 = 1 200, 0004 = 2 400, 0005 = 4 800, 0006 = 9 600, 0007 = 19 200, 0008 = 38 400, 0009 = 57 600, 000A = 76 800, 000B = 115 200.

Why does the CPU diagnostic buffer show an area access error when error 7000 appears?

Without the lower-level PtP blocks, FB640 cannot write the port configuration to the CM PtP module. The CPU then logs an I/O access fault for the backplane slot of the CM PtP module (for example on the IM 155-6 DP HF, 6ES7155-6BA01-0CN0) because the configured I/O area is not initialized. Once the PtP blocks are added, the area access error stops appearing.

Can the same program structure be used with an S7-1200 or S7-1500 controller?

Yes, but with a different block set. On TIA Portal, drop a single MODBUS_COMM_LOAD instruction to initialize the port and a MODBUS_MASTER instruction for the polling. Status 7000 essentially does not occur in this path, because the TIA Portal instructions handle the underlying PtP configuration internally.

Back to blog