Problem Overview
The SIMATIC CM 1241 (RS422/485) communication module is designed to attach a S7-1200 CPU to a half-duplex RS485 bus or a full-duplex RS422 point-to-point link. When a third-party device exposes only an RS232 interface, integrators frequently insert a passive or active RS232-to-RS485 converter between the device and the CM 1241, expecting the RCV_PTP instruction to read the same payload it does on a CM 1241 (RS232) module. The symptom is a silent receive buffer, no characters decoded, and the load cell or indicator transmitting valid frames that the S7-1200 never acknowledges.
Two distinct root causes are observed in the field:
- RS232 cable polarity — straight cables used where crossover (null-modem) cables are required on both sides of the converter.
- RS232-to-RS485 converter drive — the converter cannot determine when to release the RS485 bus because the RS232 control lines (RTS, CTS, DTR, DSR) are not asserted, and no timing parameter is configured in TIA Portal.
Both issues produce the same observable symptom: RCV_PTP reports no error and the LEN output remains 0, or the CM 1241 raises diagnostic event 8200 ("Port is busy processing a transmit request") when an attempt is made to switch directions on the bus.
CM 1241 (RS422/485) Hardware Specification
The CM 1241 (RS422/485) is a 9-pin sub-D female DCE that can be parameterized in TIA Portal for RS422 four-wire full-duplex or RS485 two-wire half-duplex operation. Electrical and protocol limits per the S7-1200 Programmable Controller System Manual are summarized below.
| Parameter | Value |
|---|---|
| Connector | 9-pin sub-D female |
| Electrical standard | RS422 (TIA/EIA-422) or RS485 (TIA/EIA-485), software-selectable |
| Modes | RS485 two-wire half-duplex; RS422 four-wire full-duplex |
| Common-mode voltage range | -7 V to +12 V, 1 second transient; ±3 V RMS continuous |
| Maximum cable length | 1 000 m (RS485, 9 600 bit/s and below, terminated) |
| Baud rate range | 300 bit/s to 115 200 bit/s |
| Maximum number of nodes | 32 standard loads (RS485 multi-drop) |
| Supported parity | None, Even, Odd, Mark, Space |
| Data bits per character | 7 or 8 |
| Stop bits | 1 or 2 |
| Flow control | None, XON/XOFF, RTS/CTS (RS422 only — see section 4) |
| Module firmware | V1.0 (legacy), V2.0 and later (current) |
The full specification page is published in the TIA Portal online documentation at CM 1241 RS422/485 Specifications. Refer to the S7-1200 Programmable Controller System Manual for the absolute maximum ratings, including ±25 V DC fault tolerance on signal pins when the module is unpowered.
Root Cause: Cable Polarity Between DTE and DCE
An RS232 port is a DTE (Data Terminal Equipment) interface, and a Siemens CM 1241 is also implemented as a DTE in RS232 terms. Two DTEs connected back-to-back must have TXD crossed to RXD, RTS crossed to CTS, and DTR/DSR crossed on the opposing side. A "straight-through" cable connects pin 2 to pin 2 and pin 3 to pin 3, which works between a DTE and a DCE (modem) but fails between two DTEs. The same rule applies when a converter is inserted:
The most common field error is using straight cables on both segments: load cell to converter, and converter to CM 1241 (RS422/485). On the RS422/485 module the RS232-style pin numbering for the converter side is the same: TXD on the converter must arrive at RXD of the module, and vice versa. If only one segment is crossed, the converter will see the load cell's TX but the CM 1241 will not see the converter's TX, and the user observes "only Tx flashing, nothing to receive." This was the root cause in the original incident: both cables were straight; converting them to crossover (null-modem) wiring resolved the issue.
Pinout Reference for the 9-Pin Sub-D
| Pin | RS232 Signal | RS422/485 Direction | Notes |
|---|---|---|---|
| 1 | DCD / not used | — | Not connected on CM 1241 |
| 2 | RXD (input to DTE) | RS422 RXD+ / RS485 not used in 2W | Receive data to CPU |
| 3 | TXD (output from DTE) | RS422 TXD+ / RS485 Data+ (T/R+) | Transmit data from CPU |
| 4 | DTR / not used | — | Reserved |
| 5 | Signal ground | Signal ground | Mandatory reference |
| 6 | DSR / not used | — | Reserved |
| 7 | RTS (output from DTE) | RS422 RTS+ / RS485 not used in 2W | Handshake out |
| 8 | CTS (input to DTE) | RS422 CTS+ / RS485 not used in 2W | Handshake in |
| 9 | RI / not used | RS422 RXD- / RS485 not used in 2W | Differential return for RXD |
In RS485 two-wire mode, only pins 3 (Data+ / T/R+), 8 (Data- / T/R-) and 5 (ground) carry payload. Some legacy converters tie TX and RX to the same pair internally; if the converter exposes a "T+, T-, R+, R-" terminal block, the integrator must short T+ to R+ and T- to R- on the CM 1241 side to build a true two-wire bus.
RS232 to RS485 Converter Operating Modes
Two converter architectures dominate the market, and choosing the wrong one is the second most common field defect.
Auto-Sensing (Snooping) Converters
These converters monitor the RS232 TXD line for the start bit of a character. When the start bit is detected, the converter enables its RS485 transmitter and re-transmits the byte onto the bus. When the stop bit is observed, the converter disables its transmitter and switches the bus back to receive. No configuration is required on the S7-1200 side beyond enabling half-duplex and matching the baud rate.
This is the architecture that "just works" for a load cell that never expects to receive. The trade-off is that the converter introduces a one-character turn-around delay and is sensitive to noise on the RS232 TX line: false start bits or break conditions will be re-broadcast as bus errors. Slew-rate-limited RS485 drivers (16 ns or 24 ns typical) are required to avoid reflections; check the converter datasheet.
RTS-Controlled (Hardware Handshake) Converters
These converters ignore the RS232 data lines entirely. The RS485 transmitter is enabled only while an RS232 control line (typically RTS, sometimes DTR) is asserted. The S7-1200 application must raise RTS, transmit, and lower RTS in a strict sequence. On the CM 1241 (RS422/485), the equivalent functionality is exposed through the Automatic use of the RS232C signals check-box and the Time to RTS off / Data Output Waiting Time parameters, even though physically no RS232 signals exist on the bus — TIA Portal reuses the same parameter block for the RS485 mode.
| Parameter | Default | Field-proven range | Function |
|---|---|---|---|
| Time to RTS off | 500 ms | 10 ms – 2 000 ms | Delay after the last transmitted character before the module drops RTS. Must be longer than the converter's bus release time. |
| Data Output Waiting Time | 0 ms | 0 – 60 000 ms | Inter-frame gap inserted between successive transmit operations; prevents back-to-back bursts that overrun the converter's transmit FIFO. |
| Automatic use of the RS232C signals | Disabled | — | Master switch that allows the firmware to drive RTS/CTS internally without user ladder logic. |
TIA Portal Configuration for Half-Duplex RS485
Configure the CM 1241 (RS422/485) in the device view of TIA Portal V15 or later. The Port Configuration group contains both the physical interface and the protocol framing.
- In the project tree, open Devices & Networks and select the CM 1241 (RS422/485).
- Open Properties > Port Configuration.
- Set Transmission mode to Half duplex (RS485), two-wire operation.
- Match Baud rate, Parity, Data bits, and Stop bits to the load cell (typically 9 600 / N / 8 / 1 for weight indicators).
- Enable Automatic use of the RS232C signals if the converter is RTS-controlled.
- Set Time to RTS off to a value greater than the converter's worst-case bus release time. A safe starting point for 9 600 bit/s is 50 ms; raise to 200 ms if the converter datasheet is silent.
- Set Data Output Waiting Time to the inter-frame delay expected by the load cell protocol (for continuous-stream load cells this can remain 0).
- If the bus is physically long (> 10 m) or runs near VFD cabling, enable the integrated termination resistor via the hardware switch on the back of the module, or place a 120 Ω resistor across the data pair at the far end of the segment.
- Compile the hardware configuration and download to the CPU.
The configuration interface, including the receive buffer section that became available with module firmware V2, is documented at Configuring the Communication Module in the SIMATIC S7-1200 Manual Collection.
Receive Buffer and RCV_PTP Diagnostics
The RCV_PTP instruction (FB / FC, library Point-to-Point Communication) reads characters from the receive buffer and assembles them into a message based on the configured start and end delimiters. Diagnostic visibility differs sharply between module firmware generations.
| CM 1241 (RS422/485) firmware | Receive buffer in TIA Portal | RCV_PTP behavior |
|---|---|---|
| V1.0 | Not exposed | Application must poll LEN and use STATUS word; receive buffer overflows are silent. |
| V2.0 and later | Exposed under Port Configuration > Receive buffer | Application can clear the buffer in software; STATUS word reports 0x0001 on overflow. |
A typical RCV_PTP call uses the following inputs:
BUFFER := DB_LOADCELL.ReceiveBuffer
LEN := 0
ENQ_EN := FALSE
ENQ := 16#05
EOI := FALSE
TERM_CNT := 1
TERM_EN := TRUE
TERM_1 := 16#0D
TERM_2 := 16#0A
If the bus is silent, RCV_PTP.DONE never becomes TRUE and STATUS returns 16#0000. This is the signature of a wiring fault, not a protocol fault. The diagnostic step is to put an oscilloscope on the RS485 data pair and verify that the converter is actually releasing the bus. If the line is held continuously low (Mark) by the converter, the converter is failing to release its driver; the fix is RTS handshaking or a different converter.
Error Code 8200: Port Busy
Diagnostic event 8200 ("Port is busy processing a transmit request") is raised by the CM 1241 (RS422/485) when SEND_PTP or RCV_PTP is called while a previous request is still pending, or when the module cannot resolve the direction of the half-duplex bus within the configured turn-around window.
| Status word | Meaning | Recommended action |
|---|---|---|
| 16#8200 | Port busy — overlapping request or bus direction conflict | Serialize PTP calls; raise Time to RTS off by 50–100 ms; verify the converter releases the bus before SEND_PTP is retriggered. |
| 16#80A0 | Parity error | Match the load cell parity setting in the port configuration. |
| 16#80A1 | Framing error | Verify stop bits and baud rate match on both ends. |
| 16#80A2 | Overrun error | Lower baud rate or disable XON/XOFF if the receiver cannot keep up. |
| 16#80B0 | Buffer overflow | Increase inter-character timeout, or call RCV_PTP more frequently to drain the buffer. |
| 16#80C0 | Frame length exceeded | Reduce the maximum message length or split into multiple frames. |
For a half-duplex link with a slow converter, 8200 is almost always a turn-around timing problem. Increase Time to RTS off until the error disappears, then back off by 20 % to leave margin for bus capacitance on long runs.
Step-by-Step Verification Procedure
- Validate the load cell RS232 output with a laptop. Use a generic USB-to-RS232 adapter and a terminal program set to the documented baud rate. Confirm the load cell is transmitting a stable, repeating message terminated by the documented delimiter (typically CR/LF).
-
Test the CM 1241 (RS232) baseline. Connect the load cell directly to the CM 1241 (RS232) using a crossover cable. Verify that
RCV_PTPreturnsDONE = TRUEand that the receive buffer contains the expected number of bytes. This proves the load cell and the S7-1200 application are functional. - Insert the converter between the load cell and the CM 1241 (RS422/485) module. Use a crossover (null-modem) cable on both sides of the converter. Confirm with a multimeter that pin 2 on each connector carries the receive signal of the device at the other end.
- Power the converter. Verify the converter's power LED is on. If port-powered, ensure the upstream device asserts DTR/RTS. If externally powered, confirm the supply voltage is within the converter's specification (typically 5 V DC or 9–24 V DC).
- Configure TIA Portal. Select half-duplex RS485, match baud rate, parity, data bits, stop bits. Enable the integrated termination if the bus is at the end of a segment. Enable Automatic use of the RS232C signals if the converter requires RTS to enable its driver.
-
Trigger
RCV_PTPin a watchdog or cyclic OB. Observe the DONE, ERROR, and STATUS outputs. If DONE never asserts, place a scope on the RS485 pair and verify differential voltage swings of at least ±200 mV during the converter's active window. - Resolve 8200 errors. If STATUS returns 16#8200, increment Time to RTS off in 50 ms steps until the error clears. Confirm with a scope that the converter releases the bus (line goes to Mark) before the next request.
- Long-term soak test. Run the link for at least 24 hours under full traffic. Capture all STATUS codes in a log DB and verify zero 8200, 80B0, or 80C0 events.
Troubleshooting Matrix
| Symptom | First Check | Second Check | Likely Fix |
|---|---|---|---|
| LED Tx flashes, LED Rx dark, RCV_PTP never DONE | Continuity of TX pair with multimeter | Pinout — is pin 2 connected to pin 3 across both cables? | Replace both RS232 cables with crossover (null-modem) cables |
| Tx flashes briefly, then 8200 status | Is the converter still holding the bus? | Scope the RS485 pair for residual drive | Enable Automatic use of the RS232C signals and increase Time to RTS off |
| Converter LED off, no bus activity | Is the converter port-powered? | Does the DTE drive DTR/RTS high? | Switch to an externally powered converter or wire 5/24 V to its power input |
| Garbled characters, parity errors (80A0) | Baud rate on the load cell | Parity and stop bit setting | Match TIA Portal to the load cell documentation exactly |
| Buffer overflow (80B0) under load | RCV_PTP call frequency in the user program | Inter-character timeout in port config | Drain the buffer cyclically; raise inter-character timeout to the load cell's worst-case frame gap |
| Works on CM 1241 (RS232), fails on CM 1241 (RS422/485) | Module firmware version (V1.0 vs V2.x) | Port configuration downloaded to PLC | Upgrade to module firmware V2 or higher; re-download hardware config |
| Intermittent works/doesn't, especially near VFDs | Cable shield grounded at one end only? | RS485 termination at both ends? | Use twisted-pair shielded cable, ground shield at CPU end, add 120 Ω termination at both ends |
Best-Practice Cable Construction
When fabricating the RS232 cables by hand, the rule of thumb is that the cable entering and leaving the converter must both implement the null-modem crossover. A field-tested crossover for a 9-pin sub-D to 9-pin sub-D is:
2 <---> 3 (RXD <---> TXD)
3 <---> 2 (TXD <---> RXD)
4 <---> 6 (DTR <---> DSR)
5 <---> 5 (Signal ground)
7 <---> 8 (RTS <---> CTS)
8 <---> 7 (CTS <---> RTS)
For the RS422/485 side, follow the Siemens wiring diagram in the S7-1200 System Manual, Chapter "Communication interfaces":
Pin 3 (T/R+ on CM 1241) <---> Data+ on converter
Pin 8 (T/R- on CM 1241) <---> Data- on converter
Pin 5 (GND) <---> Ground on converter
120 Ω termination across pins 3 and 8 at the far end of the segment (last node only)
Frequently Asked Questions
Why does my load cell work on the CM 1241 (RS232) but not on the CM 1241 (RS422/485) when both modules are configured identically?
The most common reason is cable polarity. The CM 1241 (RS232) and the load cell are both DTE, but the crossover is being done on different segments when the converter is inserted. Both RS232 cables — load cell to converter, and converter to CM 1241 — must be wired as null-modem (TXD crossed to RXD). Replace the straight cables with crossover cables on both sides.
Do I need a different function block for the CM 1241 (RS422/485) compared to the RS232 module?
No. The same RCV_PTP, SEND_PTP, and SGN_PTP instructions from the "Point-to-Point Communication" library work on both modules. The differences are in the port configuration (half-duplex vs full-duplex, RTS-controlled turn-around) and in the diagnostic receive buffer that is only available on module firmware V2 and later.
My converter has no RTS pin. How do I enable its driver?
Use a converter that auto-snoops the TXD line. These converters detect the start bit of any character on the RS232 side and assert their RS485 driver for the duration of the stop bit. They require no RTS connection and no TIA Portal timing parameters. The trade-off is a one-character turn-around delay and sensitivity to noise on the RS232 line.
STATUS returns 16#8200 ("Port is busy") every time SEND_PTP is called. What should I change?
Increase the "Time to RTS off" parameter in the CM 1241 port configuration. The default of 500 ms is conservative, but slow converters can require 50–200 ms. Increment in 50 ms steps and confirm with an oscilloscope that the RS485 line returns to Mark state before the next request is issued. Serialize SEND_PTP and RCV_PTP calls — never call both in the same OB cycle.
Is a port-powered converter safe to use with the CM 1241 (RS422/485) module?
Generally no. Port-powered converters draw operating current from the DTR and/or RTS lines of the upstream RS232 port. In RS485 two-wire mode, the CM 1241 does not drive DTR/RTS in the same way, so the converter will fail to power up. Use a converter with an external 5 V DC or 9–24 V DC supply, and connect the supply to a free 24 V terminal on the S7-1200 backplane.