FW_TCP: Daten mittels FETCH und WRITE über TCP austauschen (S7-300, S7-400) - STEP 7

Open User Communication (S7-300, S7-400)

ft:publication_title
Open User Communication (S7-300, S7-400)
Product
STEP 7
Version
V21
Publication date
11/2025
Language
de-DE
FW_TCP: Daten mittels FETCH und WRITE über TCP austauschen

Beschreibung

Mit der Anweisung "FW_TCP" werden die Dienste FETCH/WRITE über die TCP Verbindung zur Verfügung gestellt.

Aufruf

Da für die Dienste FETCH/WRITE jeweils eine separate TCP Verbindung benötigt wird, wird die Anweisung zweimal im OB1 aufgerufen:

  • Der erste Aufruf mit Instanzdatenbaustein FETCH_TCP_DB stellt den Dienst FETCH über die TCP Verbindungen zur Verfügung.

  • Der zweite Aufruf mit Instanzdatenbaustein WRITE_TCP_DB stellt die Funktion WRITE über die TCP Verbindung zur Verfügung.

Die TCP Verbindung wird nach Kalt-, Warmstart und Wiederanlauf der CPU sowie nach Änderung der Verbindungsparameter automatisch aufgebaut. Die Parameter für den Verbindungsaufbau sind im DB "ConnectParam" hinterlegt (Beschreibung: Siehe unten). Über den Eingangsparameter ENABLE besteht die Möglichkeit, den Verbindungsaufbau und -abbau manuell zu steuern. Wenn die Verbindungsparameter geändert werden, dann wird die Verbindung automatisch ab- und wieder aufgebaut.

In der folgenden Abbildung ist der Ablauf der Anweisung "FW_TCP", der im OB1 aufgerufen wird und die Dienste FETCH und WRITE über TCP Verbindungen realisiert, schematisch dargestellt.

Verbindungsparameter des Instanzdatenbausteins "ConnectParam"

Folgende Verbindungsparameter werden vor dem Verbindungsaufbau überprüft:

  • connection_type

  • id

  • local_tsap_id

Wenn einer dieser Parameter nicht korrekt definiert ist, dann wird die Kommunikationsverbindung nicht aufgebaut. Es werden keine Daten gesendet bzw. empfangen.

  • Nachdem die Kommunikationsverbindung aufgebaut ist, wird ein 16 Byte langes Header-Telegramm der Dienste FETCH/WRITE empfangen. Das Header-Telegramm enthält die Information, ob ein FETCH- oder WRITE-Auftrag ansteht.

  • Wenn ein FETCH-Auftrag vorliegt, dann werden die Daten, die vom Kommunikationspartner angefordert werden, im Instanz-Datenbaustein DB210 der Anweisung aufbereitet und das Quittungstelegramm generiert. Das Quittungstelegramm wird inklusive der aufbereiteten Daten gesendet.

  • Wenn ein WRITE-Auftrag vorliegt, dann werden nach der Auswertung der 16 Bytes Header-Telegramm die Nutzdaten empfangen und in den Zielbereich geschrieben. Anschließend wird das Quittungstelegramm im Instanzdatenbaustein DB310 generiert und gesendet.

Die folgende Tabelle zeigt die Datenstruktur der Verbindungsparameter für eine TCP Verbindung. Diese ist 64 Byte lang.

Parameter

Datentyp

Startwert

Beschreibung

id

WORD

W#16#1

Verbindungs-ID: Der Wert des Parameters muss in folgendem Wertebereich liegen:

id = W#16#0001 bis W#16#0FFF (1 bis 4095)

connection_type

BYTE

B#16#11

Verbindungstyp. Für TCP Verbindung gilt:

  • connection_type = B#16#11 (TCP native) oder

  • connection_type = B#16#1 (TCP native Kompatibilitätsmodus)

active_est

BOOL

FALSE

Passiver Verbindungsaufbau.

local_device_id

BYTE

B#16#3

Kennung für die lokale PN/IE-Schnittstelle (hier: CPU 319-3PN/DP).

local_tsap_id_len

BYTE

B#16#2

Verwendete Länge des Parameters local_tsap_id in Byte:

  • 0 oder 2, bei Verbindungstyp = 17 (TCP)

  • Für die aktive Seite ist nur der Wert "0" zulässig.

rem_subnet_id_len

BYTE

B#16#0

Dieser Parameter wird nicht verwendet.

rem_staddr_len

BYTE

B#16#0

Länge der Adresse des Partner-Endpunkts (Parameter rem_staddr) in Byte. Da es sich um eine unspezifizierte Verbindung handelt, ist der Parameter irrelevant.

rem_tsap_id_len

BYTE

B#16#0

