Einführung

TCP

Bei dem TCP-Protokoll handelt es sich um ein verbindungsorientiertes Protokoll, analog wie bei einer Telefonverbindung, wo die Gesprächsteilnehmer die Verbindung zuerst aufbauen müssen. Das TCP-Protokoll wird dort eingesetzt, wo eine Bestätigung für die vom Client oder Server gesendeten Daten benötigt wird. Die Integrität der Daten wird vom Protokoll verwaltet, was mehr Ressourcen erfordert. Das TCP-Protokoll ist gut geeignet um größere Datenmengen zu verschicken. 

TCP ist ein streamorientiertes Transportprotokoll, d.h. es transportiert einen Datenstrom ohne definierten Anfang und Ende. Es werden dabei weder Informationen zur Länge, noch Informationen über Anfang und Ende einer Nachricht übertragen. Für den Sender ist dies unproblematisch da er weiß, wie viele Datenbytes er verschickt. Der Empfänger kann jedoch nicht erkennen, wo eine Nachricht im Datenstrom aufhört und wo die nächste im Datenstrom beginnt. Ein Leseaufruf auf der Empfängerseite liefert immer nur die gerade im Empfangspuffer vorhandenen Daten (u.U. können es weniger oder mehr sein als der Datenblock, der vom anderen Teilnehmer gesendet wurde).

Der Sender muss eine Nachrichtenstruktur festlegen, die beim Empfänger bekannt ist und interpretiert werden kann. Die Nachrichtenstruktur kann sich im einfachen Fall aus den Daten und einem abschließenden Steuerzeichen (z.B. carriage return) zusammensetzen. Das abschließende Steuerzeichen signalisiert das Ende einer Nachricht.

Die Nachrichtenstruktur für die Übertragung von Binärdaten mit einer variablen Länge wird oft auf folgende Weise festgelegt: In den ersten Datenbytes wird ein spezielles Steuerzeichen (start delimiter) und die Datenlänge der darauffolgenden Daten eingetragen. Der Empfänger kann dadurch den Nachrichtenanfang und das Ende erkennen.

 

Für eine minimale TCP/IP-Clientimplementierung in der SPS werden folgende Funktionsbausteine benötigt:


Für eine minimale TCP/IP-Serverimplementierung in der SPS werden folgende Funktionsbausteine benötigt:

In jedem SPS-Laufzeitsystem, in dem Sie ein Socket öffnen, benötigen Sie eine Instanz des FB_SocketCloseAll Funktionsbausteins;

Die Instanzen der FB_SocketAccept und FB_SocketReceive Funktionsbausteine werden zyklisch (pollend) aufgerufen, alle anderen nach Bedarf.

 

 

UDP

Bei dem UDP-Protokoll handelt es sich um ein verbindungsloses Protokoll. Die Daten werden von einem Teilnehmer zum anderen gesendet, ohne das eine explizite Verbindung existiert. Das UDP-Protokoll ist gut geeignet um kleine Datenmengen zu verschicken. Eine UDP-Applikation kann beides sein: ein Client oder ein Server. Das UDP-Protokoll garantiert nicht, dass die gesendeten Daten tatsächlich am Ziel ankommen  (es wird keine Bestätigung für die empfangenen Pakete gesendet). Die einzelnen Datenpakete können auch am Ziel in einer anderen Reihenfolge ankommen oder verlorengehen.

UDP ist ein paketorientiertes/nachrichtenorientiertes Transportprotokoll, d.h. der gesendete Datenblock wird auf der Empfängerseite auch als kompletter Datenblock empfangen.

 

Für eine minimale UDP-Server/Client-Implementierung werden folgende Funktionsbausteine benötigt:

Die Instanzen des FB_SocketUdpReceiveFrom Funktionsbausteins werden zyklisch (pollend) aufgerufen, alle anderen nach Bedarf.

Weitere Informationen  finden Sie auf den folgenden Dokumentationsseiten.

 

Glossar

Begriff

Beschreibung

TwinCAT TCP/IP Connection Server

Ein TwinCAT Server. Der Server ermöglicht das Öffnen, Schließen, Versenden und  Empfangen der Daten über die Windows Sockets.

Remote-Client

Ein Client auf einem entfernten Rechner (aus der Serversicht: mit dem der Server kommunizieren will).

Remote-Server

Ein Server auf einem entfernten Rechner (aus der Clientsicht: mit dem der Client kommunizieren will).

Local-Client

Ein Client auf dem lokalen Rechner.

Local-Server

Ein Server auf dem lokalen Rechner.

Verbindungshandle (Socket-Handle)

Eine SPS-Variable vom Typ T_HSOCKET