FW_IOT: Daten mittels FETCH und WRITE über ISO-on-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_IOT: Daten mittels FETCH und WRITE über ISO-on-TCP austauschen

Beschreibung

Mit der Anweisung "FW_IOT" werden die Dienste FETCH/WRITE über die ISO-on-TCP Verbindung zur Verfügung gestellt.

Aufruf

Da für die Dienste FETCH/WRITE jeweils eine separate ISO-on-TCP Verbindung benötigt wird, wird die Anweisung "FW_IOT" zweimal im OB1 aufgerufen.

  • Der erste Aufruf mit Instanzdatenbaustein FETCH_IOT_DB stellt den Dienst FETCH über die ISO-on-TCP Verbindungen zur Verfügung.

  • Der zweite Aufruf mit Instanzdatenbaustein WRITE_IOT_DB stellt den Dienst WRITE über die ISO-on-TCP Verbindung zur Verfügung.

Die ISO-on-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. Über den Eingangsparameter ENABLE hat der Anwender 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. Die folgende Tabelle zeigt die Datenstruktur der Verbindungsparameter für eine ISO-on-TCP Verbindung. Diese ist 64 Byte lang.

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

Verbindungsparameter des Instanzdatenbausteins "ConnectParam"

Folgende Verbindungsparameter werden vor dem Verbindungsaufbau überprüft:

  • connection_type

  • id

  • local_tsap_id

  • local_tsap_id _len

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 FETCH_IOT_DB 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 WRITE_IOT_DB 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#12

Verbindungstyp. Für ISO-on-TCP Verbindung gilt:

connection_type = B#16#12

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:

  • 2 bis 16 bei Verbindungstyp = 18 (ISO-on-TCP)

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:

  • 2 bis 16 bei Verbindungstyp = 18 (ISO-on-TCP)

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

Lokale TSAP-ID für die ISO-on-TCP Verbindung.

  • local_tsap_id[1] = B#16#E0;

  • local_tsap_id[2] = Rack und Steckplatz der lokalen Endpunkts (Bits 0 bis 4: Steckplatznummer, Bits 5 bis 7: Baugruppenträgernummer);

  • local_tsap_id[3-16] = TSAP-Erweiterung, optional

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.

Für Partner-TSAP-ID bei ISO-on-TCP:

  • rem_tsap_id[1] = B#16#E0;

  • rem_tsap_id[2] = Rack und Steckplatz des Partner-Endpunkts (Bits 0 bis 4: Steckplatznummer, Bits 5 bis 7: Baugruppenträgernummer);

  • rem_tsap_id[3-16] = TSAP-Erweiterung, optional

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_IOT":

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 DB, 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".