Problem Overview
Establishing S7 communication between an S7-300 CPU 313C equipped with a CP 343-1 Lean and a CPU 314C-2DP/PN with its integrated PROFINET interface is a recurring configuration challenge. The two CPUs present fundamentally different Ethernet attachment points: the 313C must reach the network through an external CP, while the 314C-2DP/PN terminates the link on its onboard two-port switch. Engineers frequently encounter a situation where the S7 connection object is created in STEP 7 NetPro but no Ethernet interface appears in the interface selection, BSEND/BRECV returns STATUS 0000 with DONE = 0 indefinitely, and no data traverses the link. The fault is almost never in the program logic. It is a configuration defect in NetPro: the connection is bound to the wrong sub-module, an interface mismatch exists between the local and partner, or the connection object is downloaded to only one side. This reference walks through hardware identification, NetPro topology, FB selection (BSEND/BRECV vs PUT/GET vs TCON/TSEND/TRCV), status-code interpretation, and TIA Portal alternatives.
Hardware Identification and Capabilities
Before configuring the link, confirm the exact order numbers of both CPUs and the communication module. The behavior of the integrated PROFINET interface differs between firmware releases, and the CP 343-1 Lean is a resource-constrained device that supports a fixed set of connection types.
| Module | Order Number (MLFB) | Ethernet Interface | Supported Protocols | Max S7 Connections |
|---|---|---|---|---|
| CPU 313C | 6ES7313-5BF03-0AB0 | None on-board (MPI/PROFIBUS only) | Via CP only | Determined by CP |
| CP 343-1 Lean | 6GK7343-1CX10-0XE0 | 1 × RJ45, 10/100 Mbps | TCP, ISO-on-TCP, UDP, S7, PROFINET IO Controller (limited), HTTP | 4 S7 connections max |
| CPU 314C-2DP/PN | 6ES7314-6EH04-0AB0 | 2 × RJ45 integrated switch, 10/100 Mbps | TCP, ISO-on-TCP, UDP, S7, PROFINET IO Controller/Device | 8 S7 connections (firmware ≥ V3.3) |
The CP 343-1 Lean is a stripped-down variant of the CP 343-1. It does not support FTP server, file system, full Web server, or routing between subnets, and its connection count is lower. The CPU 314C-2DP/PN's PROFINET port implements the same FB interface library as the CP family for S7 communication, which makes the two sides symmetrical from a programming perspective. The integrated port is not a barrier to BSEND/BRECV; it is a peer to the CP for connection configuration.
Protocol Selection: S7 Connection vs TCP Native vs ISO-on-TCP
STEP 7 offers three Ethernet-based transport layers for CPU-to-CPU data exchange. The choice is dictated by the FB family used in the user program.
| Connection Type | NetPro Icon | User FBs | Header Overhead | Use Case |
|---|---|---|---|---|
| S7 Connection | Blue S7 plug | PUT (FB15), GET (FB14), BSEND (FB12), BRCV (FB13), USEND (FB8), URCV (FB9) | Siemens proprietary, opaque payload | Standard CPU-to-CPU data exchange between S7 stations |
| TCP Connection (native) | Yellow TCP plug | TCON (FB65), TSEND (FB63), TRCV (FB64), TDISCON (FB66) | Raw TCP stream, no record framing | Communication with non-Siemens TCP peers |
| ISO-on-TCP Connection (RFC 1006) | Yellow TCP plug with ISO | TCON/TSEND/TRCV/TDISCON with B#16#11 (ISO-on-TCP) | Length-prefixed records over TCP | Cross-vendor, record-oriented exchange |
For the original problem (CPU 313C to CPU 314C-2DP/PN, both Siemens, both SIMATIC), the correct selection is the S7 Connection. The BSEND/BRECV pair is fully appropriate and is not the wrong choice because of the integrated PN port. The integrated PN port on the 314C-2DP/PN behaves identically to a CP 343-1 for S7 communication purposes: it accepts the same S7 connection objects in NetPro and the same FB calls from the user program. The fault must therefore lie in connection configuration, not protocol choice.
For reference, the Transmission Control Protocol underlying all three of these transport options provides a connection-oriented, reliable byte stream with three-way handshake, sequence numbers, and retransmission per IETF RFC 793 (with subsequent updates in RFC 1122, RFC 2581, and RFC 5681). The ISO-on-TCP variant adds record framing on top of that reliable transport.
Root Cause Analysis: Why NetPro Will Not Show the Ethernet Interface
There are three high-frequency root causes for the symptom "NetPro does not list an Ethernet interface when creating the S7 connection". They are listed in descending order of probability for this specific hardware mix.
Cause 1 — Connection Is Created on the Wrong Station Object
If the S7 connection is inserted by right-clicking the CPU 313C's MPI/DP interface or the project root, STEP 7 will offer only the MPI/PROFIBUS subnets. The CP 343-1 Lean must be present in the station with its Ethernet port connected to an Ethernet subnet in NetPro. Verify that the CP appears as a sub-module under the S7-300 station and that its X1 (PN/IE) port is bound to an Ethernet subnet that also contains the CPU 314C-2DP/PN's PN port.
Cause 2 — CP 343-1 Lean Is Not Inserted or Is on the Wrong Slot
The CP 343-1 Lean must occupy slot 4 to 11 of the S7-300 rail and be configured in HW Config with its Ethernet interface assigned to a subnet. If the CP is missing, NetPro will show only the PROFIBUS options. Confirm in HW Config: SIMATIC 300 Station → CP-300 → Industrial Ethernet → CP 343-1 Lean. The MLFB must be 6GK7343-1CX10-0XE0 (or earlier 6GK7343-1CX00-0XE0 on legacy projects).
Cause 3 — CPU 314C-2DP/PN PN Port Is Not Connected to the Same Ethernet Subnet
On the partner station, the CPU 314C-2DP/PN has a PN-IO sub-module. In HW Config, this sub-module must be connected to an Ethernet subnet. If both stations are dragged into NetPro but no subnet line joins their PN ports, the connection's local interface is forced to "unspecified" and the partner cannot be resolved. Right-click each PN port in NetPro → "Insert New Subnet" or drag a line between them.
NetPro Configuration Procedure (STEP 7 V5.x)
The following sequence produces a working S7 connection that BSEND/BRECV can use. The example assumes CPU 313C (Station A) with CP 343-1 Lean at IP 192.168.0.10, and CPU 314C-2DP/PN (Station B) with integrated PN at IP 192.168.0.20.
- Open NetPro. In SIMATIC Manager: Options → SIMATIC Net → Configure Network. The project must contain both S7-300 stations in HW Config, with the CP 343-1 Lean and the 314C-2DP/PN's PN-IO sub-module inserted and configured.
- Verify subnet topology. The Ethernet subnet must visually link the CP 343-1 Lean X1 port to the CPU 314C-2DP/PN PN port. If the link is missing, drag the PN interface of the CPU 314C-2DP/PN onto the CP 343-1 Lean's port in NetPro. STEP 7 will auto-create or attach an Ethernet subnet named "Ethernet(1)".
-
Verify IP assignments. Open the Ethernet subnet properties → "Network Settings" tab and confirm that the IPv4 address of the CP 343-1 Lean and the PN port of the 314C-2DP/PN are within the same subnet mask:
CP 343-1 Lean (Station A): IP: 192.168.0.10 Mask: 255.255.255.0 Router: 0.0.0.0 X1 port: Ethernet(1) CPU 314C-2DP/PN (Station B) PN-IO: IP: 192.168.0.20 Mask: 255.255.255.0 Router: 0.0.0.0 Port X1: Ethernet(1) (port X2 of the 2-port switch is implicit)
- Insert the S7 connection. In NetPro, right-click the CP 343-1 Lean → Insert New Connection. The dialog presents a connection partner list. Select "CPU 314C-2DP/PN" and accept "S7 Connection" as the type. Confirm the slot: the local endpoint is the CP 343-1 Lean, the partner endpoint is the CPU 314C-2DP/PN's integrated PN.
- Configure connection properties. Open the new S7 connection object. Note the local Connection ID (e.g., 1) and the partner Connection ID (auto-assigned, e.g., 1). The active connection establishment direction must match the programming model: the side that initiates (BSEND) is typically the "active" endpoint, and the receiving side (BRCV) is "passive".
- Save and compile. NetPro → Station → Save and Compile. Watch the console: it will report "Connection 1: S7 connection, accepted" if the local endpoint is fully configured. Any "Unspecified endpoint" message indicates a missing subnet binding or a wrong slot.
- Download to both stations. Select the S7-300 station in NetPro → PLC → Download to Target Station. Repeat for the partner station. The connection data is written as part of the system data blocks (SDB) and is resident in the CP / CPU. Downloading to only one side is the most common reason the link stays down.
- Verify online. In NetPro, right-click the connection → "Connection Status". A green "Established" status confirms the S7 connection is up at the transport layer. If it remains "Not established" while the CP and CPU are in RUN, the connection is being held down by a STOP partner, a wrong active/passive role, or a missing download.
Network Topology
User Program Implementation
BSEND/BRECV is the preferred FB pair for S7 communication when the data length is variable up to 32 KB. PUT/GET is simpler but fixed at 160 bytes or less per call and does not return "done" semantics. The choice depends on record size and required acknowledgment behavior.
BSEND on Station A (313C + CP 343-1 Lean)
BSEND (FB12) is called with REQ = TRUE to transmit. The ID parameter is the Connection ID from NetPro. R_ID is a 16-bit identifier that the partner BRCV must match. The LEN is the data length. SD_1 is the source data area (e.g., DB1 from byte 0.0).
// Station A (CPU 313C, CP 343-1 Lean, Connection ID = 1)
DATA_BLOCK DB1
STRUCT
OrderNumber : DWORD; // example data word
Temperature : REAL;
Timestamp : DATE_AND_TIME;
END_STRUCT;
END_DATA_BLOCK
FB12_DB "iBSEND" // instance DB for BSEND
CALL FB 12, DB "iBSEND"
REQ := TRUE // level-triggered
R := FALSE
ID := 1 // NetPro Connection ID (local)
R_ID := 16#0001 // matches BRCV R_ID on partner
DONE := "DB_TX".Done
ERROR := "DB_TX".Error
STATUS:= "DB_TX".Status
SD_1 := P#DB1.DBX 0.0 BYTE 32
LEN := 32
BRCV on Station B (314C-2DP/PN)
BRCV (FB13) is called with EN = TRUE continuously. On each call, the FB checks for incoming data. When new data arrive, NDR is pulsed high for one cycle and RD_1 points to the received data.
// Station B (CPU 314C-2DP/PN, Connection ID = 1)
FB13_DB "iBRCV"
CALL FB 13, DB "iBRCV"
EN_R := TRUE
R := FALSE
ID := 1 // NetPro Connection ID (local)
R_ID := 16#0001 // matches BSEND R_ID on partner
NDR := "DB_RX".NDR
ERROR := "DB_RX".Error
STATUS:= "DB_RX".Status
RD_1 := P#DB10.DBX 0.0 BYTE 32
LEN := "DB_RX".Len
The R_ID must match exactly between BSEND and BRCV. The ID is the local connection identifier, which is generally identical on both sides for a point-to-point S7 connection but can differ because each station assigns its own ID locally. The user must look up the local ID from NetPro on each side, not assume parity.
Status Code Diagnostics for FB12/FB13
When BSEND/BRECV does not behave as expected, the STATUS word is the primary diagnostic. The values below are taken from the SIMATIC standard library documentation. STATUS 0000 with DONE = 0 is the most common symptom in the present case and is covered explicitly.
| DONE / NDR | ERROR | STATUS (hex) | Meaning | Action |
|---|---|---|---|---|
| 0 | 0 | 0000 | Job not yet completed; no error; the FB has not yet received an acknowledgment from the partner | Verify S7 connection is established (NetPro online); verify the partner BRCV is also being called; check that REQ remains TRUE |
| 1 | 0 | 0000 | Job completed successfully (BSEND) or new data received (BRCV) | None |
| 0 | 1 | 0001 | No connection established; FB called before S7 connection is up | Check NetPro download; check CP/CPU is in RUN; verify physical Ethernet link |
| 0 | 1 | 0002 | Negative acknowledgment from partner; length too short | Increase RD_1 length on BRCV; verify R_ID match |
| 0 | 1 | 0005 | Reset request received during processing | Re-initiate transmission |
| 0 | 1 | 0006 | Job aborted by partner (BRCV reset, connection aborted) | Check partner CPU; check for STOP or download interrupting runtime |
| 0 | 1 | 0008 | Access error to local data area (SD_1 / RD_1) | Verify DB number/length; check that DB exists and is not optimized |
| 0 | 1 | 0009 | Partner CPU in STOP | Switch partner to RUN |
| 0 | 1 | 000A | Partner CPU not in RUN/HALT or partner is downloading | Wait for download to complete; check partner mode selector |
| 0 | 1 | 000C | Job in progress, cannot accept new REQ | Wait for DONE; do not retrigger until DONE pulse |
| 0 | 1 | 0010 | Connection has been aborted | Check physical link, CP diagnostics, IP conflict |
| 0 | 1 | 80C3 | Connection resource exhausted on local CP/CPU | Reduce number of open connections; verify CP type supports S7 connections |
The combination 0000 / DONE = 0 does not mean "everything is fine, just waiting". It means the FB is currently running and has not received completion. If that state persists for more than a few seconds, the S7 connection itself is not established, and the user must check the transport layer (NetPro online status, CP diagnostic buffer, partner RUN state) before assuming a program defect.
BSEND/BRCV State Machine
Cross-Platform Consideration: TIA Portal
Projects migrated to TIA Portal (STEP 7 V13 or higher) follow a different configuration path. The NetPro-equivalent view is "Devices & Networks". The procedure is functionally identical but the UI differs.
- In the TIA Portal project tree, open "Devices & Networks".
- Drag the PN port of the CPU 314C-2DP/PN to the PN port of the CP 343-1 Lean to create the Ethernet subnet.
- Click the CP 343-1 Lean → "Properties" → "Ethernet addresses" → assign the IP address and subnet mask.
- Click the CPU 314C-2DP/PN → "Properties" → "PROFINET interface" → "Ethernet addresses" → assign the IP address.
- Right-click the CP 343-1 Lean → "Add new connection". Select the CPU 314C-2DP/PN as partner and "S7 connection" as type. Confirm the active/passive role.
- Compile and download the hardware and connection configuration to both stations.
- Call BSEND/BRECV from the user program as in STEP 7 V5.x. The FB12/FB13 instance DBs are identical in function, but in TIA Portal the call interface is built in SCL or LAD/FBD with the new graphical syntax. For maximum portability, use the SCL call syntax which exposes the same parameter names.
TIA Portal does not relax the underlying requirements. The Ethernet subnet, IP addressing, slot configuration, and connection role must still all be consistent. The same 0000 / DONE = 0 symptom will appear if any of these is missing.
Verification Procedure
After configuration and download, perform these checks in order. Any failure short-circuits the rest.
-
Physical link. Confirm both Ethernet ports show link LEDs. Use the
pingcommand from a laptop on the same subnet to 192.168.0.10 and 192.168.0.20. If ping fails, resolve the L1/L2 problem before continuing. - CP online diagnostics. In STEP 7, select the CP 343-1 Lean → PLC → Online & Diagnostics → "Ethernet Interface". Verify the IP and the active connections. The integrated PN port of the 314C-2DP/PN has the same diagnostic mask under "PROFINET Interface".
- NetPro connection status. Right-click the S7 connection → Connection Status. A green status line for the active direction confirms the S7 transport is up.
- BSEND/BRECV observation. Trigger BSEND with REQ = TRUE. Observe STATUS and DONE in a VAT. If DONE pulses to 1, the user program is correct. If STATUS returns 0001, the S7 connection is down; revert to step 3.
- Partner STOP test. Switch the partner CPU to STOP. BRCV should now return STATUS = 0009. This is a deliberate test to confirm that the S7 connection carries the partner's RUN/STOP state across the link.
Troubleshooting Matrix
| Observed Symptom | Likely Root Cause | Verification Step | Fix |
|---|---|---|---|
| NetPro does not show Ethernet as connection endpoint | CP 343-1 Lean missing from HW Config or PN port of 314C-2DP/PN not connected to subnet | Open HW Config for both stations; check subnet binding in NetPro | Insert CP 343-1 Lean at slot 4-11; drag PN port to existing Ethernet subnet |
| BSEND status 0000, DONE = 0 indefinitely | S7 connection not established; partner BRCV not called; partner in STOP | NetPro "Connection Status"; check partner RUN LED | Download connection to both stations; ensure BRCV is called cyclically; bring partner to RUN |
| BSEND status 0001 | No connection | CP diagnostic buffer | Re-download connection configuration; check IP/Mask; check for duplicate IP on LAN |
| BSEND status 0008 | Local SD_1 access error | Open DB1 in online view | Verify DB number, length, and that DB is not optimized (TIA Portal: uncheck "Optimized block access") |
| BSEND succeeds but BRCV never receives (NDR = 0) | R_ID mismatch; wrong connection ID; wrong partner | Cross-check R_ID and ID between BSEND and BRCV | Make R_ID identical on both sides; verify local ID in NetPro for each station |
| Intermittent disconnects after hours of operation | CP keepalive mismatch; partner watch dog; physical link flap | CP diagnostic buffer shows "connection aborted" with reason code | Enable keepalive in CP properties; check switch port statistics for CRC errors |
| Compile/download fails on S7 connection | Inconsistent rack/slot; one side missing SDB | NetPro compile log; check that both stations appear | Save and recompile NetPro; redownload both stations |
| BSEND status 80C3 | Connection resource exhausted | Check active S7 connections in CP diagnostics | Close unused connections; consider CP 343-1 (non-Lean) upgrade |
Communication Limits and Sizing
The CP 343-1 Lean (6GK7343-1CX10-0XE0) is dimensioned for low-traffic applications. Its hard limits are:
- 4 S7 connections simultaneously established
- 8 ISO-on-TCP connections
- 8 TCP connections (native)
- 8 UDP connections
- 1 PROFINET IO controller with up to 8 IO devices
- PG/OP connection counts toward the S7 connection pool
For higher connection counts, migrate to CP 343-1 (6GK7343-1EX30-0XE0) or CP 343-1 Advanced (6GK7343-1GX31-0XE0). The CPU 314C-2DP/PN's integrated PN port supports 8 S7 connections in firmware V3.3 and later; firmware V3.0 supports 4. The S7-300 system data block (SDB) and resource book-keeping is handled by the CP or, for the integrated PN port, by the CPU's communication firmware; the BSEND/BRECV calls consume one S7 connection resource per active partner.
For data bandwidth, S7 connection is event-driven without continuous polling. Effective throughput is bounded by the OB1 call rate of the BSEND/BRECV block and the CP's internal processing. A typical engineering figure is 100 to 400 bytes per call for BSEND with 32-byte records on CP 343-1 Lean paired with CPU 313C. Larger records on CP 343-1 Advanced can approach 1.5 MB/s sustained. To compute the engineering bandwidth: bytes per second = (LEN × OB1 cycle rate) / 1000, multiplied by the duty cycle of REQ = TRUE. For example, with LEN = 32, OB1 at 10 ms (100 Hz), and REQ held high continuously, the nominal transfer is 32 × 100 = 3200 bytes/s. Overhead of the S7 transport reduces this by ~10-15% in practice.
Alternatives to BSEND/BRECV
PUT (FB15) and GET (FB14) are the alternative S7 communication FBs. They have simpler programming and no R_ID match, but each call is limited to 160 bytes (PUT) and 160 bytes per call (GET). For repeated small-data polling, PUT/GET may be more appropriate. For variable-length or large records, BSEND/BRECV is preferred.
For non-Siemens peers, TCON/TSEND/TRCV (FB65/FB63/FB64) over native TCP or ISO-on-TCP is the right choice. The programming overhead is higher (TCON must be called once to establish the connection) but the protocol is open. ISO-on-TCP encapsulates each TSEND record with a 4-byte length prefix; native TCP delivers an unstructured byte stream and the application must perform its own framing.
PROFINET is unsuitable for CPU-to-CPU data exchange. PROFINET is a real-time IO protocol; it does not provide a generic data channel between controllers. Use S7 communication or TCON/TSEND/TRCV instead.
Project Layout Considerations
A frequent point of confusion is whether both stations must be in the same STEP 7 project or can live in two separate projects. Both layouts work, but the NetPro path differs.
- Single project. Both stations in one STEP 7 project. NetPro shows both. The S7 connection is created in one step. Recommended for development and for systems owned by one integrator.
- Separate projects (unspecified connection). Each station is in its own STEP 7 project. The S7 connection in the active station is configured with "Partner = Unspecified". The partner station must be configured identically in its own project. Both projects must be downloaded independently. The R_ID and local ID values must be coordinated manually or by documentation. This layout is common when the two stations belong to different system owners and only a narrow S7 link is shared.
For first-time commissioning, always start with a single project to eliminate configuration ambiguity, then split the project once the link is proven. When splitting, write down the local Connection ID on each side, the active/passive role, the R_ID, and the IP addresses, and keep that document under version control.
Where the Fault Usually Lives: A Field Summary
Across multiple commissioning cases, the BSEND 0000 / DONE = 0 symptom on a CPU 313C to CPU 314C-2DP/PN link has been traced to one of three specific defects more than 90% of the time:
- The S7 connection in NetPro is downloaded only to the 313C station and not to the 314C station. The 313C then waits indefinitely for an acknowledgment from a partner that has no matching SDB.
- The CP 343-1 Lean is inserted in HW Config but its X1 port is not connected to an Ethernet subnet. NetPro therefore has no path from the 313C to the partner.
- The BRCV FB on the 314C station is not being called (e.g., placed in an OB that is not executed, or omitted entirely). The 313C's BSEND then waits forever for a receive acknowledgment.
When all three are eliminated, the link comes up within seconds. When none of them is present, the problem is almost always at the physical layer (cable, switch port, IP conflict) rather than in the program logic.
FAQ
Why does BSEND stay at status 0000 with DONE = 0?
Status 0000 with DONE = 0 means the FB is in flight and has not yet received a completion acknowledgment. If the state persists indefinitely, the S7 connection itself is not established. Verify the connection in NetPro under "Connection Status" and confirm the partner BRCV is being called. A common cause is downloading the S7 connection to only one of the two stations.
Can I use BSEND/BRECV when one CPU has an integrated PROFINET port and the other uses a CP?
Yes. The integrated PROFINET port of the CPU 314C-2DP/PN is functionally equivalent to a CP 343-1 for S7 communication. The same FB12/FB13 calls work on both sides; only the local Connection ID in NetPro is assigned per side and may differ from the partner's ID.
Do I need separate projects for each PLC?
No. A single STEP 7 project with both S7-300 stations is the recommended layout and is supported by NetPro. Separate projects are possible using "Unspecified" partner connections, but introduce additional configuration risk and require careful R_ID and local ID coordination.
What is the difference between BSEND/BRECV and PUT/GET?
BSEND/BRECV supports variable-length data up to 32 KB with explicit R_ID matching and a DONE acknowledgment pulse. PUT/GET is fixed at 160 bytes per call, has no R_ID, and is triggered by REQ with no record framing. Use BSEND/BRECV for larger or variable data; use PUT/GET for simple polling of small data sets.
How many S7 connections can a CP 343-1 Lean hold?
The CP 343-1 Lean (6GK7343-1CX10-0XE0) supports a maximum of 4 S7 connections simultaneously, 8 ISO-on-TCP connections, 8 TCP connections, and 8 UDP connections. PG/OP and HMI connections count against the same resource pool. For larger systems, upgrade to CP 343-1 (6GK7343-1EX30-0XE0).
Why is the Ethernet interface not selectable in NetPro?
The interface dropdown only shows Ethernet if the CP 343-1 Lean is present in HW Config for the 313C station and its X1 port is connected to an Ethernet subnet, and if the CPU 314C-2DP/PN's PN-IO sub-module is on the same subnet. Insert the CP at slot 4-11, open NetPro, and drag a subnet line between the two PN ports.