Beispiel02: "Echo" Client/Server (Einfachverbindung)

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.

Der Client sendet zyklisch einen Teststring (sToServer) zum Remote-Server. Der Server gibt diesen String unverändert an den Client zurück (sFromServer).

Beispiel02: "Echo" Client/Server (Einfachverbindung) 1:

Systemvoraussetzungen

Projektdownloads

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

Projektinformation

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

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.