Troubleshooting IM 151-8 PN/DP CPU with ET200S 1SI Serial Module

David Krause9 min read
Serial CommunicationSiemensTroubleshooting
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

Overview

The IM 151-8 PN/DP CPU is an interface module with an integrated CPU for the ET 200S distributed I/O system. When paired with the ET 200S 1SI serial interface module (6ES7 138-4DF01-0AB0 or 6ES7 138-4DF11-0AB0), the CPU can read and write data from serial end devices using ASCII, 3964(R), or RK 512 protocols. Field experience shows two recurring failure modes: (1) the 1SI module intermittently stops responding on the serial port with no software recovery path other than power cycling, and (2) the CPU enters a 0.5 Hz memory-reset request loop after an MMC swap. Both problems are diagnosable through the integrated LED indicators and are preventable with the correct STEP 7 program architecture.

Problem 1: ET 200S 1SI Serial Module Lockup

Symptoms

  • S_RCV (FB 2) returns no new data after running for hours or days.
  • S_SEND (FB 3) reports the job complete but bytes never reach the slave.
  • The SF (group error) LED on the 1SI module lights steady red; the 1SI is still online in the hardware configuration.
  • Writing a new configuration or restarting the OB 1 cycle does not clear the fault.
  • The only field-proven recovery is a 24 V power cycle on the ET 200S station or the 1SI submodule's load group.

Root Cause

The lockup is triggered when the calling program polls S_RCV without inspecting the error/status outputs. The 1SI module cancels any active receive job after a framing, parity, or timeout error, and that error remains latched until the application re-arms the receive buffer. When the application code only monitors the DONE bit and ignores ERROR, STATUS, and S_RCV.STA_DATID, the next call to S_RCV never returns because the module has nothing new to deliver and the error path is never cleared.

A secondary cause is the use of a Function (FC) instead of a Function Block (FB) for the serial wrapper. Each FC call rebuilds pointer-based parameter passing (six bytes per pointer with multiple L/T transactions) and, in heavy cyclic use, can produce transient parameter alignment mismatches inside the 1SI's dual-port RAM, especially when the FC is reused for multiple serial ports in the same OB 1.

Problem 2: IM 151-8 PN/DP Memory Reset Request Loop

Symptoms

  • After an MMC removal/reinsertion or after a download in RUN, the STOP LED flashes slowly.
  • The CPU refuses to enter RUN.
  • STEP 7 online view reports the CPU is requesting a memory reset.

LED Decoding

LED State Meaning
STOP Flashing at 0.5 Hz CPU requests a memory reset (MRES) from the operator
STOP Flashing at 2 Hz Memory reset is in progress
STOP Steady ON STOP, no memory reset pending; program execution halted
STOP OFF (RUN ON) CPU is in RUN
SF / BF Flashing Bus fault or group error, see diagnostic buffer

The LED flash-rate timing is documented in the IM 151-8 PN/DP CPU manual entry on SiePortal (article ID 47409312), which lists the 0.5 Hz slow-flash and 2 Hz fast-flash rates for memory-reset request and execution respectively. Reference: IM 151-8 PN/DP CPU status and error displays.

Resolution

  1. Turn the mode selector to MRES.
  2. Hold the selector for at least three seconds until the STOP LED stays steady ON.
  3. Release, then turn back to MRES within one second and release again.
  4. The STOP LED now flashes at 2 Hz; wait until it returns to steady ON.
  5. Insert the MMC, perform a fresh download, and transition to RUN.

If the CPU reverts to 0.5 Hz immediately after MRES, the MMC is corrupted or contains a project that the CPU firmware rejects. Re-format the MMC in STEP 7 (SIMATIC Manager > PLC > Memory Card > Format) or rewrite the MMC with the matching order number (6ES7 953-8LF00-0AA0 or higher). Additional diagnostic detail for this scenario is published in the SiePortal support thread IM 151-8 impossible to reset memory.

STEP 7 Program Architecture: FB with Multiple Instances

