Overview of the CP 343-1 Family
The CP 343-1 is a Siemens communications processor for the SIMATIC S7-300 PLC family that connects the CPU to Industrial Ethernet and PROFINET networks. The variant referenced in field service, 6GK7-343-1EX11-0XE0, was superseded by later revisions with extended functionality, identical mechanical footprint, and backward-compatible firmware. Every CP 343-1 occupies one slot in the S7-300 rack and operates as an intelligent communication node — frame handling and connection management run on the module itself, leaving the CPU free for the application program.
| Order Number (MLFB) | Function | Protocols |
|---|---|---|
| 6GK7 343-1EX11-0XE0 | CP 343-1 (original) | TCP, UDP, ISO, S7 |
| 6GK7 343-1CX00-0XE0 | CP 343-1 Lean | TCP, UDP, ISO, S7, PROFINET IO Controller |
| 6GK7 343-1EX21-0XE0 | CP 343-1 | TCP, UDP, ISO, S7, PG/OP, HTTP server |
| 6GK7 343-1EX30-0XE0 | CP 343-1 | TCP, UDP, ISO, S7, PG/OP, HTTP server, FTP |
| 6GK7 343-1GX00-0XE0 | CP 343-1 IT | Adds IT functions (FTP, HTTP, email) |
| 6GK7 343-1HX00-0XE0 | CP 343-1 PN | PROFINET IO Controller, IRT |
| 6GK7 343-1K* | CP 343-1 Advanced | Security, IPv6, all features |
Communication Services and Connection Types
The CP 343-1 supports multiple OSI Layer 4–7 services. Selecting the right service dictates which block the user program must call. The catalog below matches each transport to its SIMATIC_NET_CP block; the S7 protocol (ISO-on-TCP, port 102) is the default for controller-to-controller exchange, while raw TCP and UDP serve third-party integrations.
| Service | Transport | Active Blocks (CP 343-1 side) | Use Case |
|---|---|---|---|
| S7 Communication | ISO-on-TCP (port 102) or TCP | FB14 GET, FB15 PUT, FB12 BSEND, FB13 BRCV, FB8 USEND, FB9 URCV | Controller-to-controller data exchange |
| Open TCP/IP | TCP (RFC 793) | FC5 AG_SEND, FC6 AG_RECV, FC10 AG_CNTRL | 3rd-party device integration |
| Open UDP | UDP (RFC 768) | FC5 AG_SEND, FC6 AG_RECV | Broadcast/multicast, low overhead |
| ISO Transport | ISO 8073 | FC5 AG_SEND, FC6 AG_RECV | Native Siemens-to-Siemens on Ethernet |
| PROFINET IO | Real-time Ethernet | I/O image, no user FBs | Distributed I/O |
SIMATIC_NET_CP Library: Block Catalog
All S7-300/400 communication blocks that drive a CP live in the SIMATIC_NET_CP library (STEP 7 V5.x) or in the equivalent TIA Portal "Communication Blocks" palette. Blocks with identical numbers in the IEC standard library (e.g., FB14 from Standard Library > Communication Blocks) have a different interface and must not be substituted. The CP-aware blocks begin all parameter names with the same prefix conventions (REQ, ID, NDR, DONE, ERROR, STATUS) and accept the connection ID assigned in NetPro.
| Block | Type | Function | Direction |
|---|---|---|---|
| FB14 GET | FB | Read variable from partner CPU | Client (active) |
| FB15 PUT | FB | Write variable to partner CPU | Client (active) |
| FB12 BSEND | FB | Send up to 32 KB segmented | Sender |
| FB13 BRCV | FB | Receive up to 32 KB segmented | Receiver |
| FB8 USEND | FB | Uncoordinated send (≤ 4 bytes) | Sender |
| FB9 URCV | FB | Uncoordinated receive (≤ 4 bytes) | Receiver |
| FC5 AG_SEND | FC | Send raw Ethernet frame | TCP/UDP/ISO |
| FC6 AG_RECV | FC | Receive raw Ethernet frame | TCP/UDP/ISO |
| FC10 AG_CNTRL | FC | Connection control (status, disconnect) | Any |
| FC50 AG_LSEND | FC | Send data (legacy, ISO/TCP) | Sender |
| FC60 AG_LRECV | FC | Receive data (legacy) | Receiver |
STEP 7 V5.x vs TIA Portal Block Equivalence
When the same project is migrated to TIA Portal V13 or later, the SIMATIC_NET_CP FBs are replaced by instruction extensions of the same name. The interface is unchanged; only the call mechanism differs (single-instance DB, no need to open the project library). The reference manual for CPU-CPU communication with SIMATIC controllers is published as Siemens support entry 78028908 — Communication with SIMATIC.
| STEP 7 V5.x Block | TIA Portal Instruction | Notes |
|---|---|---|
| FB14 GET | GET (S7 communication) | Drop into OB1; instance DB auto-generated |
| FB15 PUT | PUT (S7 communication) | Same call signature |
| FB12 BSEND | BSEND (S7 communication) | Max length 32 768 bytes |
| FB13 BRCV | BRCV (S7 communication) | Max length 32 768 bytes |
| FC5 AG_SEND | TSEND / TUSEND | Split by TCP vs UDP |
| FC6 AG_RECV | TRECV / TURCV | Split by TCP vs UDP |
Project-Spanning Data Exchange: Connection Setup in NetPro
When two CP 343-1 modules live in different STEP 7 projects and exchange data across an Industrial Ethernet / PROFINET subnet, the connection must be configured in NetPro (STEP 7 V5.x) or in the "Devices & Networks" editor (TIA Portal). The connection is the S7 connection type, identified by its connection ID used as the ID input on the FB. The full procedure is documented in Siemens support entry 78028908.
- Open NetPro in the project that owns the CP 343-1 acting as the active partner (the partner that calls PUT/GET/BSEND).
- Right-click the CP 343-1 module and choose Insert New Connection > S7 Connection.
- In the connection dialog, enter the partner IP address, partner rack, and partner slot of the remote CPU. Do not select "Establish connection actively" on both ends — exactly one end is active, the other is passive.
- Note the local connection ID shown in the connection properties (typical range 1..16). This same ID is passed to the FB.
- Compile and download the NetPro configuration; the CP 343-1 stores the connection in its project database.
- If the partner lives in a separate project, export it as a station (.s7p / .tnf) and import it under "Partner" in the active project so NetPro can resolve the IP at compile time.
Programming the GET / PUT Pair
FB14 GET and FB15 PUT are the simplest mechanism for cross-project data exchange. Both run on the active partner; the remote side needs only the S7 connection resource but no program changes. Each call moves a contiguous data area, so a 200-byte DB block is moved in one FB call without segmentation.
FB15 PUT Call (STL / SCL)
CALL FB15, DB15 (
REQ := M100.0, // Trigger: rising edge
ID := W#16#0001, // Connection ID from NetPro
DONE := M110.0,
ERROR := M110.1,
STATUS := MW112,
ADDR_1 := P#DB100.DBX0.0 BYTE 40, // Remote DB100 bytes 0..39
SD_1 := P#DB200.DBX0.0 BYTE 40 // Local source DB200 bytes 0..39
);
FB14 GET Call (STL / SCL)
CALL FB14, DB14 (
REQ := M120.0,
ID := W#16#0001,
NDR := M130.0,
ERROR := M130.1,
STATUS := MW132,
ADDR_1 := P#DB100.DBX50.0 BYTE 80,
RD_1 := P#DB300.DBX0.0 BYTE 80
);
ADDR_1 through ADDR_8 (eight variable slots) extend the transfer up to 462 bytes per call when used concurrently. STATUS should always be evaluated in OB1 or OB35; STATUS W#16#0000 signals success, while any non-zero value should be evaluated against the FB15/FB14 error table in the manual.
BSEND / BRCV: Segmented Transfers up to 32 KB
When the payload exceeds 462 bytes — or the application must synchronize blocks with a defined start/stop — use FB12 BSEND and FB13 BRCV. BSEND fragments up to 32 768 bytes into multiple ISO-on-TCP packets; BRCV reassembles them and signals completion with DONE. Each BSEND call is acknowledged end-to-end by the receiver, making the pair well suited to recipe download and bulk diagnostics transfer.
CALL FB12, DB12 (
REQ := M200.0, // Trigger
ID := W#16#0002,
R_ID := DW#16#DEADBEEF, // Arbitrary, must match BRCV
DONE := M210.0,
ERROR := M210.1,
STATUS := MW212,
SD_1 := P#DB500.DBX0.0 BYTE 8192,
LEN := 8192
);
CALL FB13, DB13 (
EN_R := TRUE,
ID := W#16#0002,
R_ID := DW#16#DEADBEEF,
NDR := M220.0,
ERROR := M220.1,
STATUS := MW222,
RD_1 := P#DB600.DBX0.0 BYTE 16384
);
USEND / URCV: Uncoordinated 4-Byte Handshake
FB8 USEND and FB9 URCV move up to four bytes without coordination or acknowledgment. They are intended for status flags and handshake signals, not for payload data. The receiver must be ready (URCV in the cycle) before USEND fires, or the data is lost silently. Because of this race condition, prefer BSEND/BRCV or GET/PUT for any data that must not be dropped.
ISO Transport vs TCP Connections
The CP 343-1 can be programmed to use either ISO-on-TCP (RFC 1006, port 102) or raw TCP for S7 communication. The choice is made in NetPro under connection properties > "Address Details". Use ISO-on-TCP unless the partner requires raw TCP — for example, a third-party application speaking S7 communication over a non-Siemens firewall or NAT boundary.
| Criterion | ISO-on-TCP (recommended) | Raw TCP |
|---|---|---|
| Port | 102 | 2000..4999 (configurable) |
| Header overhead | 4 bytes | 0 bytes |
| Firewall friendly | Limited (single port) | Flexible |
| S7 partner required | Yes | Yes (still S7 protocol) |
| Diagnostic depth | Full ISO-on-TCP counters | Basic TCP counters |
Cross-Project Exchange via S7 Routing
When the two CP 343-1 modules reside in different STEP 7 projects but share a common Ethernet subnet, NetPro establishes the connection across project boundaries. The active partner must hold the partner IP address; the passive partner needs only its own CP configuration. If the two projects are owned by different engineering teams, export the partner project as a station (.s7p / .tnf) and import it under "Partner" in the active project. This is the Siemens-recommended workflow and the only supported route for a cross-project S7 connection. The S7 routing table — see entry 78028908 for the routing rules — must permit the gateway CP 343-1 to forward frames addressed to either subnet.
Data Exchange Between Standard User Program and Safety Program
On an S7-300F / S7-300F CPU (e.g., CPU 317F-2 PN/DP) or on a CP 343-1 installed in an F-CPU rack, data exchange between the standard user program and the safety program uses fixed channels rather than the SIMATIC_NET_CP FBs. The mechanism is described in the TIA Portal help and the SIMATIC Safety Configuring and Programming manual, available at TIA Portal — Data exchange between standard user program and safety program.
| Mechanism | Direction | Use Case |
|---|---|---|
| DB (standard) ↔ F-DB (safety) | Bidirectional, mirrored | Process values shared between standard and F-runtime |
| Bit memory (M) | One-way only, into safety program | Commands to safety routine (with validity flag) |
| Process image of inputs (PII) | Into safety program | Sensor data acquisition |
| Process image of outputs (PIQ) | Out of safety program | Actuator commands |
Per the TIA Portal Safety manual: "Tags can be transferred using DBs, F-DBs and bit memory." When a tag is written by the standard program and consumed by the safety program, the standard program must provide both the data and a separate validity flag, and the F-program must check the validity flag on a defined cycle before acting on the data. The pairing of data + validity is mandatory; a single untagged tag may never cross the standard/safety boundary.
Status and Error Codes
| STATUS (hex) | Meaning | Corrective Action |
|---|---|---|
| 0000 | Job complete without error | None |
| 0001 | Reserved / transitional | None |
| 7000 | No job active | None |
| 7001 | Job active, first call | None |
| 7002 | Job active, subsequent call | None |
| 8085 / 8185 | Connection ID or R_ID mismatch | Verify NetPro and FB ID parameter |
| 80A1 / 80A2 | Partner rejected or not available | Check partner CPU run state, IP, rack/slot |
| 80B1 / 80B2 | Data length exceeds partner limit | Reduce SD_1 / RD_1 byte count |
| 80C3 / 80C4 | Temporary resource shortage | Retry; check partner CPU load |
| 80D0 / 80D1 | Connection aborted | Check NetPro online diagnostics |
Diagnostics and Verification
- Open NetPro, right-click the CP 343-1 and choose Connection Status. All configured S7 connections should show "Established".
- In the partner project, open the same CP's online diagnostics: PLC > Online & Diagnostics > Communication. Byte counters for sends and receives confirm live data flow.
- Force a GET/PUT with a watch table on the active side: writing
DB200.DBD0 = 12345on the remote CPU should appear in the partner DB after one cycle of the calling FB. - Trigger a BSEND/BRCV pair; verify
DONEtoggles on both sides and the receiver DB shows the exact byte count equal toLEN. - Cross-check the F-CPU's F-Change History if a safety program is involved; CP 343-1 transport errors do not appear here, but invalid tag validity flags do.
- Use the CP 343-1's Web diagnostics page (if enabled:
http://<CP-IP>/diag) for live connection state without needing STEP 7 online access.
Troubleshooting Matrix
| Symptom | Likely Cause | Action |
|---|---|---|
| STATUS = 8185 on every call | Wrong connection ID, wrong library | Recheck FB source: must be SIMATIC_NET_CP, not Standard Library |
| STATUS = 80A1, no traffic on partner | Connection active on both ends | Switch one side to passive in NetPro |
| STATUS = 80D0 after a few seconds | Connection resource exceeded | Reduce concurrent jobs; CP 343-1EX11 has 16 S7 conns max |
| Receiver DB never fills | R_ID mismatch | Match R_ID exactly on BSEND and BRCV |
| Data scrambled after a long run | URCV missed a USEND cycle | Switch to BSEND/BRCV or use a done flag |
| Safety program sees 0 from standard DB | Validity flag not set | Provide flag bit, evaluate in F-program |
| High CPU load on OB1 cycle | FBs called every OB1 scan without job gating | Trigger REQ on edge; gate with handshake bit |
| PUT finishes, partner DB unchanged | Partner DB write-protected or optimized access | Set DB attribute "Non-optimized" in TIA Portal partner project |
Field-Commissioning Checklist
- Confirm CP 343-1 firmware version under Online & Diagnostics > Module Information; firmware ≥ 2.0 is recommended for EX11 variants running modern TIA Portal projects.
- Reserve the CP 343-1's Ethernet port exclusively for S7 communication if PG/OP traffic is heavy; use a managed switch with VLAN to separate the two traffic classes.
- Document connection IDs (1..16) in the project functional specification; collisions are a common startup fault when several engineers add connections in parallel.
- For cross-project exchange, attach a partner stub (.s7p / .tnf) to each project and check it into version control so connection changes are reviewed.
- Configure SNTP time sync via the CP 343-1 if both sides timestamp events; mismatched timestamps confuse audit logs and sequence-of-event reconstruction.
- Disable unused services (FTP, HTTP, SMTP) on the CP 343-1 IT variants to reduce attack surface — the Advanced firmware adds an integrated firewall for this purpose.
- Schedule a periodic backup of the CP's project file via the Web diagnostics > "Backup" page; replacing an EX11 in the field without a project file can cost a full day of commissioning.
Which library should I take the FB14 / FB15 from for a CP 343-1?
Always use the SIMATIC_NET_CP library (STEP 7 V5.x) or the Communication Blocks / S7 Communication palette (TIA Portal). The identically numbered FB14 in the Standard Library > Communication Blocks has a different interface and does not drive a CP — it is intended for direct CPU-to-CPU links without a CP.
How many S7 connections can a CP 343-1EX11 hold?
The CP 343-1EX11 supports 16 S7 connections. The EX21, EX30, and CP 343-1 PN raise this to 32. Exceeding the limit returns STATUS 0x0002 (insufficient resources) on the calling FB.
Can the CP 343-1 exchange data with a third-party PLC?
Yes, but only via raw TCP or UDP using the FC5 AG_SEND / FC6 AG_RECV blocks, or via an open S7-communication implementation on the partner side. The CP 343-1 cannot natively speak Modbus TCP, EtherNet/IP, or any non-Siemens fieldbus — those require either a dedicated CP (e.g., CP 343-1 Lean for PROFINET IO controller) or an external gateway.
What is the maximum data length of a PUT or GET call?
Each PUT or GET call moves up to 462 bytes in up to eight address areas (ADDR_1..ADDR_8). BSEND / BRCV extend this to 32 768 bytes per call but require paired setup on both ends and matching R_ID values.
How do I move a tag from a standard program into the safety program?
Declare a standard DB and an F-DB with identical names and tag types; the F-runtime automatically mirrors writes from the standard program into the F-DB. For a one-way write, you may also use a bit-memory flag plus a separate validity flag evaluated by the F-program. Direct access to I/O from a standard DB into a safety program is not permitted — the safety program must read from its own process image, and every transferred tag must carry a paired validity flag.