S7-1500 to S7-300 Communication: S7 and Open TCP Setup

David Krause18 min read
Industrial NetworkingSiemensTutorial / How-to
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

Overview

Brownfield migration projects commonly retain installed SIMATIC S7-300 CPUs while adding S7-1500 controllers for new process cells, machine modules, or replacement of obsolete hardware. Because the two controller families were designed for different engineering tools (STEP 7 V5.x for S7-300/400, TIA Portal for S7-1500), exchanging data between them requires a deliberate connection strategy that works across project boundaries, firmware generations, and instruction-set revisions.

Three mechanisms are used in practice for S7-1500 ↔ S7-300 communication:

  • Configured S7 connection (unspecified S7 connection) using PUT/GET or BSEND/BRCV
  • Open User Communication (OUC) with TCON, TDISCON, TSEND, TRCV over ISO-on-TCP, TCP, or UDP
  • Ad-hoc S7 connection for PUT/GET from a partner that is not configured in the local project

This reference covers engineering steps, block configuration, parameter layout, and diagnostic procedures for each approach, with explicit attention to the block differences that cause first-time failures between S7-300 legacy function blocks (FB12, FB13, FB14, FB15, FB65, FB63, FB64) and the S7-1500 instructions of the same name. Working snippets, parameter tables, and a fault-code matrix are included for field commissioning.

Brownfield baseline: An S7-1500 can act as a client or a server in any S7-1500 ↔ S7-300 scenario. The S7-300 PN-CPU variants (CPU 31x PN/DP, e.g., CPU 315-2 PN/DP, CPU 317-2 PN/DP, CPU 319-3 PN/DP) are required for Ethernet-based communication; MPI-only CPUs are out of scope for the methods described here.

Path Selection: S7 vs Open User Communication

The choice between a configured S7 connection and Open User Communication is driven by data volume, determinism, and engineering footprint. S7-300 to S7-1500 projects often use a hybrid: small cyclic data over configured S7 (PUT/GET), large bursts over BSEND/BRCV or over OUC.

Criterion S7 Connection (PUT/GET, BSEND/BRCV) Open User Communication (TCON/TSEND/TRCV)
Project coupling required Yes (unspecified S7 connection, partner IP/TSAP entered manually) No, fully programmed
Transport protocol ISO-on-TCP (port 102) implicit ISO-on-TCP, TCP, UDP selectable
Max payload (typical) PUT/GET: 160 bytes user data per call (4 bytes pointer + data); BSEND: up to 64 KB TSEND: 32 KB typical, 64 KB on S7-1500; TRCV: 64 KB on S7-1500
Handshake Acknowledged by partner CPU Transport-layer only; user must acknowledge semantics
Configuration overhead Connection table in NetPro or TIA Portal Parameter description in program only
Best fit Periodic, structured PLC-PLC data Event-driven, large bursts, cross-vendor
Block on S7-300 FB12 BSEND, FB13 BRCV, FB14 PUT, FB15 GET FB65 TCON, FB63 TSEND, FB64 TRCV, FB66 TDISCON
Block on S7-1500 Instructions BSEND, BRCV, PUT, GET Instructions TCON, TSEND, TRCV, TDISCON

For tens of kilobytes of data, both BSEND/BRCV and the OUC TSEND/TRCV path are viable. BSEND/BRCV provides an application-level acknowledge; OUC gives the developer a free choice of segmentation and is mandatory when the partner is not a Siemens S7 CPU.

Prerequisites and Component Selection

Verify the following before configuring any cross-generation communication.

