Problem Overview
Establishing ISO-on-TCP (RFC 1006) communication between a SIMATIC S7-400 CPU 414-2 DP paired with a CP 443-1 Ethernet communications processor and a SIMATIC S7-300 CPU 317-2 PN/DP with its integrated PROFINET interface requires asymmetric block selection. The S7-400 CPU 414-2 DP cannot terminate ISO-on-TCP directly because the Ethernet interface lives on the CP 443-1, so the legacy AG_SEND (FB12) / AG_RECV (FB13) or FC5 / FC6 functions are mandatory on the 400 side. The S7-300 PN/DP, in contrast, terminates ISO-on-TCP natively through its integrated PROFINET port using the modern Open Communication block set: TCON, TSEND, TRECV, and TDISCON (FB65 / FB66 / FB67 / FB68).
When this heterogeneous pairing is configured without matching TSAPs, an incomplete TCON_Param (UDT65) data block, or an improperly assembled NetPro project, both sides report idle or failure states: STATUS = 7000 (hex) on the S7-400 AG_SEND (meaning "No job in progress") and RET_VAL = 80B7 (hex) on the S7-300 TCON (indicating "Connection termination / parameter length inconsistency" depending on firmware version). The article below documents the engineering path to resolve both codes by configuring the ISO-on-TCP link end-to-end from NetPro through the user program on both controllers.
System Architecture and Topology
The reference topology pairs a Siemens CPU 414-2 DP with order number 6ES7414-2XJ04-0AB0 (or comparable variant) in slot 2 of an S7-400 rack, an external CP 443-1 (for example 6GK7443-1EX11-0XE0 for ISO-on-TCP support) in slot 4 of the central rack, and an S7-300 CPU 317-2 PN/DP (for example 6ES7317-2EK13-0AB0) hosting the integrated PN port at X2. Both Ethernet nodes occupy the same subnet, but the CP 443-1 must be assigned its own IP address and its logical base address must be read from HW Config.
Block Selection Matrix for ISO-on-TCP
The following matrix is binding for any project that mixes S7-400 + CP 443-1 with an S7-300 PN/DP CPU. Selecting the wrong block on either side is the single most common cause of STATUS 7000 / 80B7 at first compile.
| Controller | Interface | Mandatory Block Set | Optional Block Set | Library Path (STEP 7 V5.x) |
|---|---|---|---|---|
| S7-400 CPU 41x with CP 443-1 | CP 443-1 (external) | FB12 AG_SEND, FB13 AG_RECV | FC5 AG_SEND, FC6 AG_RECV (shorter parameter list) | SIMATIC_NET_CP > CP 400 > Blocks |
| S7-300 CPU 31x-2 PN/DP | Integrated PN port (X2) | FB65 TCON, FB63 TSEND, FB64 TRECV, FB68 TDISCON | FB67 USEND (only for UDP) | Standard Library > Communication Blocks > Open Communication |
| S7-300 CPU 31x with CP 343-1 | CP 343-1 (external) | FB12 AG_SEND, FB13 AG_RECV | FC5 / FC6 | SIMATIC_NET_CP > CP 300 > Blocks |
| S7-400 CPU 41x-3 PN/DP | Integrated PN port (X2) | FB65 TCON, FB63 TSEND, FB64 TRECV, FB68 TDISCON | - | Standard Library > Communication Blocks > Open Communication |
Error Code Reference
Both RET_VAL/STATUS values observed on this topology are documented in the Siemens Open Communication / AG block manuals. Use the table below as the first triage guide.
| Code (hex) | Block | Meaning | Likely Cause in This Topology | First Action |
|---|---|---|---|---|
| 0000 | AG_SEND / TCON | Job completed without error | None - normal completion | Continue monitoring |
| 7000 | AG_SEND / TCON | No job in progress / idle | ACT never set, or connection not established yet | Check NetPro, verify ACT/REQ, check DONE flag |
| 7001 | AG_SEND / TCON | Job started, busy | Normal transient state | Wait for DONE / ERROR |
| 7002 | AG_SEND / TCON | Job complete, ready for next | Normal completion | Read DONE / STATUS |
| 80A1 | AG_SEND | User data pointer invalid | SEND / LEN ANY pointer or length mismatch | Validate ANY pointer and LEN |
| 80A3 | AG_SEND / TCON | Already active / object busy | Instance being driven by OB1 and OB35 simultaneously | Centralize the call in one OB |
| 80B1 | TCON | Connection already established | TCON called twice with same ID | Check ID uniqueness |
| 80B2 | TCON | Resources exhausted (max 16 connections per PN port) | More than 16 connections requested on one PN interface | Distribute across CP and PN |
| 80B3 | TCON | Parameter assignment error | TCON_Param block_length, local_tsap_id_len, rem_tsap_id_len, etc., inconsistent | Recompute every length field against the TSAP string in TCON_Param |
| 80B4 | TCON | Connection terminated by remote | Partner CPU in STOP or CP 443-1 not yet ONLINE | Check CPU mode and CP online state |
| 80B5 | TCON | Connection setup rejected / partner unreachable | Wrong IP, wrong TSAP, wrong LADDR | Verify IP routing and NetPro configuration |
| 80B6 | TCON | Local resource shortage (memory) | CPU 317-2 PN/DP memory overload | Check S7-300 work memory, reduce DB count |
| 80B7 | TCON | Connection termination / data length inconsistency | NetPro not compiled with matching TSAPs, or TCON_Param length fields not all correct | Recompile NetPro, re-derive TCON_Param |
| 80B8 | TCON | Connection terminated by partner | Partner reset | Check partner CPU / CP |
| 80B9 | TCON | Connection aborted | TDISCON called or physical link down | Check cable, switch, port LED |
| 80C3 | AG_SEND | Resource shortage on CP | Too many AG_SEND jobs in parallel on CP 443-1 | Serialize calls, lower polling rate |
| 80C4 | AG_SEND | Temporary resource error | Transient on CP | Retry after next scan |
Root Cause Analysis
The reported pattern - STATUS 7000 on the S7-400 and 80B7 on the S7-300 - has a single dominant root cause in this topology: the ISO-on-TCP connection was not parameterized symmetrically between NetPro (STEP 7 V5.x classic) and the S7-300 TCON_Param data block.
Two failure surfaces must be reconciled:
- NetPro assignment. The connection object in NetPro must show "established" for both stations. The CP 443-1 side and the S7-300 PN side must agree on the connection type (ISO-on-TCP), the local TSAP, the remote TSAP, the partner IP and the connection ID. If NetPro was opened but the project was not compiled to both stations (PLC > Compile and Download Objects), the S7-300 has no valid connection record and TCON returns 80B7 immediately.
- TCON_Param data block structure. Even with a correct NetPro project, the S7-300 program must populate TCON_Param with the exact TSAP strings, exact TSAP lengths, the connection ID, and the connection type byte. A common defect is to copy a TCON_Param from a sample project and forget to update the length fields after editing the TSAP string. For example, setting local_tsap_id_len = 16 while the actual string in local_tsap_id is only four ASCII characters (e.g. "10.01") causes the TCON call to walk past the boundary of the local_tsap_id array and read garbage for the next field, surfacing as 80B7.
Secondary root causes that surface identical codes include firewall blocking TCP port 102, mismatched firmware versions (CP 443-1 firmware < V2.1 has limited ISO-on-TCP stability with newer S7-300 CPUs), and a CP 443-1 LADDR that points to the wrong logical address (for example 8191 instead of 8192 when the CP is in slot 4 of a CR2).
NetPro Connection Configuration
Perform the following configuration inside STEP 7 V5.5 SPx (the same procedure applies to STEP 7 Professional V13+ in compatibility mode). For TIA Portal projects on newer firmware, the equivalent is to create a connection from the device view of the S7-300 PN/DP port.
- Open SIMATIC Manager > Options > NetPro.
- Right-click the CP 443-1 in the S7-400 station and choose Insert New Connection.
- In the connection partner dialog select the S7-300 station and the S7-300 PN port, then choose connection type ISO-on-TCP connection.
- Assign a unique Connection ID (for example W#16#0001 / decimal 1). This is the ID used by both AG_SEND.ID on the 400 side and TCON.ID / TCON_Param.id on the 300 side.
- On the General tab of the connection properties set:
- Interface: CP 443-1 (S7-400) / PN/DP (S7-300)
-
Local TSAP: typically the slot-internal TSAP of the CP, e.g.
10.01for CP in slot 4 of a CR (rack 0, slot 4 means rack 0 / slot 4 -> 10 01). With explicit strings, use ASCII characters and keep them 2 to 16 bytes. -
Partner TSAP: typically
10.02or any user-defined string that the S7-300 TCON_Param.rem_tsap_id echoes back. - Connection path: leave at default ("Use the configuration in the connection partner").
- Confirm with OK and verify the connection object appears under the CP 443-1 with the configured ID and TSAPs.
- Save and compile: PLC > Compile and Download Objects. Both stations must be online to download. If the S7-300 is offline, NetPro will compile but the connection will not be resident on the partner.
RR.SS where RR is the rack (hex) and SS is the slot (hex). For example, rack 0 slot 4 yields TSAP 00.04. For the integrated PN port of the S7-300, the convention is RR.SS derived from the configuration in HW Config. The strings must match exactly between NetPro and TCON_Param, including leading zeros and the dot separator.
TCON_Param UDT65 Configuration on the S7-300
The TCON_Param is a UDT65 structure that TCON passes to the PROFINET stack. Every length field is counted in bytes and must be consistent with the actual TSAP strings stored in the same DB.
| Byte | Field | Type | Value for ISO-on-TCP via PN | Comment |
|---|---|---|---|---|
| 0..1 | block_length | WORD | W#16#0040 (64) | Length of TCON_Param excluding the block_length word itself. 64 is mandatory for ISO-on-TCP via PN. |
| 2..3 | id | WORD | W#16#0001 | Connection ID. Must match NetPro and the TCON.ID input. |
| 4 | connection_type | BYTE | B#16#12 | 12 = ISO-on-TCP (RFC 1006). Use B#16#01 for TCP native, B#16#13 for UDP. |
| 5 | active_establish | BOOL (in BYTE) | TRUE for client, FALSE for server | Only one side should be active. Pick one station to issue the connect. |
| 6 | local_device_id | BYTE | B#16#01 | 1 = integrated PN port, 2 = CP (used when TCON runs on an S7-300 with CP 343-1). |
| 7 | local_tsap_id_len | BYTE | 2 to 16 | Length in bytes of local_tsap_id string. Must match the string length, NOT 16. |
| 8 | rem_subnet_id_len | BYTE | 0 | Subnet ID string length. For ISO-on-TCP via Ethernet always 0. |
| 9 | rem_staddr_len | BYTE | 4 | Length of remote IP address (IPv4 = 4 bytes). Set to 0 only if remote address is unspecified (e.g. for the active partner of a passive listen). |
| 10 | rem_tsap_id_len | BYTE | 2 to 16 | Length of remote TSAP string. Must equal the actual character count. |
| 11 | next_staddr_len | BYTE | 0 | Length of next router address. Always 0 for ISO-on-TCP via PN. |
| 12..13 | spare | WORD | W#16#0000 | Reserved, set to 0. |
| 14..29 | local_tsap_id | ARRAY[1..16] OF BYTE | ASCII "10.02" or user string | Local TSAP string. Fill unused bytes with W#16#00. |
| 30..33 | rem_staddr | ARRAY[1..4] OF BYTE | 192,168,0,10 (decimal octets) | IP address of CP 443-1 (S7-400). |
| 34..49 | rem_tsap_id | ARRAY[1..16] OF BYTE | ASCII "10.01" or user string | Remote TSAP. Must match the local TSAP declared on the CP 443-1 side in NetPro. |
| 50..53 | next_staddr | ARRAY[1..4] OF BYTE | W#16#00,00,00,00 | Reserved. |
| 54..63 | spare | ARRAY[1..10] OF BYTE | W#16#00 | Reserved. |
A worked example for the S7-300 in OB1, calling TCON with a DB120 TCON_Param instance, looks like the declaration below.
DATA_BLOCK DB120
STRUCT
block_length : WORD := W#16#0040; // 64 bytes total
id : WORD := W#16#0001; // Connection ID 1
connection_type : BYTE := B#16#12; // ISO-on-TCP
active_establish : BOOL := TRUE; // S7-300 acts as active client
local_device_id : BYTE := B#16#01; // PN port
local_tsap_id_len : BYTE := B#16#05; // "10.02" = 5 bytes
rem_subnet_id_len : BYTE := B#16#00; // no subnet string
rem_staddr_len : BYTE := B#16#04; // IPv4
rem_tsap_id_len : BYTE := B#16#05; // "10.01" = 5 bytes
next_staddr_len : BYTE := B#16#00;
spare_word : WORD := W#16#0000;
local_tsap_id : ARRAY[1..16] OF BYTE := B#16#00,B#16#00,B#16#00,B#16#00,
B#16#00,B#16#00,B#16#00,B#16#00,
B#16#00,B#16#00,B#16#00,B#16#00,
B#16#00,B#16#00,B#16#00,B#16#00;
rem_staddr : ARRAY[1..4] OF BYTE := B#16#C0,B#16#A8,B#16#00,B#16#0A;
// 192.168.0.10 = CP 443-1
rem_tsap_id : ARRAY[1..16] OF BYTE := B#16#00,B#16#00,B#16#00,B#16#00,
B#16#00,B#16#00,B#16#00,B#16#00,
B#16#00,B#16#00,B#16#00,B#16#00,
B#16#00,B#16#00,B#16#00,B#16#00;
next_staddr : ARRAY[1..4] OF BYTE := B#16#00,B#16#00,B#16#00,B#16#00;
spare_array : ARRAY[1..10] OF BYTE := B#16#00,B#16#00,B#16#00,B#16#00,
B#16#00,B#16#00,B#16#00,B#16#00,
B#16#00,B#16#00;
END_STRUCT;
END_DATA_BLOCK
Then in OB1 initialize the TSAP strings exactly once on cold restart (OB100) and call TCON:
// OB100 - Cold restart
CALL FB65 , DB65 // TCON instance DB
REQ := FALSE
ID := W#16#0001
CONNECT:= "DB120".
DONE := DONE_1
BUSY := BUSY_1
ERROR := ERROR_1
STATUS := STATUS_1;
// Initialize TSAP strings in OB100
DB120.local_tsap_id[1] := B#16#31; // '1'
DB120.local_tsap_id[2] := B#16#30; // '0'
DB120.local_tsap_id[3] := B#16#2E; // '.'
DB120.local_tsap_id[4] := B#16#30; // '0'
DB120.local_tsap_id[5] := B#16#32; // '2'
DB120.rem_tsap_id[1] := B#16#31;
DB120.rem_tsap_id[2] := B#16#30;
DB120.rem_tsap_id[3] := B#16#2E;
DB120.rem_tsap_id[4] := B#16#30;
DB120.rem_tsap_id[5] := B#16#31;
local_tsap_id_len := B#16#10 (16) while the actual TSAP is only 5 bytes ("10.02"), TCON reads the next 11 bytes past the string, finds the IP address array, and interprets it as part of the TSAP. The PROFINET stack rejects this malformed TSAP and returns 80B7. Always set local_tsap_id_len and rem_tsap_id_len to the exact byte count of the string and zero-fill the remaining array slots.
AG_SEND / AG_RECV Configuration on the S7-400
On the S7-400, the AG_SEND / AG_RECV blocks call the CP 443-1 over its logical base address. The CP's base address must be read from HW Config (Properties > CP 443-1 > Diagnostic). For a CP 443-1 in slot 4 of a CR2, the typical LADDR is W#16#2000 (decimal 8192) for input area and W#16#2001 for output area; the AG_SEND.LADDR points to the diagnostic base, typically one slot above the input area. Verify with the configuration dialog.
// OB1 cycle - call AG_SEND on the 414 side
CALL FB12 , DB12
ACT := M10.0 // rising edge triggers a send job
ID := 1 // Connection ID 1 (matches NetPro)
LADDR := W#16#2000 // CP 443-1 diagnostic base
SEND := P#DB200.DBX0.0 BYTE 20 // 20 bytes from DB200
LEN := 20
DONE := M10.1
ERROR := M10.2
STATUS := MW12;
// OB1 cycle - call AG_RECV on the 414 side
CALL FB13 , DB13
ID := 1
LADDR := W#16#2000
RECV := P#DB201.DBX0.0 BYTE 20 // 20 bytes from DB201
NDR := M10.3
ERROR := M10.4
STATUS := MW14;
LEN := MW16;
If MW12 (STATUS) = 7000 continuously, the block is in idle state: either ACT never rose, or the connection record has not been downloaded to the CP 443-1. Open NetPro, right-click the connection object, choose Connection Status (only available online) and confirm the connection shows established. If the status shows not established, the partner CPU is not in RUN, the CP is not online, or the TSAP negotiation failed.
Step-by-Step Commissioning Procedure
-
Verify cabling and IP plan. Connect CP 443-1 (port X1) and S7-300 PN (X2) to a managed switch. Assign static IPs in the same /24 subnet (e.g. 192.168.0.10 / 255.255.255.0 on the CP, 192.168.0.20 on the PN). Disable any firewall on the engineering PG and confirm a basic
pingsucceeds. - Configure HW Config. Open the S7-400 station, place the CPU 414-2 DP, place the CP 443-1 in slot 4, assign the IP address, set the diagnostic base LADDR (default OK in most projects). Open the S7-300 station, place the CPU 317-2 PN/DP, configure the integrated PN port (X2) with its IP, verify that the port is enabled in HW Config (Properties > Port X2 > "Port is used").
- Create the NetPro connection. Follow the procedure in the previous section. Verify that the connection appears under both stations in NetPro with matching ID and TSAPs.
- Compile and download. PLC > Compile and Download Objects. Both PLCs must be in STOP or RUN; download to both. The connection record now lives in the S7-300 connection DB (generated by NetPro) and in the CP 443-1 of the S7-400.
- Build the user program. Declare DB120 (TCON_Param) on the S7-300 as shown above, and add FB12 / FB13 instances on the S7-400.
- Trigger initial connect. In OB100 of the S7-300, set the initialize flag and call TCON with REQ = TRUE exactly once. TCON transitions REQ and reports DONE / STATUS. After a successful connect, the connection is owned by the PN port until TDISCON is called.
- Drive cyclic data. Call TSEND / TRECV in OB35 on the S7-300, and AG_SEND / AG_RECV in OB1 or OB35 on the S7-400. Use a falling-edge monitor on ERROR to clear latching fault latches.
Verification and Diagnostics
After commissioning, run the following checks. Each check maps to a specific element of the topology.
| Check | Method | Expected Result | If It Fails |
|---|---|---|---|
| Physical link | LED on CP 443-1 port X1 and S7-300 PN port X2 | Green Link LED steady | Replace cable, verify switch port speed (10/100 Mbit, full duplex) |
| IP reachability |
ping 192.168.0.10 from PG |
Reply < 5 ms | Check subnet mask, IP, firewall |
| CP 443-1 online | NetPro > right-click CP > Status | CP online, connection established | Re-download connection, restart CP (PIQ reset) |
| CPU 317 PN connection status | Online > Connections | Connection ID 1 = established | Inspect TCON_Param lengths |
| AG_SEND STATUS | Monitor MW12 in VAT | Transitions 7000 -> 7001 -> 7002 on success | If 80xx, look up the 80-series code |
| TCON STATUS | Monitor STATUS_1 in VAT | 0000 after TCON returns DONE | Map 80B3 / 80B7 to TSAP mismatch |
| TSEND STATUS | Monitor after each TSEND call | 0000 or 7002 on success | Check REQ rising edge, LEN > 0 |
| TRECV NDR | Watch NDR rising edge | NDR pulses per receive | Verify partner's AG_SEND is firing |
| Connection diagnostics buffer | CPU 317 > Information > Diagnostic Buffer | No "connection abort" entries | Cross-reference to TCON STATUS at the timestamp |
For deeper diagnostics, open Online > Diagnostics > Communication in STEP 7 to view all ISO-on-TCP connections and their current state. On the CP 443-1, the diagnostic page lists the connection state as connection established, connection terminated, connection setup active, or no connection. Match the diagnostic output to the STATUS codes returned by AG_SEND/AG_RECV.
Advanced Troubleshooting
When the standard checks do not clear STATUS 7000 / 80B7, the following extended diagnostics apply.
Firmware and Compatibility
The CP 443-1 must be on a firmware version that supports ISO-on-TCP coexistence with the partner firmware. For S7-400 with S7-300 PN/DP combinations, the minimum recommended firmware is CP 443-1 V2.1.x (for the EX11 / EX20 / GX20 variants) and CPU 317-2 PN/DP V3.x. Mismatches below V2.0 on the CP produce intermittent 80B7 with a corrected TCON_Param. Apply firmware via the SIMATIC Manager > Options > Install Firmware dialog using the UPD file published in the Siemens Product Support portal.
Connection ID Collision
Connection IDs must be unique across the entire S7-300 station, not just per PN port. If the project also holds an S7 connection to a different CPU using ID 1, TCON with the same ID returns 80B1 (already established) on a duplicate attempt and 80B3 (parameter assignment error) on a re-attempt. Re-number the ISO-on-TCP connection to ID 2, 3, ... 16 (PN port limit is 16 connections).
Local TSAP ID Length Mismatch (the Original Symptom)
This is the specific defect that produced the symptoms in the source. In OB1 the original program copy-pasted a TCON_Param from a sample with local_tsap_id_len := W#16#10 (16), rem_tsap_id_len := W#16#10 (16), and rem_staddr_len := W#16#04 (4). With the actual TSAP "10.02" being 5 bytes, the PN stack reads bytes 6..16 of the local_tsap_id array - which were initialized to 0 - and constructs a TSAP of 10.02\0\0\0\0\0\0\0\0\0\0\0. The CP 443-1 rejects this because its TSAP declaration in NetPro is only 5 bytes. TCON returns 80B7. Correct both length fields to B#16#05 and the connection establishes.
Firewall and Port 102
ISO-on-TCP uses TCP port 102. Industrial firewalls (for example SCALANCE S with firewall enabled) drop port 102 unless an explicit rule allows it. If the project crosses a managed switch with ACLs, configure the ACL to permit TCP 102 from 192.168.0.0/24 to 192.168.0.0/24.
Active vs Passive
Only one side should set active_establish := TRUE. If both sides are active, TCON returns 80B4 / 80B7 depending on who wins the TCP handshake race. If neither side is active, the connection waits forever. Pick the controller that powers up first as active.
CP 443-1 in the Wrong Slot
If the CP 443-1 is moved between slots without updating HW Config, AG_SEND LADDR points to a non-existent logical address. The error is 80A1 (pointer error) or 80C3 (CP resource not available). Open HW Config and re-read the diagnostic base address.
Migrating to TIA Portal
For projects moving to TIA Portal V15.1 or later, the same topology is implemented as a PUT/GET or Open User Communication connection. TIA Portal automatically generates TCON_Param when the user adds an Open User Communication block (TSEND_C, TRCV_C, TCON, TDISCON) to the S7-300 PN/DP. For the S7-400 with CP 443-1, TIA Portal still exposes the AG_SEND / AG_RECV blocks under Instructions > Communication > Open User Communication. Importing the STEP 7 V5.x project retains the NetPro configuration, but the TCON_Param must still be reviewed for length accuracy because the import can default the TSAP lengths to 16.
From TIA Portal V16 onward the recommended pattern is to use TSEND_C / TRCV_C on both sides (these combine TCON + TSEND + TRECV into a single block) when the partner also supports the Open User Communication block set. For the S7-400 with CP 443-1, TSEND_C / TRCV_C is available in the CP 443-1 function set; verify firmware compatibility before migration.
Safety and Best-Practice Notes
- Do not mix ISO-on-TCP and TCP native traffic on the same connection - the connection_type byte selects the framing and is fixed per connection.
- Always initialize TCON_Param in OB100 (cold restart) so that the strings survive a STOP->RUN transition without re-initialization. Initializing in OB1 with conditional logic may produce intermittent 80B7 during a hot restart.
- Monitor ERROR rising edges and latch a global "Communication Fault" flag. Bring the process to a safe state when the flag is set; do not allow the application to consume stale data from the partner.
- For critical data, validate received bytes with a CRC or a sequence counter. AG_RECV / TRECV do not perform data integrity checks beyond what the underlying TCP stack provides.
Summary Checklist
- CP 443-1 placed in STEP 7 project, IP and LADDR configured, firmware >= V2.1.
- S7-300 PN/DP port X2 configured with IP and subnet, port enabled.
- NetPro connection created, ID 1, ISO-on-TCP type, TSAPs configured symmetrically.
- NetPro compiled and downloaded to both stations.
- DB120 (TCON_Param) on the S7-300 populated with block_length = 64, connection_type = B#16#12, TSAP strings byte-accurate, TSAP lengths matching the string lengths.
- FB12 / FB13 called on the S7-400 with the correct LADDR (CP 443-1 diagnostic base) and ID 1.
- TCON called once in OB100 to establish the connection.
- TSEND / TRECV on the S7-300 and AG_SEND / AG_RECV on the S7-400 drive the data exchange.
- Diagnostics verified: CP 443-1 status = established, AG_SEND transitions 7000 -> 7001 -> 7002, TCON RET_VAL = 0000, TRECV NDR pulses per receive.
What does STATUS 7000 on AG_SEND actually mean?
STATUS 7000 (hex) on FB12 AG_SEND or FB13 AG_RECV means "no communication job active" - it is the idle state after the previous call completed and no new ACT edge has been detected. It becomes a defect only when it persists continuously despite a rising edge on ACT, in which case the connection record in NetPro has not been downloaded or the CP 443-1 is not in RUN. Reference the Siemens AG_SEND for S7-300/400 manual.
Why does TCON return 80B7 on the S7-300 side?
RET_VAL 80B7 (hex) on FB65 TCON usually indicates a malformed TCON_Param: the local_tsap_id_len or rem_tsap_id_len does not match the actual length of the TSAP string stored in the array, or the remote station has rejected the connection. Verify every length field against the actual TSAP string and confirm the partner CP 443-1 is online with the matching TSAP in NetPro. See the Siemens ISO-on-TCP FAQ for the recommended values.
Can the S7-400 CPU 414-2 DP run TCON directly without the CP 443-1?
No. The CPU 414-2 DP does not have an integrated PROFINET interface for ISO-on-TCP, so it must use the AG_SEND / AG_RECV blocks routed through the CP 443-1's logical base address. Only S7-400 CPUs with an integrated PN port (for example CPU 414-3 PN/DP) can run TCON natively. Reference the AG_SEND for S7-400 manual.
What connection_type byte must I use for ISO-on-TCP?
Set connection_type := B#16#12 (hexadecimal 12) in TCON_Param. Do not confuse this with B#16#01 (TCP native) or B#16#13 (UDP). The value selects RFC 1006 framing on TCP port 102 and must match the connection object declared in NetPro.
How many ISO-on-TCP connections can I run on the CPU 317-2 PN/DP integrated port?
The integrated PN port supports up to 16 Open User Communication connections (sum of TCP native, ISO-on-TCP, and UDP). Additional connections require an external CP 343-1 in the S7-300 rack. Connection IDs must be unique across the station (range W#16#0001 to W#16#0010 / decimal 1 to 16).