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.
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:
- The
DONEbit ofMB_COMM_LOAD. - The
ERRORandSTATUSoutputs ofMB_SLAVE/MB_MASTER. - 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 |
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
- 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).
- Right-click the CB 1241 → Properties → confirm the catalog order number matches the physically installed board (e.g., 6ES7241-1CH30-1XB0).
- 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. - 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
- Call
MB_COMM_LOADfirst in OB1 and wait untilDONE = TRUEorERROR = FALSEbefore relying on its result. - Call
MB_SLAVEafter MB_COMM_LOAD in the same cycle; it must not start until MB_COMM_LOAD has finished at least once. - If
MB_SLAVE.STATUS= 16#8280 whileMB_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.
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
- 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.
- 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.
- 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.
-
Confirm MB_COMM_LOAD reaches DONE. Monitor the
DONEbit in a watch table. If DONE stays FALSE, the port parameter is rejected — go back to step 2. - 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.
- 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.
- 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.
- 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.