Item Requirement Notes
S7-1500 CPU Firmware V2.0 or higher for full BSEND/BRCV compatibility (V1.8 works for PUT/GET and OUC) CPU 1511-1 PN, CPU 1513-1 PN, CPU 1515-2 PN, CPU 1516-3 PN/DP, CPU 1517-3 PN/DP, CPU 1518-4 PN/DP all supported
S7-300 CPU PN-CPU with integrated PROFINET interface (CPU 314C-2 PN/DP, 315-2 PN/DP, 317-2 PN/DP, 319-3 PN/DP) Non-PN CPUs must add a CP 343-1 (Lean/Standard/Advanced)
TIA Portal V15.1 or higher recommended; V16, V17, V18, V19, V20 supported V20 introduces the latest S7-1500 instruction set, see TIA Portal V20: Instructions for communication tasks
STEP 7 V5.x V5.5 SP4 or later for S7-300 configuration in NetPro Use the latest Hotfix for ISO-on-TCP stability
Network reachability Both CPUs on the same subnet or routed through an IE switch Verify with PING or S7 routing function in TIA Portal
Access rights S7-300: "Permit access with PUT/GET communication" checkbox enabled in CPU Properties → Protection Required for S7-1500 to read/write S7-300 data without a configured connection
PUT/GET access flag: On S7-300 CPUs (CPU 315-2 PN/DP, CPU 317-2 PN/DP, CPU 319-3 PN/DP), the option "Permit access with PUT/GET communication from remote partner" is required in STEP 7 V5.x under CPU Properties → Communication. If this flag is off, PUT/GET calls from the S7-1500 fail with status W#16#80A1 or W#16#8301 even when the S7 connection itself is up.

Configuring an Unspecified S7 Connection

An unspecified S7 connection is the standard mechanism when the partner CPU is configured in a separate project. Both sides must create a connection entry that names the other CPU by IP address and TSAP, but neither needs the partner's project file.

Step-by-step on the S7-1500 side (TIA Portal)

  1. Open the device configuration of the S7-1500 CPU and select the PROFINET interface.
  2. Set the IP address and subnet; confirm the PN interface is online-capable.
  3. In Project Tree → "Devices & Networks", switch to the "Connections" tab.
  4. Click "New connection" and select connection type S7 connection.
  5. Choose partner "Unspecified"; enter partner IP address and partner TSAP.
  6. In connection properties → "Address details", set local TSAP (e.g., 10.00) and remote TSAP (e.g., 03.02). The remote TSAP must match the slot and connection of the S7-300 partner.
  7. Confirm "Active connection establishment" per direction. Typically the S7-1500 establishes actively if it is the data consumer (e.g., central collection of S7-300 data).
  8. Download the connection configuration; the connection appears in the connection table with a local ID, e.g., ID=W#16#0001.

Step-by-step on the S7-300 side (STEP 7 V5.x / NetPro)

  1. In NetPro, right-click the S7-300 CPU → "Insert New Connection".
  2. Select connection type S7 Connection and partner "Unspecified".
  3. Enter the S7-1500 IP address. The local TSAP defaults to 03.02 (slot 3) and the remote TSAP must be set to the value chosen on the S7-1500 side.
  4. Tick "Establish an active connection" only on the side that initiates the first connection setup; otherwise both will be passive and the connection will not come up.
  5. Save and download the connection to the S7-300 CPU. The active partner will then set up the connection on next TCON/PUT/BSEND invocation.
TSAP rule of thumb: The default local TSAP for an S7-300 PN-CPU is 03.02 (rack 0, slot 2 — the CPU slot). For the S7-1500, the default TSAP is 10.00 unless overridden. Mismatched TSAPs are the leading cause of W#16#80A2 / W#16#80A3 connection errors.

PUT/GET: Periodic, Small Data Exchange

PUT and GET are the simplest mechanism for cyclic data exchange of up to 160 user bytes per call (header + data on S7-300, header-stripped data on S7-1500). PUT writes data to a partner DB; GET reads from a partner DB.

Block differences between generations

