CP441-1 Modbus RTU Slave over RS485: Capabilities and Limits

David Krause17 min read
S7-400SiemensTechnical Reference
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

CP 441-1 Hardware Identification and Variants

The CP 441-1 is the single-channel, firmware-fixed point-to-point communication processor for the SIMATIC S7-400 family. It plugs into a single slot of an S7-400 central rack (CR) or expansion rack (ER/UR) and provides the CPU 41x with one serial interface to a field device. Siemens positions the module as the cost-reduced, limited-feature variant of the CP 441-2: a basic PtP module for the built-in drivers (ASCII, 3964, 3964R, RK512), not for the open, loadable-driver installations of the larger module.

Common CP 441-1 ordering data (verify against current Siemens catalog)
MLFB HW rev. Function Lifecycle
6ES7441-1AA02-0AE0 2 CP 441-1, 1 serial interface Phased out
6ES7441-1AA03-0AE0 3 CP 441-1, 1 serial interface Spare-part supply
6ES7441-1AA04-0AE0 4 CP 441-1, 1 serial interface Current (verify)

Confirm the active MLFB against the Siemens Industry Mall or the S7-400 module catalog before procurement. Older revisions are subject to phase-out and reduced spare-part availability. For documentation, search the Siemens Industry Online Support at support.industry.siemens.com for the manual entry SIMATIC S7-400 Point-to-point connection CP 441 Installation and Parameter Assignment.

Module Architecture Summary

  • One configurable serial port: RS232C, RS422 (4-wire full-duplex), or RS485 (2-wire half-duplex)
  • Internal protocol firmware for ASCII, 3964, 3964R, and RK512 (master/slave)
  • No socket for loadable drivers; the firmware cannot be extended by Modbus, USS, or third-party drivers
  • Communication to the CPU is via the S7-400 backplane using the standard PII/PIQ I/O image area
  • One 9-pin sub-D male connector at the front panel for the serial line

Physical Interfaces: RS232C, RS422, RS485

The front-panel connector is a 9-pin sub-D (DB-9M). The electrical standard is selected by a hardware jumper block on the module and is mirrored in the STEP 7 hardware configuration. The same connector pinout is used for all three electrical standards; only the jumpers and the configuration change.

DB-9 pin assignment for RS232C mode (reference)
Pin Signal Direction Function
2 RxD Input Received Data
3 TxD Output Transmitted Data
5 GND — Signal ground
7 RTS Output Request To Send
8 CTS Input Clear To Send
1, 4, 6, 9 — — Not used in RS232C
DB-9 pin assignment in RS485 (2-wire) mode
Pin Signal Direction Function
3 Data A (D−) Bidirectional RS485 line A / D−
8 Data B (D+) Bidirectional RS485 line B / D+
5 GND — Signal ground (recommended)
1, 4, 6, 7, 9 — — 120 Ω termination across A-B at the line ends only
RS485 termination: termination resistors must be installed only at the two physical line ends. The CP 441-1 does not include an internal fail-safe bias on the RS485 lines; in the field, many integrators add a 680 Ω pull-up to +5 V on B and a 680 Ω pull-down to GND on A at the master, with 120 Ω across the pair at both ends. Verify with the Siemens manual for your specific hardware revision.

RS485 Two-Wire Configuration Procedure

  1. Power off the S7-400 rack. The jumper block on the CP 441-1 selects the electrical standard; on older revisions, it is a 6-position jumper strip (S1) on the module's left side.
  2. Set jumpers for RS485 (refer to the silk-screen on the module; on revision 4 the silk-screen reads 485).
  3. Wire the bus as 2-wire twisted pair, characteristic impedance ≈ 120 Ω, terminated at both ends with 120 Ω across A-B.
  4. Bond the shield on one end only (typically the cabinet entry) to protective earth (PE).
  5. Power the rack and configure the module in STEP 7 (HW Config) - see the configuration section below.

Native Protocol Stack and Why It Matters

The CP 441-1 carries its protocol firmware in on-board ROM. The four built-in drivers are:

CP 441-1 native drivers
Driver Duplex Use Frame delimiter
ASCII Both Free-form character protocol with user-defined start/stop characters User-defined (1 or 2 chars)
3964 Full Siemens proprietary, no block check STX/ETX (no BCC)
3964R Full Siemens proprietary, with block check character STX/ETX + BCC
RK512 Full Siemens RK512 computer-link protocol (master/slave) STX/ETX + length + addresses

