UDP/IP: ITcIoUdpProtocol(Recv)
Die Interfaces ITcIoUdpProtocol und ITcIoUdpProtocolRecv ermöglichen eine UDP/IP-Kommunikation aus der Echtzeitumgebung heraus.
Ein Projekt, das dieses Interface verwendet, enthält einen Pointer auf ein ITcIoUdpProtocol-Objekt und implementiert ITcIoUdpProtocolRecv selbst. ITcIoUdpProtocolRecv dient als Callback-Interface, um Daten innerhalb der Applikation vom TCP/UDP RT Modul empfangen zu können.
![]() | Mehrfach-Aufrufe von Receive() Es muss bei der Implementierung beachtet werden, dass durch das CheckReceived() der Callback auf das Receive() mehrfach in einem Zyklus auftreten wird, falls zwischen den Zyklen mehrere Pakete eingetroffen sind. |
ITcIoUdpProtocolRecv Methoden:
Name | Description |
---|---|
Wird vom TCP/UDP RT-Modul als Callback aufgerufen, um Daten zu übergeben |
ITcIoUdpProtocol Methoden:
Name | Description |
---|---|
Sendet Daten | |
Muss zyklisch aufgerufen werden. ReceiveData wird im Context dieser Methode als Callback genutzt (Server und Client-Funktionalität). | |
Registrieren am TCP/UDP RT-Modul für den Empfang von Daten. | |
De-Registrieren am TCP/UDP RT-Modul für den Empfang von UDP-Daten. |
Hier in Stichpunkten der Ablauf einer Client-/ und Serverimplementierung. Es soll nur ein Überblick gegeben werden, die Beispiele zeigen die konkrete Verwendung.
Implementierung eines UDP-Senders/-Empfängers
Name | Beschreibung |
---|---|
Öffnet einen Port für einkommende Datenpakete. | |
Wird aufgerufen, wenn Datenpakete ankommen. | |
Kann genutzt werden, um Daten zu versenden. | |
Zum Abmelden (Schließen) des Ports z.B. beim Runterfahren. |
Zum Empfang von UDP-Daten ist eine Registrierung durch den Aufruf von RegisterReceiver erforderlich. Dieses kann in SetObjStateSO bzw. FB_init erfolgen.
Daten werden durch einen Callback der Methode ReceiveData von ITcIoUdpProtocolRecv bereitgestellt.
Während TwinCAT vom RUN Mode in den Config Mode geht, sollten sich alle Module durch UnregisterReceiver abmelden. Dieses kann in SetObjStateOS() bzw. FB_exit erfolgen.
Hinweis | |
OnlineChange-Sicherheit Zur OnlineChange Sicherheit sollte RegisterReceiver erneut aufgerufen werden. |