Parameter S7-300 (FB14 PUT, FB15 GET) S7-1500 (PUT, GET instructions)
REQ input type BOOL (any edge) BOOL (rising edge)
ID WORD connection ID from NetPro WORD connection ID from TIA Portal connection table
ADDR_1 ANY pointer to partner area (e.g., P#DB100.DBX0.0 BYTE 100) Variant pointing to partner tag (e.g., "DB100" or a structured tag)
SD_1 / RD_1 ANY pointer to local area Variant pointing to local tag
LEN WORD, must match the byte count encoded in the ANY UINT auto-calculated from Variant
DONE, BUSY, ERROR, STATUS Outputs only DONE, BUSY, ERROR, STATUS outputs; instruction also has a "STATUS" of type DWORD

Working example: S7-1500 PUT/GET against S7-300

The S7-1500 program can use either direction. Below is the S7-1500 as a centralized collector, reading a 100-byte block from each of several S7-300 PLCs and writing a 32-byte command block back.

S7-1500 side (SCL, TIA Portal V20):

// S7-1500 reads 100 bytes from S7-300 DB100 starting at byte 0
#iGetBusy := FALSE;
#iGetDone := FALSE;
#iGetError := FALSE;
#iGetStatus := 16#0000;

GET_DB200  (REQ   := #tGetTrigger,
            ID    := W#16#0001,           // connection ID of the unspecified S7 connection
            ADDR_1:= "DB100" := P#DB100.DBX0.0 BYTE 100, // partner area
            RD_1  := "DB200" := P#DB200.DBX0.0 BYTE 100, // local area
            DONE  => #iGetDone,
            BUSY  => #iGetBusy,
            ERROR => #iGetError,
            STATUS=> #iGetStatus);

// S7-1500 writes 32 bytes of commands into S7-300 DB101
PUT_DB201  (REQ   := #tPutTrigger,
            ID    := W#16#0002,
            ADDR_1:= "DB101" := P#DB101.DBX0.0 BYTE 32,
            SD_1  := "DB201" := P#DB201.DBX0.0 BYTE 32,
            DONE  => #iPutDone,
            BUSY  => #iPutBusy,
            ERROR => #iPutError,
            STATUS=> #iPutStatus);

S7-300 side (STEP 7 V5.x, STL):

// FB15 GET, triggered by cyclic OB35 (100 ms typical)
CALL  FB 15, DB120
  REQ   :=M100.0
  ID    :=W#16#1                     // connection ID 1 (NetPro)
  ADDR_1:=P#M 200.0 BYTE 32         // source: S7-1500 area
  RD_1  :=P#DB101.DBX 0.0 BYTE 32   // local destination
  DONE  :=M100.1
  BUSY  :=M100.2
  ERROR :=M100.3
  STATUS:=MW102

// FB14 PUT, triggered by bit toggle when a command is queued
CALL  FB 14, DB121
  REQ   :=M110.0
  ID    :=W#16#1
  ADDR_1:=P#M 250.0 BYTE 64         // destination: S7-1500 area
  SD_1  :=P#DB100.DBX 0.0 BYTE 64   // local source
  DONE  :=M110.1
  BUSY  :=M110.2
  ERROR :=M110.3
  STATUS:=MW112
Connection ID alignment: The S7-300 NetPro connection ID is hex 1 in the example; the S7-1500 ID is hex 1. Both sides must use the same local connection ID for the same connection, but the IDs are project-local — there is no cross-project correlation required for the hex value itself.

BSEND/BRCV: Tens of Kilobytes per Transfer

For payload between 1 KB and 64 KB per call, BSEND/BRCV is the natural choice. The blocks break the data into a sequence of frames and reassemble them at the partner, providing an application-level handshake that is not present in TSEND/TRCV.

Block differences between generations

>
Parameter S7-300 (FB12 BSEND, FB13 BRCV) S7-1500 (BSEND, BRCV instructions)
R_ID DWORD (any non-zero value; partner uses the same R_ID) DWORD, must match partner
ID WORD connection ID from NetPro WORD connection ID from TIA Portal
SD_1 / RD_1 ANY pointer (P#DBxx.DBX0.0 BYTE n) Variant pointing to local tag
LEN WORD byte count UDINT byte count
DONE/BUSY/ERROR/STATUS BOOL/BOOL/BOOL/WORD BOOL/BOOL/BOOL/DWORD (STATUS widened to 32 bits)
Max LEN 32767 bytes (≤ 32 KB) 65534 bytes (≤ 64 KB)

Working example: S7-1500 BSEND 32 KB to S7-300 BRCV

S7-1500 side (SCL, TIA Portal V20):

// BSEND 32 768 bytes from DB300 to S7-300 DB300
BSEND_DB300 (REQ    := #tSendTrigger,
             ID     := W#16#0010,
             R_ID   := DW#16#C0FFEE01,
             SD_1   := "DB300" := P#DB300.DBX0.0 BYTE 32768,
             LEN    := 32768,
             DONE   => #iBsDone,
             BUSY   => #iBsBusy,
             ERROR  => #iBsError,
             STATUS => #iBsStatus);

S7-300 side (STEP 7 V5.x, STL):

// BRCV with the same R_ID
CALL  FB 13, DB150
  EN     :=TRUE
  ID     :=W#16#1
  R_ID   :=DW#16#C0FFEE01
  ADDR_1 :=P#DB300.DBX 0.0 BYTE 32768
  NDR    :=M200.0
  ERROR  :=M200.1
  STATUS :=MW202
  LEN    :=MW204

The R_ID value DW#16#C0FFEE01 ties the BSEND and BRCV pair on both CPUs. Each S7 connection can carry multiple R_ID streams in parallel, allowing segmented data (e.g., one R_ID per cell).

Firmware note: On the S7-300, BSEND and BRCV are available on every CPU 31x PN/DP and every CP 343-1; the S7-300 has no 64 KB mode, so the practical limit per call is 32 KB even when the S7-1500 supports 64 KB. Plan the DB on the S7-300 side to ≤ 32 KB per BRCV instance, or chain multiple calls with different R_IDs.

Open User Communication: TCON / TSEND / TRCV

OUC is the most flexible path because it does not require a configured connection in NetPro or TIA Portal. Both CPUs create a connection description (TCON_PARAM / TCON_IP_RFC) and establish the connection entirely from program code. This is the only path available when the partner IP is not known at engineering time, or when the project files cannot be merged.

Connection description layout

Both S7-300 (FB65 TCON) and S7-1500 (TCON instruction) use a data block of type TCON_IP_RFC (or TCON_IP_V4 on newer TIA Portal V17+ versions) of length 64 bytes. Fields must match on both sides:

Bytes Field Value (S7-1500 client → S7-300 server, ISO-on-TCP)
0..1 Interface ID W#16#0001 (PN-IE interface of the S7-1500)
2..3 Connection type B#16#0C = ISO-on-TCP (RFC 1006) / B#16#0B = TCP / B#16#0D = UDP
4..5 Active establishment W#16#0001 = active, W#16#0000 = passive
6..9 Remote IP e.g., 192.168.0.20 in big-endian byte order (C0.A8.00.14)
10..11 Remote port W#16#0000 for ISO-on-TCP (port is implicit 102) / W#16#2000 (8192) for raw TCP
12..13 Remote TSAP length / TSAP 02 03 02 for S7-300 CPU 317-2 PN/DP at rack 0 slot 2
14..19 Remote TSAP (cont.) filled per remote side
20..23 Local TSAP (or empty for TCP/UDP) e.g., 10.00 for S7-1500

Note that the S7-300 side uses the same 64-byte layout in DBxx; the field names and offsets are identical. Mismatched active/passive flags or mismatched TSAP are the dominant cause of failed TCON calls.

Working example: S7-1500 TCON/TSEND/TRCV ↔ S7-300 FB65/FB63/FB64

S7-1500 side (SCL, TIA Portal V20):

// Data block "TCON_Config_DB" of type TCON_IP_V4 (64 bytes)
// Pre-load via startup or HMI; fields shown at runtime in HEX view
TCON_S7300  (REQ    := #tConnectTrigger,
             ID     := W#16#0020,
             CONNECT:= "TCON_Config_DB",
             DONE   => #iConDone,
             BUSY   => #iConBusy,
             ERROR  => #iConError,
             STATUS => #iConStatus);

// TSEND after TCON is established
TSEND_500  (REQ    := #tSendTrigger,
            CONT   := 1,
            ID     := W#16#0020,
            LEN    := 16384,
            DATA   := "DB500.Diakoppler_Block_0",
            DONE   => #iSendDone,
            BUSY   => #iSendBusy,
            ERROR  => #iSendError,
            STATUS => #iSendStatus);

// TRCV 8 KB into DB600
TRCV_600   (EN_R   := TRUE,
            CONT   := 1,
            ID     := W#16#0020,
            LEN    := 8192,
            DATA   := "DB600.EmpfangsPuffer",
            NDR    => #iRcvNewData,
            BUSY   => #iRcvBusy,
            ERROR  => #iRcvError,
            STATUS => #iRcvStatus,
            RCVD_LEN=> #iRcvLen);

S7-300 side (STEP 7 V5.x, STL):

// FB65 TCON, passive. Connection description in DB200 (64 bytes)
CALL  FB 65, DB210
  REQ     :=M300.0
  ID      :=W#16#2
  CONNECT :=P#DB200.DBX 0.0 BYTE 64
  DONE    :=M300.1
  BUSY    :=M300.2
  ERROR   :=M300.3
  STATUS  :=MW302

// FB63 TSEND, triggered by trigger bit
CALL  FB 63, DB211
  REQ     :=M310.0
  ID      :=W#16#2
  LEN     :=16384
  DATA    :=P#DB500.DBX 0.0 BYTE 16384
  DONE    :=M310.1
  BUSY    :=M310.2
  ERROR   :=M310.3
  STATUS  :=MW312

// FB64 TRCV, always enabled after connection is up
CALL  FB 64, DB212
  EN_R    :=M320.0
  ID      :=W#16#2
  LEN     :=8192
  DATA    :=P#DB600.DBX 0.0 BYTE 8192
  NDR     :=M320.1
  ERROR   :=M320.2
  STATUS  :=MW322
  LEN     :=MW324

The S7-1500 is configured as active (it initiates the TCP handshake); the S7-300 is passive. Both use connection ID 0x0020 (S7-1500) and 0x2 (S7-300), which are local identifiers. The same connection description block layout is used on both sides — the legacy TCON_IP_RFC and the newer TCON_IP_V4 are byte-compatible for the standard fields.

PLCSIM Cross-Version Testing

Cross-version simulation is limited: the legacy S7-PLCSIM (V5.4 SP8 and earlier) cannot communicate with S7-PLCSIM in TIA Portal (V14+), and TIA Portal S7-PLCSIM instances only communicate with other TIA Portal S7-PLCSIM instances of compatible firmware ranges. Cross-generation testing of S7-300 ↔ S7-1500 therefore requires one of the following:

  • Two physical CPUs, or a CPU 31x PN/DP and an ET 200S CPU paired with an S7-1500 (any S7-1500 CPU/PN with a physical PN port)
  • An HMI device simulation in TIA Portal plus a PLCSIM instance for the S7-1500 and the S7-300, with PN-IO routing through the local interface of the engineering PC
  • Loopback on a single engineering PC using the SIMATIC NET IE Softnet, two virtual MAC addresses, and the Softbus driver
PLCSIM V20 caveat: S7-PLCSIM V20 in TIA Portal V20 supports simulation of S7-1500 instances up to firmware V3.1 and S7-300 firmware via the integrated SIMATIC S7-300 simulation. Multi-instance communication is supported in the same instance boundary, but a separate legacy PLCSIM V5.4 running on the same PC cannot be reached from S7-PLCSIM V20. Plan physical hardware or a Softnet-based loopback for end-to-end validation.

Error Codes and Diagnostics

Two families of error codes apply: TCON/TCON family (any OUC) and PUT/GET/BSEND/BRCV family. The S7-1500 reports STATUS as DWORD; the S7-300 reports STATUS as WORD. The lower 16 bits of the S7-1500 status match the S7-300 status.

TCON family

STATUS (hex) Meaning Field action
0000 Connection established / OK Continue
7000 No job active Trigger REQ
7001 First call pending Wait for DONE
7002 Follow-up call pending Wait for DONE
8080 Same ID for different connection types Re-check ID uniqueness; S7 connection and OUC must not share IDs
8081 Timeout, partner not reachable Verify partner CPU is RUN, network reachable, IP correct
8082 Local resource shortage Reduce number of open connections; check CPU connection resource count
80A1 Connection refused / partner ended Re-establish; check S7-300 protection / access flag
80A2 Partner IP not reachable PING test; check VLAN, subnet mask, gateway
80A3 ARP failure Check ARP cache; verify partner is online (LED on PN port)
80A4 TCP RST received Partner rejected connection; verify port / TSAP / protection settings
80B1 Connection resource shortage on local CPU CPU at max connections; free one or upgrade CPU
80C1 Connection request aborted Local CPU rejected own request; re-initialize connection DB
80C2 Connection ID already exists Use unique ID per connection
80C3 Local connection already active TDISCON before re-TCON

PUT/GET family

STATUS (hex) Meaning
0000 OK
7000 No job
7001 First call active
7002 Follow-up call active
8090 Local area does not exist (e.g., DB number out of range)
8091 Partner area does not exist (e.g., partner DB not loaded)
80A0 Negative acknowledgment from partner
80A1 Connection aborted by partner

BSEND/BRCV family

STATUS (hex) Meaning
0000 OK
7000 No job
7001 First call active
7002 Follow-up call active
8090 Receive area too small (BRCV)
8091 Overflow in receive DB
8092 Parameter error (R_ID mismatch, ID not configured)
80A0 Negative acknowledgment
80A1 Connection aborted

When the S7-1500 receives a STATUS of W#16#8301 on a PUT/GET, this is a "connection aborted by partner, partner at maximum number of connections" — typically resolved by enabling "Permit access with PUT/GET communication" on the S7-300 CPU properties page.

Troubleshooting Matrix

Symptom Likely root cause First action
Connection never comes up, TCON STATUS = 80A2 IP not reachable Run PING from the S7-1500 online diagnostics; verify subnet mask and gateway
TCON STATUS = 80A1 right after first call Partner CPU at maximum connections or PUT/GET access disabled Enable PUT/GET access on S7-300; check number of configured connections
TCON STATUS = 8081 (timeout) Partner CPU in STOP, or wrong TSAP Place partner in RUN, verify TSAP (e.g., 03.02 for S7-300, 10.00 for S7-1500)
BSEND BUSY indefinitely, no DONE Partner BRCV not in OB1 or in wrong OB Place BRCV in OB1 with EN_R = TRUE on the S7-300
PUT/GET STATUS = 8091 (partner area missing) Partner DB not created or wrong number Verify partner DB exists, is not optimized (symbolic-only), and is not Unlinked
PUT works, GET returns 80A0 Partner PUT/GET access disabled Enable "Permit access with PUT/GET communication" on S7-300 CPU
Data scrambled / wrong byte order Big-endian vs little-endian mismatch Use SWAP or a manual byte swap on both sides for 16/32-bit values
TCON STATUS = 80C2 Connection ID conflict Audit the connection table; each ID must be unique per CPU
Intermittent connection drops Watchdog on intermediate switch or PN port flap Check switch port statistics, set port to 100 Mbit/Full Duplex, disable EEE (green Ethernet)
BSEND/BRCV works in OB1, fails in OB35 OB35 too fast for data volume; cycle time exceeded Move BSEND to OB1, or increase OB35 cycle to 200 ms

Verification and Commissioning

  1. Network reachability: PING the S7-300 from the S7-1500 online diagnostics; PING the S7-1500 from STEP 7 V5.x on the same PC.
  2. Connection state: Open "Online & Diagnostics" on the S7-1500 → "Connections" tab. Verify the connection reports "Established".
  3. Functional test, PUT/GET: Force a value in DB101 on the S7-300; observe the mirror in DB201 on the S7-1500; verify DONE pulses and STATUS = 0000.
  4. Functional test, BSEND/BRCV: Send a 32 KB block; check NDR on the S7-300 BRCV and LEN = 32768.
  5. Functional test, OUC: Send a 16 KB block over TCON/TSEND; verify RCVD_LEN on the S7-1500 TRCV.
  6. Stress test: Trigger 1000 cycles; check STATUS for any non-zero values; check CPU connection diagnostics for retransmits or aborted frames.
  7. Restart behavior: Power-cycle the S7-300; verify the S7-1500 reports STATUS 80A1 transiently, then re-establishes automatically (active partner).
  8. CPU mode change: Switch the S7-300 to STOP; verify the S7-1500 reports STATUS 80A1, then recovers on S7-300 RUN return.

For full engineering reference, the official Siemens application example S7 Communication between SIMATIC S7-1500 and SIMATIC S7-300 provides step-by-step TIA Portal V15.1 and STEP 7 V5.5 SP4 sample projects. The TIA Portal V20 instruction catalog reference Instructions for communication tasks (S7-300, S7-400, S7-1500) documents the S7-1500 instruction set and the differences from the legacy S7-300 function blocks.

FAQ

What is the maximum user-data payload per PUT/GET call between S7-1500 and S7-300?

PUT/GET transfers up to 160 bytes of user data per call (header + data on the S7-300 side, header-stripped on the S7-1500). For larger payloads, use BSEND/BRCV (up to 32 KB on the S7-300, 64 KB on the S7-1500) or TCON/TSEND with up to 64 KB on the S7-1500.

Can I configure the S7 connection in a single project even if the partner CPU is in a separate project?

Yes. Use an "unspecified S7 connection" on both sides. The S7-1500 is configured in TIA Portal under Devices & Networks → Connections, with the partner IP and TSAP entered manually. The S7-300 is configured in NetPro with the same TSAP pair. Connection IDs are project-local.

Why does BSEND on the S7-1500 stay BUSY indefinitely against an S7-300 BRCV?

The S7-300 BRCV must be called cyclically with EN_R = TRUE. If BRCV is only called in OB35 with a 100 ms cycle and the data volume is large, the cycle time can be exceeded; move BRCV to OB1 or increase the OB35 cycle. A missing BRCV call is the most common cause of BSEND stuck at BUSY.

Is S7-PLCSIM in TIA Portal able to communicate with the legacy S7-PLCSIM V5.4?

No. S7-PLCSIM V5.4 cannot communicate with S7-PLCSIM V14 or higher. For S7-300 ↔ S7-1500 cross-generation validation, use two physical CPUs, a CPU and an ET 200S CPU plus an S7-1500, or SIMATIC NET Softnet loopback with virtual MAC addresses on the engineering PC.

Why does my S7-1500 PUT/GET fail with W#16#8301 against the S7-300?

W#16#8301 is reported when the S7-300 rejects the access because the "Permit access with PUT/GET communication from remote partner" option is not enabled. Open the S7-300 CPU properties in STEP 7 V5.x, switch to the Protection tab, and tick the access flag. Download the new configuration to the S7-300.

Do I need different TSAPs on the S7-1500 and S7-300?

Yes. The local TSAP on the S7-1500 is typically 10.00 (override of the default 01.01) and the local TSAP on the S7-300 PN-CPU is 03.02 (rack 0, slot 2). On each side, the remote TSAP must equal the local TSAP of the other CPU. Mismatched TSAPs return STATUS 80A2 or 80A1.

Can I use TCP instead of ISO-on-TCP for S7-1500 ↔ S7-300 communication?

Yes, with TCON/TSEND/TRCV you can select B#16#0B (TCP) or B#16#0D (UDP) in the connection description. ISO-on-TCP (B#16#0C) is the default and is preferred for S7-1500 ↔ S7-300 because it provides explicit connection establishment and termination. Pure TCP is appropriate for non-S7 partners that do not speak ISO-on-TCP.

Back to blog