Resolving S7-1200 CB 1241 RS485 Error 16#8280

David Krause10 min read
S7-1200SiemensTroubleshooting
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

1. Problem Overview

The CB 1241 RS485 signal board mounted beneath an S7-1200 CPU (firmware V4.x and later) is one of the most-used serial options for Modbus RTU master/slave communication against third-party controllers such as Schneider Modicon M340, M221, M241, or ATV drives. Field reports repeatedly describe the same symptom: at CPU power-on the CB 1241 LED flashes green once, then goes dark, while MB_COMM_LOAD never reaches DONE and MB_SLAVE returns STATUS = 16#8280.

This article consolidates the diagnostic path for that exact failure mode, ties the symptoms back to hardware and TIA Portal configuration layers, and verifies each fix against the CB 1241 RS485 wiring specification in the official S7-1200 manual collection.

Critical: Error 16#8280 is a Modbus instruction error returned by MB_SLAVE / MB_MASTER. It is generated by the instruction, not by the diagnostic buffer. The diagnostic buffer may show nothing for the CB at all, which is normal — the signal board has no diagnostic interrupt capability of its own.

2. CB 1241 Hardware Identification

Parameter Value
Order number (MLFB) 6ES7241-1CH30-1XB0 (CB 1241 RS485)
Order number (legacy) 6ES7241-1CH30-0XB0
Electrical interface RS485 half-duplex, 2-wire
Baud rate 300 bit/s to 115.2 kbit/s
Supported protocols Modbus RTU master/slave, USS, Freeport
Connector Removable 6-pin terminal block (A, B, GND, TA, TB, M)
LEDs None functional for runtime diagnostics on the board itself
Slot Signal board slot beneath CPU (one slot only)
Compatible CPUs CPU 1211C / 1212C / 1214C / 1215C / 1217C, firmware V4.0+

The single green blink observed during CPU power-up is the LED self-test — it indicates that the CPU detected the CB on the backplane and performed a power-on check. After that pulse the LED is no longer meaningful for traffic; status must be read from the Modbus instruction output bits.

3. Decoding the LED Behavior

Unlike the CM 1241 communication modules (which have TxD and RxD LEDs that pulse with traffic), the CB 1241 has no continuous diagnostic LEDs. The "blink once, then off" behavior is therefore expected hardware behavior and not a fault indicator. The real status is obtained from:

  1. The DONE bit of MB_COMM_LOAD.
  2. The ERROR and STATUS outputs of MB_SLAVE / MB_MASTER.
  3. The PLC tag table constant <CB1241>_RS485 (e.g., Local~CB_1241_RS485).

Use the PLC tag table → System Constants to pick the symbolic name instead of a hard-coded hardware identifier such as 269. Hard-coded IDs frequently survive a hardware reconfiguration and silently produce 16#8280.

4. Error Code 16#8280 Root Causes

STATUS 16#8280 is defined in the TIA Portal Modbus library documentation as "Invalid port ID or Modbus instruction was started on the wrong port type." It is one of the most common startup errors and almost always maps to one of the following:

Likely cause Symptom signature Fix layer
Hard-coded PORT input (e.g., 269) instead of system constant MB_COMM_LOAD never DONE, MB_SLAVE = 8280 immediately TIA Portal blocks
MB_COMM_LOAD never run / never DONE MB_SLAVE returns 8280 on first scan PLC program
Wrong hardware identifier plugged into the project (CB vs. CM swapped) Download succeeds, runtime 8280 Device configuration
Freeport mode still active (MB_COMM_LOAD not cycled after Freeport usage) 8280 persists even with correct port Execution order
Different CPU firmware than the project Configuration download OK, but 8280 at runtime Project / firmware
CB 1241 physically absent or not seated Device view has red comparison error Hardware

5. RS485 Wiring Requirements per Siemens Manual

The CB 1241 RS485 wiring section of the S7-1200 manual collection states explicitly that termination must only be applied at the two physical end nodes of the RS485 segment. Pull TA and TB to the bus and use shielded twisted-pair cable, with the shield bonded to ground at one end minimum.

Terminal Function Connection rule
A Data + (non-inverting) To A of next node
B Data − (inverting) To B of next node
GND Reference Common ground between nodes
TA Termination A jumper Short to A only at end nodes
TB Termination B jumper Short to B only at end nodes
M Shield ground (optional) To cable shield drain
Termination trap: If the S7-1200 is wired mid-segment with TA/TB shorted, or if both end nodes are terminated while the S7-1200 sits at one end and is also terminated, the receiver sees a DC bias shift that prevents clean framing. 16#8280 may still be reported because the instruction cannot complete the first transaction and times out internally.