These four are the only drivers the CP 441-1 will ever run. There is no firmware update mechanism that adds new drivers and no loadable-driver socket. If the remote device does not speak ASCII, 3964, 3964R, or RK512, the CP 441-1 cannot talk to it without custom code on the S7-400 CPU side that implements the missing protocol on top of the free-form ASCII driver.

Modbus RTU Master/Slave Support Matrix

The question most often asked of the CP 441-1 is whether it can serve as a Modbus RTU master or slave. The direct answer is no. The Modbus protocol stack is delivered as a loadable driver (DLL on the module's flash file system), and that delivery mechanism exists only on the CP 441-2 and the CP 341 - not on the CP 441-1.

Loadable driver availability across PtP modules
Module MLFB family Loadable drivers Modbus RTU master/slave
CP 340 6ES7340-... No No
CP 341 6ES7341-1AH0?-0AE0 Yes (Modbus, USS, etc.) Yes (loadable driver)
CP 441-1 6ES7441-1AA0?-0AE0 No No
CP 441-2 6ES7441-2AA0?-0AE0 Yes (Modbus, USS, etc.) Yes (loadable driver)

This is a hardware-and-firmware constraint, not a configuration choice. The CP 441-1 firmware does not contain the Modbus state machine, the CRC-16 polynomial (0xA001), or the 3.5-character inter-frame silence timer. The module can drive the physical RS485 line, but it cannot impose Modbus semantics on the bytes that flow over it.

Field-proven caveat: The CP 441-1 will not refuse to transmit user-supplied bytes over RS485; from the physical layer's point of view, the bus is happy. What fails is the application layer. Expect subtle bug reports months after commissioning when timing edge cases (inter-frame silences, half-duplex turnaround, broadcast addressing) reveal that the protocol semantics are not being enforced by the module.

Workaround: Free ASCII Driver with Custom Modbus FB

There is a workable path: use the CP 441-1's free-form ASCII driver and implement the Modbus RTU state machine in the S7-400 CPU using the function blocks (FBs) supplied for ASCII transmission and reception. The work is non-trivial and is a real engineering project, not a configuration change.

Protocol State Machine (CPU-side)

  1. On the first byte received after > 3.5 character times of silence, decode the slave address. If the address matches the local station, claim the frame; otherwise reset the receiver.
  2. Buffer the function code, the data bytes, and the trailing 16-bit CRC (Modbus RTU CRC, poly 0xA001, init 0xFFFF, low byte first).
  3. Validate the CRC over the entire frame. If it fails, drop the frame silently; the master's timeout will handle the retry per Modbus spec.
  4. Build the response frame, prepend the address, append the CRC, and hand it to the CP via the SEND FB. Use the ASCII driver's option to monitor CTS during transmit to drive the half-duplex turnaround.
  5. Implement function codes 01, 02, 03, 04, 05, 06, 15, 16 at minimum for holding and input registers and coils. Add exception codes 01, 02, 03 for illegal function, illegal address, illegal data value.

ASCII Driver Configuration on the CP 441-1

Recommended ASCII driver parameters for Modbus RTU slave emulation
Parameter Value Reason
Baud 9600 / 19200 / etc. Match master
Data bits 8 Modbus RTU is 8-N-1 or 8-E-1
Parity None or Even Match master
Stop bits 1 Modbus RTU
Start-of-frame character None (use silence timer) Modbus RTU uses silence, not a char
End-of-frame character None (use silence timer) Modbus RTU uses silence, not a char
Silence timer (1.5 / 3.5 char) Disabled in CP, emulated in CPU CP 441-1 ASCII has no Modbus silence timer
Flow control None for RS485, or hardware RTS-CTS if using 4-wire RS485 uses driver enable, not RTS

The biggest practical issue with the ASCII driver for Modbus is the absence of a built-in 1.5 / 3.5 character silence timer. The CP 441-1 ASCII driver waits for user-supplied start and end characters, not for line silence. The CPU must therefore implement a free-running timer interrupt (e.g., OB35 at 100 ms) and measure the inter-byte interval itself, declaring a frame end when 3.5 character times have passed without a new byte. The math: at 19200 baud with 11 bit-times per byte (1 start, 8 data, 1 parity-or-stop, 1 stop), 1 character time ≈ 0.52 ms, so 3.5 char ≈ 1.83 ms.

ST Code Skeleton: Modbus RTU Frame Validator (CPU-side)

// Pseudo-code: validate incoming Modbus RTU frame
// Inputs:  pFrame : POINTER TO BYTE
//          uLen   : UINT  (received length, includes CRC)
// Output:  bOk    : BOOL  (TRUE = CRC valid)

FUNCTION_BLOCK fbModbusCrcCheck
VAR
  crc    : WORD := 16#FFFF;
  i      : UINT;
  lowBit : BOOL;
END_VAR

FOR i := 0 TO uLen-1-2 DO          // exclude last 2 bytes (CRC)
  crc := crc XOR pFrame[i];
  FOR bit := 0 TO 7 DO
    lowBit := (crc AND 16#0001) <> 0;
    crc := SHR(crc, 1);
    IF lowBit THEN crc := crc XOR 16#A001; END_IF;
  END_FOR;
END_FOR;

// Compare low byte first (Modbus RTU wire order)
IF (crc AND 16#00FF) = pFrame[uLen-2]
   AND (SHR(crc, 8) AND 16#00FF) = pFrame[uLen-1] THEN
  bOk := TRUE;
ELSE
  bOk := FALSE;
END_IF;

Migration Path to CP 441-2 (Native Modbus Support)

When the protocol, response time, and engineering budget make the custom-FB route uneconomical, the correct action is to swap the CP 441-1 for a CP 441-2. The slot, backplane interface, and STEP 7 project structure remain identical. The differences the engineer must plan for are:

Migration deltas when replacing CP 441-1 with CP 441-2
Item CP 441-1 CP 441-2 Migration impact
Serial interfaces 1 2 Existing wiring stays on interface 1; interface 2 free
Driver concept Built-in ROM Built-in + loadable drivers on the module Loadable driver Modbus Master or Modbus Slave must be installed and licensed (license on the module is supplied with the driver)
STEP 7 V5.x HW Config entry, standard HW Config entry, standard Project edit: delete old module, insert CP 441-2, accept default address
TIA Portal Supported via HSP Supported via HSP Module replacement is transparent in TIA Portal
Application FBs FB P_SND, FB P_RCV, FB P_PRINT FB P_SND, FB P_RCV, FB P_PRINT + Modbus master/slave FBs from the loadable driver CPU code that called P_SND/P_RCV unchanged; new Modbus FBs added
DB for receive data User-defined, any DB User-defined, any DB Unchanged
Cost Lower Higher Approx. 2.5–3× the CP 441-1

Use the Siemens Modbus Master and Modbus Slave loadable drivers (search the Siemens Industry Online Support at support.industry.siemens.com for the current driver article number) to add native Modbus RTU support. The license key for the driver is delivered with the package; the driver itself is installed into the module's file system via the CP 441-2's web interface or via STEP 7.

Pin-compatible replacement: The CP 441-1 and CP 441-2 share the S7-400 slot, the backplane connector, and the DB-9 front-panel geometry. Wiring changes are not required when swapping one for the other, provided the same physical interface (RS232C / RS422 / RS485) is in use.

STEP 7 Hardware Configuration

Configure the CP 441-1 in HW Config so the engineering tool knows the protocol driver, the baud rate, and the start-of-receive / end-of-receive semantics. The procedure below applies to STEP 7 V5.5; TIA Portal HSP workflows differ slightly but expose the same parameters.

  1. In SIMATIC Manager, open the S7-400 station. In HW Config, drag the CP 441-1 from the hardware catalog (SIMATIC 400 > CP-400 > PtP) into the slot it physically occupies.
  2. Open the module's properties. Set the interface type (RS232C / RS422 / RS485) under the Interface tab; this must match the hardware jumper position.
  3. Under the Protocol tab, select ASCII driver (or 3964, 3964R, RK512). The Modbus Master and Modbus Slave entries are greyed out for the CP 441-1.
  4. Set baud, parity, data bits, stop bits, the start-of-receive character (optional), and the end-of-receive character (optional). For Modbus-emulation work, set both start and end characters to none and rely on the silence timer implemented in the CPU.
  5. Under Diagnostics, enable the diagnostic buffer entries. These buffer entries are what STEP 7's Module Information (online > module information > diagnostic buffer) reads back when troubleshooting.
  6. Compile and download the HW Config. Restart the CPU if prompted.

Programming Interface: FBs, Status Words, and Error Codes

Application programs on the S7-400 CPU exchange data with the CP 441-1 using three function blocks from the Standard Library > Communication Blocks package. These FBs ship with STEP 7 V5.x and do not require a license.

Function blocks for CP 441-1 in STEP 7
FB Name Purpose Trigger
FB 8 P_SND Send data to the serial port Edge on REQ
FB 7 P_RCV Receive data from the serial port Cyclic call, EN = TRUE
FB 9 P_PRINT Print ASCII strings to a printer on the port Edge on REQ

Status Word (STATUS) Bits

Both P_SND and P_RCV return a STATUS word. The most relevant values for RS485 half-duplex and Modbus-emulation work are:

Common STATUS values for FB P_SND / P_RCV
STATUS (hex) Meaning Action
0000 No error Proceed
0F01 / 0F02 FB is busy with a prior job Re-call later
0F05 / 0F06 Send buffer / receive buffer not parameterized Check LADDR, DB, SD_i / RD_i
0F08 Parity / framing / overrun error on receive Check baud, parity, line quality
0F0A Receiver abort - end char missing or timeout Check end-of-frame char, line idle
0F0B Character timeout (silence > configured) Increase silence or fix master pacing
0F0F / 0F10 CTS dropped during transmit Check RS485 driver enable, 4-wire wiring
0F31 Hardware fault on the CP Check SF LED; pull and reseat module

These status codes are documented in the CP 441 installation and parameter assignment manual and are the primary field-debugging handle when an integration with a third-party device fails.

Diagnostic LEDs, Buffer, and Error Codes

The CP 441-1 front panel carries a small set of status LEDs. The SF (group error) LED is the only one to monitor during commissioning; on later hardware revisions the panel also shows per-port TX/RX activity. The diagnostic buffer is the authoritative source for time-stamped events; it is read with STEP 7's online Module Information tool.

Diagnostic indicators
Indicator State Meaning
SF (red) On Group error; read out diagnostic buffer
SF (red) Flashing Module is in startup or has lost rack configuration
TX / RX activity Blink Line activity
Diagnostic buffer STEP 7: online > module information > diagnostic buffer Event-driven, time-stamped

When the SF LED is lit, open the online diagnostic buffer first. Common events include RS485 framing error, no CTS for > x ms, and buffer overflow - each is timestamped and points to the line, not the application.

Timing, Throughput, and Buffer Constraints

Engineers forget the buffer limits. The CP 441-1 has fixed-size send and receive buffers; exceeding them drops characters without raising an application error.

CP 441-1 buffer and timing limits
Parameter Value Notes
Send buffer (max SD_LEN per FB call) ≤ 1024 bytes per job Multiple jobs allowed back-to-back
Receive buffer (per job) ≤ 1024 bytes Frame larger than buffer is truncated; FB returns STATUS 0F0A
Total receive buffer ≈ 4 KB Modbus RTU frame + 3.5-char silence must fit
Max baud 115.2 kbit/s on RS232C/RS422; 115.2 kbit/s on RS485 (some HW revs cap at 38.4 kbit/s) Verify against manual for the specific HW revision
Inter-byte timeout Configurable, 1 ms to 65535 ms Set to 3.5 character times for Modbus RTU
Frame turnaround (RS485) Driven by RTS or by data direction control Some masters require 1–3 char pre-delay and post-delay; add as ASCII driver idle time
RS485 turnaround: The CP 441-1 in 2-wire RS485 mode uses the on-board driver-enable signal derived from the transmitter state. The driver-enable assertion/de-assertion delay is on the order of a few hundred microseconds. If the master polls at high speed, you may need a small inter-frame gap (1–2 character times) in the CPU application to avoid losing the first byte of the response - this is a real symptom and shows up as intermittent CRC errors at the master.

Commissioning Checklist and Verification

  1. Set the hardware jumpers for the required electrical standard before powering the rack.
  2. Configure HW Config: interface type, protocol, baud, parity, data bits, stop bits, start/end characters (or none for Modbus-emulation).
  3. Wire RS485 with 120 Ω termination at both physical ends; verify the shield is bonded to PE at one end only.
  4. Power the rack; confirm the SF LED is off. Read the diagnostic buffer; it should be empty after a clean start.
  5. Run the supplied sample program (e.g., the CP 441 ASCII example project) to send a known test string to a PC running a terminal emulator.
  6. From the PC, send a known string back; verify it lands in the configured receive DB and the P_RCV STATUS is 0.
  7. For Modbus RTU slave emulation: use a Modbus master (e.g., a PC running Modbus Poll or a real master PLC) to read holding registers 40001-40010. Verify the response frame in a bus analyzer (Wireshark + RS485 tap, or a dedicated protocol sniffer) matches the spec exactly: address, function code, byte count, register values, CRC low byte first.
  8. For long-term stability, run the link for 24 h with the master polling at 100 ms and log all FB STATUS values to a data block. A non-zero STATUS repeating more than 1% of polls is a sign of line or timing trouble.

Comparison Matrix: CP 441-1 / CP 441-2 / CP 341

PtP module decision matrix for S7-300 / S7-400
Criterion CP 441-1 CP 441-2 CP 341
Host PLC S7-400 S7-400 S7-300
Number of ports 1 2 1
Electrical standards RS232C / RS422 / RS485 RS232C / RS422 / RS485 RS232C / RS422 / RS485 (variants)
Built-in drivers ASCII, 3964, 3964R, RK512 ASCII, 3964, 3964R, RK512 ASCII, 3964, 3964R
Loadable drivers No Yes Yes
Modbus RTU master / slave No (custom FB on CPU) Yes (loadable driver) Yes (loadable driver)
USS protocol No Yes (loadable driver) Yes (loadable driver)
Web / FTP diagnostics No Yes No (some variants)
STEP 7 V5.x support Yes Yes Yes
TIA Portal support Via HSP Via HSP Via HSP
Typical use Legacy ASCII or RK512 links to operator panels, scales, bar-code readers Multi-channel, mixed-protocol installations, Modbus RTU networks S7-300 nodes that need Modbus or loadable drivers

Frequently Asked Questions

Can the CP 441-1 operate as a Modbus RTU slave over RS485?

No. The CP 441-1 firmware has no Modbus driver and no socket for loadable drivers. It will physically drive an RS485 bus, but it cannot enforce Modbus RTU framing, CRC-16, or inter-frame silence. The two viable options are (a) implement the Modbus state machine in the S7-400 CPU using the free-form ASCII driver and the P_SND / P_RCV FBs, or (b) replace the module with a CP 441-2 and use the Modbus Slave loadable driver.

What is the difference between the CP 441-1 and the CP 441-2?

The CP 441-1 has a single serial interface and runs only its built-in firmware (ASCII, 3964, 3964R, RK512). The CP 441-2 has two serial interfaces and supports loadable drivers (Modbus RTU master/slave, Modbus ASCII master/slave, USS, custom DLLs). Both share the S7-400 slot and DB-9 connector geometry, so the CP 441-2 is a drop-in replacement for the CP 441-1 in most installations.

Which STEP 7 function blocks do I use to send and receive data on the CP 441-1?

Use FB P_SND (FB 8) to send, FB P_RCV (FB 7) to receive, and FB P_PRINT (FB 9) to print. They live in the Standard Library > Communication Blocks folder of STEP 7 V5.x. P_SND and P_RCV return a STATUS word whose non-zero values are the primary field-debugging handle; 0F0A, 0F0B, and 0F08 are the three most common on RS485 lines.

Can the CP 441-1 do Modbus ASCII instead of Modbus RTU?

No for the same reason. Modbus ASCII is also delivered as a loadable driver and is only available on the CP 441-2 and CP 341. The ASCII driver on the CP 441-1 is a free-form character driver with user-defined start and end characters; it is not a Modbus ASCII driver and does not include the LRC checksum, the colon framing, or the CRLF terminator expected by a Modbus ASCII master.

What is the largest Modbus RTU frame the CP 441-1 can buffer when emulating a slave via the ASCII driver?

The receive buffer on a single P_RCV call is limited to 1024 bytes; the total module receive buffer is approximately 4 KB. A Modbus RTU read of 125 holding registers is 253 bytes including the address, function code, count, register values, and CRC; this fits comfortably. A write of 123 registers is 246 bytes plus the request frame and is also fine. Push past 4 KB and the module will drop characters with STATUS 0F0A. For larger transactions, segment at the application layer and process in multiple P_RCV jobs.

Back to blog