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.

UDP/IP: ITcIoUdpProtocol(Recv) 1:

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.
Bei der Implementierung ist somit ggf. ein Zwischenspeicher in Form einer Queue vorzusehen.

UDP/IP: ITcIoUdpProtocol(Recv) 2: ITcIoUdpProtocolRecv Methoden:

Name

Description

ReceiveData

Wird vom TCP/UDP RT-Modul als Callback aufgerufen, um Daten zu übergeben

UDP/IP: ITcIoUdpProtocol(Recv) 3: ITcIoUdpProtocol Methoden:

Name

Description

SendData

Sendet Daten

CheckReceived

Muss zyklisch aufgerufen werden. ReceiveData wird im Context dieser Methode als Callback genutzt (Server und Client-Funktionalität).

RegisterReceiver

Registrieren am TCP/UDP RT-Modul für den Empfang von Daten.

UnregisterReceiver

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

RegisterReceiver

Öffnet einen Port für einkommende Datenpakete.

ReceiveData

Wird aufgerufen, wenn Datenpakete ankommen.

SendData

Kann genutzt werden, um Daten zu versenden.

UnregisterReceiver

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.