For multi-port serial scanning, declare a single Function Block (FB) that contains S_RCV and S_SEND as static instances. This gives the compiler a fixed, address-bound parameter block per call site instead of the pointer-based parameter exchange the compiler synthesises for every FC call.

Parameter exchange comparison:

Mechanism FC call FB call
Per-call instruction overhead Multiple L/T to load the 6-byte pointer pairs Direct A/= access on instance DB fields
Static state retention None (all temporaries) Persistent in instance DB
Multiple instances per FB Not possible Native; create one IDB per scanner
Use for S_RCV / S_SEND Not recommended Recommended

FB Declaration (STAT section)

FUNCTION_BLOCK FB_SerialScanner
VAR
  S_RCV_Inst : S_RCV;     // FB 2
  S_SEND_Inst : S_SEND;   // FB 3
  RecvBuffer  : ARRAY[0..255] OF BYTE;
  RecvLen     : INT;
  RecvDone    : BOOL;
  RecvError   : BOOL;
  RecvStatus  : WORD;
END_VAR
BEGIN
  // call S_RCV_Inst here, route its ERROR and STATUS to RecvError / RecvStatus
END_FUNCTION_BLOCK

Calling OB 1 with Multiple Instances

// One IDB per scanner port; each holds its own instance of S_RCV_Inst
CALL FB_SerialScanner, DB_Scanner_1    // port on 1SI slot 1
CALL FB_SerialScanner, DB_Scanner_2    // port on 1SI slot 2
CALL FB_SerialScanner, DB_Scanner_3    // port on 1SI slot 3

Each IDB gets its own copy of S_RCV_Inst and S_SEND_Inst, so the FB2/FB3 background data (receive buffer pointers, job state machine) is unique per port. The compiler emits direct A/= and L/T onto the IDB offsets; no pointer indirection is needed at runtime.

Error Handling for S_RCV and S_SEND

Always evaluate every status output, not just DONE. The 1SI module returns these job-status values:

STATUS (hex) Meaning Required action
0000 No job active Arm S_RCV if not already armed
01xx Receive job active, xx bytes received Wait for DONE
7000 Job accepted, no processing yet Wait
8180 Receive cancelled, framing or parity error Re-arm S_RCV immediately
8181 Receive cancelled, timeout Verify slave is transmitting; re-arm
8183 Receive buffer overflow Drain RecvBuffer, raise DB size, re-arm
8186 Configuration error in hardware config Re-check 1SI parameters (baud, parity, protocol)

Any time ERROR = TRUE the calling code must re-issue the S_RCV call with EN_R = TRUE and R = FALSE. Skipping the re-arm path is the most common cause of the lockup described in Problem 1.

Verification Procedure

  1. Open STEP 7 SIMATIC Manager and go online with the IM 151-8 station.
  2. Open the S_RCV instance DB and confirm BUSY toggles within one OB 1 cycle after each character is received.
  3. Force EN_R high and set R high for one cycle, then low; the receive job should re-arm.
  4. Disconnect the serial line for 60 seconds and verify the diagnostic buffer records the framing/timeout event with a timestamp; STATUS should display 8181h.
  5. Reconnect and confirm S_RCV resumes without a power cycle.
  6. Monitor the STOP LED with a phone camera at 240 fps; verify it never sits at 0.5 Hz for more than three seconds during normal operation.

Troubleshooting Matrix

Observed behaviour Likely root cause Corrective action
1SI stops responding, no SF LED FC pointer indirection drift; S_RCV not re-armed on ERROR Migrate wrapper to FB with multi-instance IDBs and re-arm on every ERROR
1SI shows SF steady red Hardware fault or wire break on RS-485 / RS-232 Check terminal block, shielding, termination resistor
STOP LED at 0.5 Hz after MMC change CPU requests MRES Perform MRES with mode selector as described above
STOP LED returns to 0.5 Hz after MRES MMC mismatch or corrupted project Re-format MMC, reload program matching order number
BF LED flashing, SF off PROFINET / PROFIBUS cable break Inspect bus connector, replace drop cable
S_RCV STATUS = 8186 Protocol mismatch between HW config and slave Re-open HW config, verify baud rate, parity, stop bits, protocol selection

