Beispiel05: Binärdatenaustausch (Mehrfachverbindung)

Dieses Beispiel nutzt die Funktionen der früheren TcSocketHelper.Lib, die nun in die Tc2_TcpIp‑Bibliothek integriert ist. Es zeigt eine Client/Server-SPS-Anwendung auf Basis der Funktionen der früheren SocketHelper-Bibliothek.

Dieses Beispiel bietet eine Client-Server-Anwendung für den Austausch binärer Daten. Dafür wurde ein einfaches Beispielprotokoll implementiert. Im Protokoll-Header wird die Länge der Binärdaten und ein Framezähler für die gesendeten und empfangenen Telegramme übertragen.

Die Struktur der Binärdaten wird durch die SPS-Struktur ST_ApplicationBinaryData festgelegt. Die Binärdaten werden an den Header angehängt und übertragen. Die Instanzen der Binärstruktur haben auf der Client-Seite den Namen: toServer, fromServer bzw. auf der Server-Seite: toClient, fromClient.

Sie können die Strukturdeklaration auf der Client- und Server-Seite an Ihre Anforderungen anpassen. Die Strukturdeklaration muss aber auf beiden Seiten gleich sein.

Die maximale Größe der Struktur darf die maximale Puffergröße der Sende-/Empfangs-Fifos nicht überschreiten. Die maximale Puffergröße ist durch eine Konstante festgelegt.

Die Server-Funktionalität ist im Funktionsbaustein FB_ServerApplication und die Client-Funktionalität ist im Funktionsbaustein FB_ClientApplication implementiert.

In der Standard-Implementierung sendet der Client die Daten der Binärstruktur zyklisch zum Server und wartet auf eine Antwort vom Server. Der Server modifiziert einige Daten und sendet diese zurück an den Client.

Wenn Sie eine bestimmte Funktion benötigen, müssen Sie die Funktionsbausteine FB_ServerApplication und FB_ClientApplication entsprechend modifizieren.

Der Unterschied zwischen diesem Beispiel und Beispiel 04 ist, dass der Server bis zu 5 Verbindungen herstellen und die Client-Anwendung bis zu fünf Client-Instanzen haben kann. Jede Instanz baut eine Verbindung zum Server auf.

Beispiel05: Binärdatenaustausch (Mehrfachverbindung) 1:

Systemvoraussetzungen

Projektdownloads

https://github.com/Beckhoff/TF6310_Samples/tree/master/PLC/TCP/Sample05

Projektinformation

Die Standardeinstellungen für die Kommunikation in den obigen Beispielen:

Wenn Client- und Server-Anwendung auf zwei verschiedenen PCs getestet werden, müssen Port- und IP-Adresse entsprechend angepasst werden.

Sie können Client- und Server-Anwendung auch ohne Änderung der Einstellungen auf einem PC testen, indem Sie die Client-Anwendung in das erste SPS-Laufzeitsystem laden und die Server-Anwendung in das zweite.

Das Verhalten des SPS-Projektbeispiels wird von folgenden globalen Variablen/Konstanten bestimmt:

Konstante

Wert

Beschreibung

PLCPRJ_MAX_CONNECTIONS

5

Max. Anzahl der Server → Client-Verbindungen. Ein Server kann Verbindungen zu mehr als einem Client aufbauen. Ein Client kann immer nur zu einem Server Verbindung aufbauen.

PLCPRJ_SERVER_RESPONSE_TIMEOUT

T#10s

Max. Verzögerungszeit (Timeout-Zeit), nach der ein Server eine Antwort an den Client senden soll.

PLCPRJ_CLIENT_SEND_CYCLE_TIME

T#1s

Zykluszeit, in der ein Client Sendedaten (TX) an den Server sendet.

PLCPRJ_RECEIVER_POLLING_CYCLE_TIME

T#200ms

Zykluszeit, in der ein Client oder Server nach Empfangsdaten (RX) pollend fragt.

PLCPRJ_BUFFER_SIZE

10000

Max. interne Puffergröße für RX/TX-Daten.

Das SPS-Beispiel definiert und nutzt folgende interne Fehlercodes:

Fehlercode

Wert

Beschreibung

PLCPRJ_ERROR_RECEIVE_BUFFER_OVERFLOW

16#8101

Der interne Empfangspuffer meldet einen Überlauf.

PLCPRJ_ERROR_SEND_BUFFER_OVERFLOW

16#8102

Der interne Sendepuffer meldet einen Überlauf.

PLCPRJ_ERROR_RESPONSE_TIMEOUT

16#8103

Der Server hat die Antwort in der angegebenen Timeoutzeit nicht gesendet.

PLCPRJ_ERROR_INVALID_FRAME_FORMAT

16#8104

Das Telegramm hat eine fehlerhafte Formatierung (Größe, fehlerhaften Datenbytes usw. ).

Die Client- bzw. Server-Applikationen (FB_ServerApplication, FB_ClientApplication) wurden als Funktionsbausteine implementiert. Die Applikation und die Verbindung können dadurch mehrfach instanziiert werden.