TLS_SEND_2
Der Funktionsbaustein TLS_SEND_2 ist eine neuere Implementierung des TLS_SEND-FB, kombiniert mit dem FB TCP_SEND (welche in diesem Hilfethema als "ältere Implementierungen" bezeichnet werden). Im Unterschied zur älteren Implementierung unterstützen die TLS_*_2-FBs die beiden Protokolle TCP und TLS und kombinieren deren Handhabung. Außerdem unterstützen sie TCP/TLS-Server, die mit mehreren TCP/TLS-Clients kommunizieren können. TLS_SEND_2 kann nur mit Sockethandles verwendet werden, die vom FB TLS_SOCKET_2 erzeugt wurden.
Hinweis
Dieser Funktionsbaustein erfordert die Firmware-Version 2021.3 oder neuer. |
Hinweis
Um in einem bestehenden Projekt Instanzen der früheren FB-Implementierung durch neuere FBs zu aktualisieren, ersetzen Sie diese wie folgt: Editieren Sie die Deklaration der Instanzvariablen und (nur in FBD) aktualisieren Sie den Instanzaufruf im Code. Formalparameter mit gleichem Namen bleiben verbunden, neu hinzugefügte Formalparameter müssen verbunden werden (falls deren Funktion benötigt wird). |
Typ | Funktionsbaustein |
Beschreibung | Der Funktionsbaustein wird für das Senden von Daten über TCP (Transmission Control Protocol) oder TLS (Transport Layer Security) an ein TCP/TLS-fähiges Ethernet-Gerät verwendet. Dies erfolgt über einen TCP/TLS-Socket. Der Socket muss zuerst mit Hilfe des Funktionsbausteins TLS_SOCKET_2 geöffnet werden, bevor Daten gesendet werden können.Nachdem der Socket erfolgreich geöffnet und eine Verbindung aufgebaut wurde, sendet der Funktionsbaustein die Daten entweder über eine reine TCP-Verbindung oder über eine TLS-gesicherte Verbindung an den Kommunikationspartner. Welcher Verbindungstyp verwendet wird, hängt davon ab, welcher Wert am Eingang START_TLS des Funktionsbausteins TLS_SOCKET_2 anliegt:
- Bei START_TLS = FALSE verwendet der Funktionsbaustein eine reine TCP-Verbindung, um Daten zu senden.
- Bei START_TLS = TRUE sendet der FB die Daten über eine TLS-gesicherte Verbindung.
Der Funktionsbaustein führt eine Sicherheitsprüfung durch um festzustellen, ob die IEC-Anwendung einen Datenaustausch über eine unsichere (TCP) oder über eine sichere (TLS-gesicherte) Verbindung erwartet. Für die Sicherheitsprüfung vergleicht der Baustein den Wert seines SEND_SECURE-Eingangs mit dem Wert, der am Eingang START_TLS des Funktionsbausteins TLS_SOCKET anliegt. Werden Inkonsistenzen zwischen den Eingangswerten festgestellt, zum Beispiel bei SEND_SECURE = TRUE (IEC-Anwendung erfordert sichere Datenübertragung) und START_TLS = FALSE (TLS-Protokoll noch nicht initialisiert), wird der Ausgang ERROR auf TRUE gesetzt und am Ausgang STATUS der Fehlercode 16#C1510 ausgegeben.Jeder einzelne Sendevorgang wird durch eine steigende Flanke am Eingang REQ angestoßen. In diesem Zyklus kopiert der Funktionsbaustein die Werte der an DATA angeschlossenen Variable in einen internen Buffer. Der Ausgang BUSY wird auf TRUE gesetzt, solange Daten aus dem internen Buffer gesendet werden. Solange BUSY = TRUE ist, wird der Eingang REQ ignoriert. Das Übertragen von neuen Daten, die während des laufenden Übertragungszyklus an DATA verfügbar sind, kann nur mit einer steigenden Flanke am Eingang REQ angestoßen werden, nachdem der Ausgang BUSY auf FALSE gesetzt wurde.Falls die Verbindung abgebrochen wurde und der Kommunikationspartner nicht mehr erreicht werden kann, wird der Ausgang ERROR für die Dauer eines Zyklus auf TRUE gesetzt. Der zugehörige Fehlercode wird in diesem Zyklus am Ausgang STATUS angezeigt.
Unbeabsichtigter Betriebszustand des Geräts Stellen Sie sicher, dass das Ändern der Ausgangsdaten nicht zu einem ungewollten oder gefährlichen Verhalten des Gesamtsystems führen kann. |
|
Hinweise |
- Der mit dem Funktionsbaustein TLS_SOCKET_2 geöffnete Socket kann nur für den Aufruf des Funktionsbausteins TLS_SEND_2 verwendet werden, solange der Ausgang ACTIVE von TLS_SOCKET_2 = TRUE ist. Der Aufruf des Funktionsbausteins TLS_SEND_2 während ACTIVE = FALSE ist, führt zu einem Fehler an TLS_SEND_2 (ERROR = TRUE und STATUS-Code = 0xC210).
- Das mit dem Funktionsbaustein TLS_SOCKET_2 erzeugte-Sockethandle ist nicht kompatibel mit dem Sockethandle, das mit TCP_SOCKET oder TLS_SOCKET erzeugt wird. Das TCP/TLS-Sockethandle kann nur mit den FBs TLS_SEND_2/TLS_RECEIVE_2 verwendet werden.
- Stellen Sie bei Steuerungen mit integrierter Firewall sicher, dass die Firewall nicht die für die Kommunikation benötigten Ports blockiert. Andernfalls kann keine Verbindung hergestellt werden.
- Funktionsbausteine müssen instanziiert werden.
Der FB-Instanzname muss in der 'Variablen'-Tabelle der POE deklariert werden, in welcher der FB verwendet werden soll. Der Instanzname muss innerhalb der POE eindeutig sein.
|
Parameter | Eingänge
Hinweis
Der für den Aufbau der TLS-Kommunikation auf Basis (d.h."on top") der TCP-Kommunikation relevante Parameter ist SEND_SECURE. Die übrigen Eingänge spezifizieren TCP-Funktionalität. |
REQ
Datentyp: | BOOL |
Beschreibung: | Mit einer steigenden Flanke am Eingang REQ wird die Übertragung der an DATA anliegenden Daten angestoßen. Der Eingang wird ignoriert, solange Daten gesendet werden (BUSY = TRUE).Alle anderen Eingangsparameter werden mit steigender Flanke am REQ-Eingang ausgewertet, sofern BUSY = FALSE ist. |
HANDLE
Datentyp: | DWORD |
Beschreibung: | Sockethandle, das mit dem Funktionsbaustein TLS_SOCKET_2 geöffnet wurde (siehe auch oben stehende Hinweise). Der Parameter wird nur in dem Zyklus ausgewertet, in dem am Parameter REQ eine steigende Flanke erkannt wird.
Hinweis
Ein Handle, das mit einer Instanz der älteren Implementierung des Funktionsbausteins TCP_SOCKET oder TLS_SOCKET erzeugt wurde, darf nicht mit dem Funktionsbaustein TLS_SEND_2 verwendet werden. Verwenden Sie Handles nur innerhalb derselben "FB-Generation". |
|
DATA_CNT
Datentyp: | UDINT |
Beschreibung: | Anzahl an Bytes im internen Buffer (DATA), die gesendet werden sollen (DATA_CNT = DATA_CouNT). Es können maximal 2147483647 Bytes gesendet werden. Ist der Wert 0 (Anfangswert des Parameters), wird der gesamte Inhalt der an DATA angeschlossenen Variablen gesendet.Der Parameter wird nur in dem Zyklus ausgewertet, in dem am Parameter REQ eine steigende Flanke erkannt wird.
Tipp: Sie können mit der Funktion SIZEOF die Größe der Variable, d.h. die Anzahl der für die Variable im Speicher der Steuerung reservierten Bytes ermitteln. |
SEND_SECURE
Datentyp: | BOOL |
Beschreibung: | Legt fest, ob die IEC-Anwendung einen Datenaustausch über eine unsichere (TCP) oder über eine sichere (TLS-gesicherte) Verbindung erwartet.
- TRUE: Anwendung erwartet sichere Datenübertragung (über TLS-gesicherte Verbindung).
- FALSE: Anwendung erwartet unsichere Datenübertragung (über TCP-Verbindung).
Der Wert am Eingang wird mit dem Eingangswert START_TLS des Bausteins TLS_SOCKET_2 verglichen. Werden Inkonsistenzen zwischen den Eingangswerten festgestellt, zum Beispiel bei SEND_SECURE = TRUE (IEC-Anwendung erfordert sichere Datenübertragung) und START_TLS = FALSE (TLS-Protokoll noch nicht initialisiert), wird der Ausgang ERROR auf TRUE gesetzt und am Ausgang STATUS der Fehlercode 16#C1510 ausgegeben. |
Ein-/Ausgang
DATA
Datentyp: | ANY |
Beschreibung: | Datenpuffer, der die zu übertragenden Daten enthält.Die Daten werden als Byte-Stream übertragen. Es erfolgt keine Little-/Big-Endian-Konvertierung. Ist die angeschlossene Variable ein STRUCT (oder ARRAY OF STRUCT), enthält der Byte-Strom eventuell Padding Bytes. |
Ausgänge
DONE
Datentyp: | BOOL |
Beschreibung: | Der Ausgang wird auf TRUE gesetzt, wenn die Daten erfolgreich gesendet wurden. Der Ausgang wird für genau einen Zyklus gesetzt. |
BUSY
Datentyp: | BOOL |
Beschreibung: | Der Ausgang wird auf TRUE gesetzt, solange versucht wird, Daten zu senden. Der Eingang REQ wird ignoriert, solange der Ausgang BUSY gesetzt ist. |
ERROR
Datentyp: | BOOL |
Beschreibung: | Bei einem Fehler wird der Ausgang ERROR auf TRUE gesetzt. Der zugehörige Fehlercode kann am Ausgang STATUS ausgelesen werden, solange ERROR = TRUE ist.Falls ein Fehler erkannt wurde, wird dieser Ausgang für nur einen Zyklus TRUE. Der Fehlercode muss in diesem Zyklus am Ausgang STATUS gelesen werden.Siehe Fehlercodes / Statuscodes für TLS*-Funktionsbausteine . |
STATUS
Datentyp: | WORD |
Beschreibung: | Liefert den Fehlercode im Fehlerfall (ERROR = TRUE) oder den aktuellen Status des Funktionsbausteins (ERROR = FALSE). Fehlercodes beginnen mit 16#Cxxx und Statuscodes mit 16#8xxx.Siehe Fehlercodes / Statuscodes für TLS*-Funktionsbausteine . |
|