Key Specifications

Item Value
IM 151-8 PN/DP CPU order numbers 6ES7 151-8AB00-0AB0, 6ES7 151-8AB01-0AB0, 6ES7 151-8FB00-0AB0, 6ES7 151-8FB01-0AB0
ET 200S 1SI order numbers 6ES7 138-4DF01-0AB0 (ASCII/3964), 6ES7 138-4DF11-0AB0 (ASCII/3964/RK512)
Supported protocols on 1SI ASCII, 3964(R), RK 512 (DF11 only)
Receive buffer per 1SI 2 KB dual-port RAM
STEP 7 blocks required S_RCV (FB 2), S_SEND (FB 3), S_XON (FC 0), S_XOFF (FC 1) for ASCII flow control
Max cyclic OB1 load from S_RCV 12 ms typical at 9600 baud full buffer
MMC types supported 6ES7 953-8LF00-0AA0 (512 KB) and larger
Critical engineering note: The IM 151-8 PN/DP CPU does not retain the project on power-down. The MMC is mandatory for operation; never run the station with an absent or unformatted MMC. If the MMC is removed while the CPU is in STOP, the next start-up will demand a memory reset (0.5 Hz STOP LED), which can be mistaken for a hardware fault.

Programming Best Practices for Serial Libraries

For a reusable serial library on this platform, follow these rules:

  1. Define one FB per protocol wrapper (FB_ASCII_Scanner, FB_3964_Scanner, FB_RK512_Scanner).
  2. Instantiate S_RCV and S_SEND in the FB's STAT section only.
  3. Expose DONE, ERROR, STATUS, and the raw received length on the FB outputs.
  4. In the calling OB, treat any rising edge of ERROR as a re-arm trigger.
  5. Keep a heartbeat counter that increments every successful reception; alarm if no reception occurs for N× protocol timeout cycles.
  6. Document the 1SI slot and channel per IDB so hardware changes do not silently re-point the wrong port.

This pattern produces a library where a new serial port is added by instantiating the FB into a new IDB, with no recompilation of the wrapper and no risk of pointer misalignment across the FC/FB boundary.

Why does my ET 200S 1SI module stop reading without showing an SF LED?

The 1SI cancels the active receive job internally after a framing, parity, or timeout error. If your code only monitors DONE and ignores ERROR/STATUS on S_RCV, the job never re-arms. Add a re-arm branch on every rising edge of ERROR, ideally inside an FB instance DB so state survives the call.

What does a STOP LED flashing at 0.5 Hz on the IM 151-8 PN/DP mean?

It means the CPU is requesting a memory reset (MRES). This typically follows an MMC removal or a firmware-detected project mismatch. Use the mode selector to perform MRES, then reload the project to the MMC.

Should I use an FC or an FB to call S_RCV and S_SEND?

Use an FB. FCs force the compiler to synthesise pointer pairs (six bytes each) and to copy them via multiple L/T instructions on every call. FBs let the compiler use direct A/= access on the instance DB, which is faster, more stable, and required for multiple instances of the same scanner across several serial ports.

How do I clear the IM 151-8 memory-reset loop without a power cycle?

Turn the mode selector to MRES, hold for three seconds until STOP is steady on, release, then turn back to MRES within one second. STOP flashes at 2 Hz during the reset, then goes steady. Reload the project afterwards.

What is the difference between 6ES7 138-4DF01-0AB0 and 6ES7 138-4DF11-0AB0?

The DF01 supports ASCII and 3964(R) protocols. The DF11 additionally supports the RK 512 protocol and has a larger receive buffer. Choose DF11 if the slave device uses RK 512 or if you need more headroom for high-volume ASCII traffic.

Back to blog