Verwendete Länge des Parameters rem_tsap_id in Byte:

  • 0 oder 2, bei Verbindungstyp = 17 (TCP).

  • Für die passive Seite ist nur der Wert 0 zulässig.

next_staddr_len

BYTE

B#16#0

Dieser Parameter wird nicht verwendet.

local_tsap_id

ARRAY [1..16] of BYTE

B#16#7

B#16#D0

B#16#0

:

:

B#16#0

Lokaler Port für die TCP Verbindung. Mögliche Werte: 1...49151 (Empfohlene Werte: 2000...5000).

  • local_tsap_id[1] = High Byte der Port-Nr. in hexadezimaler Darstellung;

  • local_tsap_id[2] = Low Byte der Port-Nr. in hexadezimaler Darstellung;

  • local_tsap_id[3-16] = irrelevant

Hinweis: Stellen Sie sicher, dass jeder Wert von local_tsap_id innerhalb der CPU eindeutig ist.

rem_subnet_id

ARRAY [1..6] of BYTE

B#16#0 …

Dieser Parameter wird nicht verwendet.

rem_staddr

ARRAY [1..6] of BYTE

B#16#0

IP-Adresse des Partner-Endpunkts, z. B. für 192.168.2.3:

  • rem_staddr[1] = 192

  • rem_staddr[2] = 168

  • rem_staddr[3] = 2

  • rem_staddr[4] = 3

  • rem_staddr[5-6]= irrelevant

Nicht relevant bei unspezifizierten Verbindungen mit passiven Verbindungsaufbau.

rem_tsap_id

ARRAY [1..16] of BYTE

B#16#0

Port des Kommunikationspartners.

Bei 17 (TCP) mögliche Werte: 1...49151 (Empfohlene Werte: 2000...5000).

  • rem_tsap_id[1] = High Byte der Port-Nr. in hexadezimaler Darstellung;

  • rem_tsap_id[2] = Low Byte der Port-Nr. in hexadezimaler Darstellung;

  • rem_tsap_id[3-16] = irrelevant

Nicht relevant bei unspezifizierten Verbindungen mit passiven Verbindungsaufbau.

next_staddr

ARRAY [1..6] of BYTE

B#16#0

Dieser Parameter wird nicht verwendet.

spare

WORD

W#16#0

Dieser Parameter wird nicht verwendet.

Parameter

Die folgende Tabelle zeigt die Parameter der Anweisung "FW_TCP":

Parameter

Deklaration

Datentyp

Speicherbereich

Beschreibung

ENABLE

Input

BOOL

E, A, M, D, L, T, Z

Mit diesem Parameter wird der Verbindungsaufbau bzw. -abbau initiiert:

  • 0 = Verbindung wird abgebaut

  • 1 = Verbindung wird aufgebaut

CONNECT

Input

ANY

D

ANY-Pointer auf den Datenbereich des DB211, welcher die Parameter für den Aufbau der TCP Verbindung enthält. Dieser Datenbereich muss mindestens 64 Byte groß sein.

ADDRMODE

Input

INT

E, A, M, D, L oder Konstante

Mit diesem Parameter wird festgelegt, wie die Adressierung der Daten des FETCH bzw. WRITE-Auftrags erfolgt (im S7- oder S5-Adressiermodus).

  • 0 = S7-Adressiermodus

    (Anfangsadresse der Daten wird als Byte Adresse interpretiert)

  • 1 = S5-Adressiermodus

    (Anfangsadresse der Daten wird als Wort Adresse interpretiert)

NDR

Output

BOOL

E, A, M, D, L

Parameter new data record:

Mit diesem Parameter wird angezeigt, dass die Daten des WRITE-Auftrags erfolgreich übernommen und das Quittungstelegramm generiert und gesendet wurde.

ERROR

Output

BOOL

E, A, M, D, L

Dieser Parameter wird gesetzt, wenn:

  • ein Fehler beim Verbindungsaufbau bzw. -abbau aufgetreten ist

  • ein Fehler beim Senden bzw. Empfangen der Daten aufgetreten ist.

  • ein ungültiges FETCH/WRITE Header-Telegramm empfangen wurde.

MODE

Output

BYTE

E, A, M, D, L

Mit diesem Parameter wird angezeigt, ob ein FETCH- oder WRITE-Auftrag ausgeführt wird.

  • 0 = kein Auftrag aktiv

  • 1 = WRITE-Auftrag

  • 2 = FETCH-Auftrag

STATUS

Output

WORD

M, D

Im Parameter STATUS werden interne Kommunikationsstatusbits ausgegeben.

Weitere Informationen zu den gültigen Datentypen finden Sie unter "Übersicht über die gültigen Datentypen".