The on-board termination on the CB 1241 is implemented by closing jumpers TA↔A and TB↔B on the 6-pin plug. It is a 390 Ω / 220 Ω / 390 Ω divider per the Siemens reference design (effective ~120 Ω between A and B). Activate it only when the CPU is at one end of the bus; if the bus is daisy-chained through the CPU, leave it open.

6. TIA Portal Configuration of the CB 1241

  1. Open Device Configuration and verify the CB 1241 appears under the CPU signal board slot. If it is missing, drag it from the hardware catalog (Communication → Signal Boards → CB 1241 RS485).
  2. Right-click the CB 1241 → Properties → confirm the catalog order number matches the physically installed board (e.g., 6ES7241-1CH30-1XB0).
  3. Open Device View → Properties → System Constants and confirm the symbolic port name (e.g., Local~CB_1241_RS485) is visible. If it is greyed out, the project was built for a CPU that does not have a CB in the signal board slot.
  4. Compile the project (Project → Compile → Hardware and Software) and download the hardware configuration to the PLC. A red comparison error in the device view after download indicates the configured CB does not match what the CPU sees on the backplane.

7. MB_COMM_LOAD and MB_SLAVE Block Setup

Two instructions are mandatory for Modbus RTU on the CB 1241. The most common field error is calling MB_SLAVE without first calling MB_COMM_LOAD in the same cycle, or vice-versa.

7.1 MB_COMM_LOAD parameters

Input Value Notes
REQ TRUE on first scan, then one-shot on parameter change Use a rising edge
PORT Local~CB_1241_RS485 System constant, never a literal
BAUD 9600 (match Schneider default for Modbus RTU) 1200 / 2400 / 4800 / 9600 / 19200 / 38400 / 57600 / 115200
PARITY 0 = None, 1 = Even, 2 = Odd Schneider Modbus default = Even (1)
FLOW_CTRL 0 RS485 half-duplex has no flow control
RTS_ON_DLY 0 No RTS handshaking on CB
RTS_OFF_DLY 0 No RTS handshaking on CB
RESP_TO 1000 ms Increase for slow slaves
MODE 4 = Modbus RTU protocol on RS485 Mandatory for Modbus

7.2 MB_SLAVE parameters

Input Value Notes
REQ TRUE on first scan Permit one full init cycle
PORT Local~CB_1241_RS485 Must match MB_COMM_LOAD exactly
MB_ADDR 1 to 247 (slave address) Must be unique on segment
MODE 0 = slave on standard port

7.3 Execution order rules

  1. Call MB_COMM_LOAD first in OB1 and wait until DONE = TRUE or ERROR = FALSE before relying on its result.
  2. Call MB_SLAVE after MB_COMM_LOAD in the same cycle; it must not start until MB_COMM_LOAD has finished at least once.
  3. If MB_SLAVE.STATUS = 16#8280 while MB_COMM_LOAD.DONE = TRUE, the port is open but the slave cannot bind to it — re-check the symbolic port name and ensure the CB matches the catalog number.

8. Termination Resistor Strategy

Termination is not optional on RS485 — without it, reflected edges corrupt the differential signal at higher baud rates and cause framing errors. The signal board integrates the termination, but the activation is your decision.

  • If the S7-1200 is at one end of the bus (typical setup with one Schneider device): close TA and TB on the CB 1241 terminal plug, and enable the Schneider device's internal termination (often a DIP switch or jumper — consult the Modicon hardware manual).
  • If the S7-1200 is mid-bus between two end devices: leave TA/TB open on the CB and enable termination only at the two physical end nodes.
  • If only the S7-1200 and one Schneider device exist: both ends terminated, both jumpers closed.
Never close the TA/TB jumpers on more than two devices on the same bus. Three terminators load the drivers below the 32-unit fan-out limit and the bus voltage falls out of spec.

9. Diagnostics Buffer Analysis

The S7-1200 diagnostics buffer does not generate a hardware interrupt for the CB 1241 during normal serial traffic. Absence of buffer entries is expected and is not a fault indicator. What the buffer will show, and what to look for:

Buffer entry Meaning Action
"Parameter assignment error on signal board" Configured CB does not match physically installed CB Update device configuration, recompile, download
"I/O access error on output byte ..." Wrong hardware identifier used in program Replace literal with system constant
"Communication error on serial interface" Parity/baud mismatch with remote Verify configuration matches Schneider side
No CB-related entries Error is in the program layer, not the hardware Focus on MB_COMM_LOAD / MB_SLAVE

