TCP/IP Client

TCP/IP ist eine verbindungsorientierte Kommunikationsart, eigentlich eine peer-to-peer Verbindung. In diesem Beispiel wird ihnen gezeigt wie eine Verbindung von der Beckhoff Steuerung zu einem Server aufgebaut wird. Die benötigten Bausteine sind FB_IpStartSession, FB_IpOpen, FB_IpSend und optional FB_IpReceive, FB_IpClose und FB_IpEndSession.

Es empfiehlt sich eine Schrittkette zu programmieren, wie in dem Beispiel (siehe unten) angegeben ist.

Die Beckhoff Steuerung ist hier der Client und die Gegenstelle ein TCP Server. Der Server ist ein VB6 Programm.

Schritt 1

FB_IpStartSession

Der Baustein reserviert Resourcen auf der Steuerung für die TCP/IP Kommunikation. Mit bStart wird der Baustein aktiv. Solange der Baustein arbeitet ist das bBusy gesetzt. iDevice ist immer mit null zu belegen. iPort ist für die lokale TCP/IP Port Nummer. die iMaxConnection gibt die Anzahl der maximal möglichen Verbindungen an, maximal ist dieser Wert 3.

INPUT

bStart: Eine steigende Flanke aktiviert den Baustein.

iDevice: immer "0"

eSocketType: bei TCP/IP ist "SOCK_STREAM" zu benutzen. Beachten Sie das die Daten als Byte-Stream abgelegt werden.
Sie sollten die Länge der zu empfangenden Daten wissen oder ein Protokoll mit Start- und Endkennung verwenden, damit Sie im Daten-Stream eindeutig Anfang und Ende erkennen können.

eSocketProtocol: für TCP/IP ist "IPPROTO_TCP" zu benutzen

iPort: Absender Port Nummer

iMaxConnection: Anzahl der maximal möglichen Verbindungen (max. ist 3)

tTimeout: Zeit nach der abgebrochen werden soll.

OUTPUT

bBusy: Dieser Ausgang bleibt solange auf TRUE, bis die Befehlsausführung abgeschlossen wurde.

bError: Dieser Ausgang wird auf TRUE geschaltet, wenn bei der Ausführung eines Befehls ein Fehler aufgetreten ist. Der befehlsspezifische Fehlercode ist in iErrorId enthalten.

iErrorId: Enthält den befehlsspezifischen Fehlercode des zuletzt ausgeführten Befehls (siehe Tabelle).

iSession: Gibt die Session Nummer an alle IP Bausteine weiter, für die diese Verbindung angelegt wurde.

Schritt 2

FB_IpOpen

Daten die Empfangen werden, müssen in eine PLC Variable abgelegt werden. Dafür müssen Sie einen Pointer auf pBuffAddr legen und die Größe der Variable in cbBuffLen eintragen. Mit einer positiven Flanke von bValid wird angezeigt das Daten im Speicher liegen bzw. die Daten ihrer Variable jetzt gültig sind.

INPUT

bClear: Eine steigende Flanke löscht den Speicher und der Baustein ist wieder bereit Daten zu empfangen.

iSession: wird mit dem iSession aus dem Baustein FB_StartSession verbunden

sRemoteIPAddr: kann als Filter verwendet werden um nur eine spezielle IP-Adresse zuzulassen

eSocketProtocol: für TCP/IP ist "IPPROTO_TCP" zu benutzen

iPort: Locale Port Nummer

iMaxConnection: Anzahl der maximal möglichen Verbindungen (max. ist 3)

tTimeout: Zeit nach der abgebrochen werden soll.

OUTPUT

bBusy: Dieser Ausgang bleibt solange auf TRUE, bis die Befehlsausführung abgeschlossen wurde.

bError: Dieser Ausgang wird auf TRUE geschaltet, wenn bei der Ausführung eines Befehls ein Fehler aufgetreten ist. Der befehlsspezifische Fehlercode ist in iErrorId enthalten.

iErrorId: Enthält den befehlsspezifischen Fehlercode des zuletzt ausgeführten Befehls (siehe Tabelle).

iSession: Gibt die Session Nummer an alle IP Bausteine weiter, für die diese Verbindung angelegt wurde.

Sobald die ersten Daten empfangen wurden können auch Daten wieder zurückgeschickt werden. Dies ist optional und wird in dem Beispiel verwendet.

Beispiel

TCP/IP Client 1: Download VB6 Programm als TCP/IP Server Zip File (Beispieldatei)
TCP/IP Client 2: Download TwinCAT Projekt als TCP/IP Client prx File (Beispieldatei)

tcp server.zip
bx9000_client.prx