S7-300 CPU 313C to 314C-2DP/PN: S7 Connection via CP 343-1 Lean

David Krause19 min read
S7-300SiemensTroubleshooting
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

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.

  1. 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.
  2. 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)".
  3. 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)
    
  4. 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.
  5. 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".
  6. 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.
  7. 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.
  8. 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.
Critical: The "STATUS 0000 with DONE = 0" symptom in BSEND/BRECV most often means the FB has not been called with a valid REQ trigger, or the S7 connection is not yet established. Verify the connection with NetPro "Connection Status" before assuming the user program is at fault.

Network Topology

Station A — CPU 313C CPU 313C 6ES7313-5BF03-0AB0 CP 343-1 Lean 6GK7343-1CX10-0XE0 192.168.0.10 / 24 Station B — CPU 314C-2DP/PN CPU 314C-2DP/PN 6ES7314-6EH04-0AB0 PN-IO integrated 192.168.0.20 / 24 Ethernet Subnet (1) S7 Connection — ID 1 — R_ID 16#0001

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

Idle REQ=0, DONE=0 Pending REQ=1, STATUS=0000 Done DONE=1, STATUS=0000 Error ERROR=1, STATUS≠0 Re-armed ready for next REQ REQ=1 ACK ok NACK / fault REQ=0 R pulse

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.

  1. In the TIA Portal project tree, open "Devices & Networks".
  2. 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.
  3. Click the CP 343-1 Lean → "Properties" → "Ethernet addresses" → assign the IP address and subnet mask.
  4. Click the CPU 314C-2DP/PN → "Properties" → "PROFINET interface" → "Ethernet addresses" → assign the IP address.
  5. 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.
  6. Compile and download the hardware and connection configuration to both stations.
  7. 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.

  1. Physical link. Confirm both Ethernet ports show link LEDs. Use the ping command 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.
  2. 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".
  3. NetPro connection status. Right-click the S7 connection → Connection Status. A green status line for the active direction confirms the S7 transport is up.
  4. 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.
  5. 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:

  1. 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.
  2. 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.
  3. 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.

Back to blog