10. Step-by-Step Troubleshooting Procedure

  1. Verify the physical CB matches the project. Open Device View in TIA Portal, compare the order number against the label on the board. Mismatched order numbers (e.g., RS232 board configured but RS485 board fitted) silently produce 16#8280.
  2. Replace any literal PORT input with the system constant. Open MB_COMM_LOAD and MB_SLAVE in the program editor, click the small symbol next to the PORT input, and pick the system constant for the CB 1241. Recompile and download.
  3. Cold-restart the CPU. Stop the CPU, power-cycle, and power up again. A warm restart after a parameter change can leave the CB in an undefined state until the next STOP→RUN transition.
  4. Confirm MB_COMM_LOAD reaches DONE. Monitor the DONE bit in a watch table. If DONE stays FALSE, the port parameter is rejected — go back to step 2.
  5. Check parity and baud against the Schneider device. Default Modbus RTU on Schneider controllers is 19200 8E1 (1 start, 8 data, even parity, 1 stop). Match these on the S7-1200 side exactly.
  6. Verify RS485 wiring. Use a multimeter between A and B: with all nodes powered, you should read approximately 60 to 120 Ω across the segment with both terminators engaged, or ~600 Ω with none. Anything outside this range suggests a missing or double termination.
  7. Isolate the bus. Disconnect the Schneider device, terminate the S7-1200 end, and run a single-node loopback test (connect A↔A and B↔B at the remote end, or use a freeport loopback). If MB_SLAVE now reports DONE without error, the wiring or remote device is at fault, not the CB.
  8. Re-engage the Schneider device with correct termination. Reconnect, ensure termination only at end nodes, and observe MB_SLAVE.STATUS dropping to 0.

11. Verification Checklist

  • Device view shows green check on the CB 1241 entry after download.
  • MB_COMM_LOAD.DONE = TRUE within one scan of REQ rising edge.
  • MB_COMM_LOAD.ERROR = FALSE and STATUS = 16#0000.
  • MB_SLAVE.ERROR = FALSE.
  • Modbus poll from the Schneider master reads the configured holding registers (e.g., MW100..MW110).
  • Wiring resistance A↔B between 60 Ω and 120 Ω with both terminators active.
  • Diagnostics buffer contains no new error entries after 10 minutes of traffic.

12. Troubleshooting Matrix

Symptom First check Second check Third check
Single green blink, then dark Normal self-test, ignore — —
MB_COMM_LOAD never DONE PORT literal vs. system constant Catalog match in device view CPU firmware / project version
MB_SLAVE = 16#8280 immediately PORT literal vs. system constant MB_COMM_LOAD DONE state Hardware catalog mismatch
MB_SLAVE = 16#0000 but no response from remote Termination A/B polarity Schneider parity/baud
Intermittent timeout 16#80C8 GND reference between nodes Cable shield bonding Bus length < 1200 m
All retries fail, slave silent Wrong slave address MB_ADDR overlap RS485 A/B reversed

FAQ

Why does the CB 1241 LED blink once at power-up and then go off?

The single green pulse is the CPU's self-test acknowledging that the signal board is detected on the backplane. The CB 1241 has no continuous diagnostic LEDs; runtime status must be read from MB_COMM_LOAD.DONE and MB_SLAVE.STATUS instead.

What does Modbus error 16#8280 mean on an S7-1200 MB_SLAVE block?

STATUS 16#8280 indicates an invalid PORT input or that Modbus was started on the wrong port type. Replace any hard-coded hardware identifier with the PLC tag table's system constant for the CB 1241 (for example Local~CB_1241_RS485) and recompile.

Does the S7-1200 CB 1241 need a termination resistor?

Yes — RS485 requires termination at the two physical end nodes only. The CB 1241 provides built-in termination via the TA and TB jumpers on its removable plug; close them only when the CPU is at one end of the segment, and never on more than two devices on the same bus.

Why is the diagnostics buffer empty for the CB 1241?

The CB 1241 signal board does not generate diagnostic interrupts for serial traffic events. Empty buffer entries are normal. Buffer entries that do appear relate to parameter assignment errors, I/O access errors, or hardware mismatches — not to Modbus transaction failures.

How do I match Modbus RTU settings between the S7-1200 CB 1241 and a Schneider Modicon PLC?

Set MB_COMM_LOAD to MODE 4, BAUD 19200, PARITY 1 (even), FLOW_CTRL 0, and RESP_TO 1000 ms. Configure the Schneider device with identical baud, even parity, 8 data bits, and 1 stop bit (8E1). The MB_ADDR on MB_SLAVE must be unique within 1 to 247 on the segment.

Back to blog