Integration in TwinCAT und Test

Nachfolgend wird beschrieben, wie SPS-Server und -Client vorbereitet und gestartet werden. Die SPS-Beispiele werden als TwinCAT‑3‑SPS‑Projektdateien zur Verfügung gestellt. Um ein SPS-Projekt in das TwinCAT XAE zu importieren, erstellen Sie zunächst eine neue TwinCAT 3 Solution. Wählen Sie anschließend im Kontextmenü des PLC-Knoten den Befehl Add Existing Item und in dem sich öffnenden Dialog die heruntergeladenen Beispieldatei (Plc 3.x Project archive (*.tpzip) als Dateityp auswählen). Nach Bestätigung des Dialogs wird das SPS-Projekt der Solution hinzugefügt.

Integration in TwinCAT und Test 1:

Beispiel SPS-Server

Erstellen Sie im TwinCAT XAE eine neue TwinCAT 3 Solution und importieren Sie das TCP/IP‑Server‑Projekt. Wählen Sie ein Zielsystem. Auf dem Zielsystem muss die Function ebenfalls installiert sein und es müssen Lizenzen für TF6310 generiert worden sein. Lassen Sie die TwinCAT 3 Solution geöffnet.

PROGRAM MAIN
VAR
    fbServer         : FB_LocalServer := ( sLocalHost := '127.0.0.1' (*own IP address!*), nLocalPort := 200 );
    bEnableServer    : BOOL := TRUE;
    fbSocketCloseAll : FB_SocketCloseAll := ( sSrvNetID := '', tTimeout := DEFAULT_ADS_TIMEOUT );
    bCloseAll        : BOOL := TRUE;
END_VAR
 

IF bCloseAll THEN (*On PLC reset or program download close all old connections *)
    bCloseAll := FALSE;
    fbSocketCloseAll( bExecute:= TRUE );
ELSE
    fbSocketCloseAll( bExecute:= FALSE );
END_IF

IF NOT fbSocketCloseAll.bBusy THEN
    fbServer( bEnable := bEnableServer );
END_IF

Beispiel SPS-Client

Importieren Sie das TCP/IP‑Client‑Projekt als zweites SPS-Projekt in die TwinCAT 3 Solution. Verlinken Sie dieses SPS-Projekt mit einer anderen Task als das Server-Beispiel. Die IP-Adresse des Servers muss an Ihr System angepasst werden (Initialisierungswerte der sRemoteHost-Variable). In diesem Fall ist der Server auf demselben PC, tragen Sie also 127.0.0.1. ein. Aktivieren Sie die Konfiguration, loggen sich ein und starten Sie das Server- und anschließend das Client-SPS-Projekt.

PROGRAM MAIN
VAR
    fbClient1     : FB_LocalClient := ( sRemoteHost:= '127.0.0.1' (* IP address of remote server! *), nRemotePort:= 200 );
    fbClient2     : FB_LocalClient := ( sRemoteHost:= '127.0.0.1', nRemotePort:= 200 );
    fbClient3     : FB_LocalClient := ( sRemoteHost:= '127.0.0.1', nRemotePort:= 200 );
    fbClient4     : FB_LocalClient := ( sRemoteHost:= '127.0.0.1', nRemotePort:= 200 );
    fbClient5     : FB_LocalClient := ( sRemoteHost:= '127.0.0.1', nRemotePort:= 200 );

    bEnableClient1 : BOOL := TRUE;
    bEnableClient2 : BOOL := FALSE;
    bEnableClient3 : BOOL := FALSE;
    bEnableClient4 : BOOL := FALSE;
    bEnableClient5 : BOOL := FALSE;

    fbSocketCloseAll    : FB_SocketCloseAll := ( sSrvNetID := '', tTimeout := DEFAULT_ADS_TIMEOUT );
    bCloseAll     : BOOL := TRUE;

    nCount     : UDINT;
END_VAR
IF bCloseAll THEN (*On PLC reset or program download close all old connections *)
    bCloseAll := FALSE;
    fbSocketCloseAll( bExecute:= TRUE );
ELSE
    fbSocketCloseAll( bExecute:= FALSE );
END_IF

IF NOT fbSocketCloseAll.bBusy THEN
    nCount := nCount + 1;
    fbClient1( bEnable := bEnableClient1, sToServer := CONCAT( 'CLIENT1-', UDINT_TO_STRING( nCount ) ) );
    fbClient2( bEnable := bEnableClient2, sToServer := CONCAT( 'CLIENT2-', UDINT_TO_STRING( nCount ) ) );
    fbClient3( bEnable := bEnableClient3, sToServer := CONCAT( 'CLIENT3-', UDINT_TO_STRING( nCount ) ) );
    fbClient4( bEnable := bEnableClient4 );
    fbClient5( bEnable := bEnableClient5 );
END_IF

Beim Setzen einer der bEnableCientX-Variablen können bis zu fünf Client-Instanzen aktiviert werden. Jeder Client sendet pro Sekunde einen String zum Server (default: 'TEST'). Der gleiche String wird vom Server zum Client zurückgesendet (Echo-Server). Für den Test wird bei den ersten drei Instanzen ein String mit einem Zählerwert automatisch generiert. Der erste Client wird beim Programmstart automatisch aktiviert. Setzen Sie die bEnableCilent4-Variable im Client-Projekt auf TRUE. Der neue Client versucht dann, eine Verbindung zum Server aufzubauen. Beim Erfolg wird der 'TEST'-String zyklisch gesendet. Öffnen Sie jetzt die fbClient4-Instanz des FB_LocalClient-Funktionsbausteins. Öffnen Sie den Dialog zum Schreiben der sToString-Variablen mit einem Doppelklick und ändern Sie den Wert der Stringvariablen z. B. auf 'Hallo'.

Integration in TwinCAT und Test 2:

Schließen Sie den Dialog mit OK. Forcen Sie den neuen Wert in die SPS. Kurz danach ist der vom Server zurückgegebene Wert online zu sehen.

Integration in TwinCAT und Test 3:

In dem Server-Projekt öffnen Sie jetzt die fbServer-Instanz des FB_LocalServer-Funktionsbausteins. Unser String: 'Hallo' kann in den Online-Daten des Servers gesehen werden.

Integration in TwinCAT und Test 4: