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.
| 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.
| 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 |
| 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 Two-Wire Configuration Procedure
- 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.
- Set jumpers for RS485 (refer to the silk-screen on the module; on revision 4 the silk-screen reads 485).
- Wire the bus as 2-wire twisted pair, characteristic impedance ≈ 120 Ω, terminated at both ends with 120 Ω across A-B.
- Bond the shield on one end only (typically the cabinet entry) to protective earth (PE).
- 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:
| 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.
| 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.
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)
- 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.
- Buffer the function code, the data bytes, and the trailing 16-bit CRC (Modbus RTU CRC, poly 0xA001, init 0xFFFF, low byte first).
- 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.
- 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.
- 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
| 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:
| 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.
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.
- 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.
- Open the module's properties. Set the interface type (RS232C / RS422 / RS485) under the Interface tab; this must match the hardware jumper position.
- 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.
- 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.
- 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.
- 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.
| 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:
| 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.
| 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.
| 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 |
Commissioning Checklist and Verification
- Set the hardware jumpers for the required electrical standard before powering the rack.
- Configure HW Config: interface type, protocol, baud, parity, data bits, stop bits, start/end characters (or none for Modbus-emulation).
- Wire RS485 with 120 Ω termination at both physical ends; verify the shield is bonded to PE at one end only.
- Power the rack; confirm the SF LED is off. Read the diagnostic buffer; it should be empty after a clean start.
- 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.
- From the PC, send a known string back; verify it lands in the configured receive DB and the P_RCV STATUS is 0.
- 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.
- 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
| 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.