Aufruf und Deklaration der Unterstation

Die gesamte Funktionalität einer Unterstation ist im Funktionsbaustein FB_IEC870_5_104Slave gekapselt. Mit einer Instanz kann eine Verbindung zum Master aufgebaut werden. Für eine weitere Verbindung deklarieren Sie eine weitere Instanz und übergeben an diese zweite Instanz das gleiche Server-Handle (hServer-Variable), oder Sie verwenden den FB_IEC870_5-104SlaveGrp-Funktionsbaustein (empfohlen). Die IP-Adresse müssen Sie passend zu der IP-Adresse Ihres Zielsystems setzen.

Fügen Sie im Deklarationsteil von MAIN folgenden SPS-Code ein:


PROGRAM MAIN
VAR
AODB : ARRAY[0..49] OF ST_IEC870_5_101AODBEntry;

init : BOOL := TRUE;
initError : UDINT;

inputs AT%IB0 : ARRAY[0..2999] OF BYTE;
outputs AT%QB0 : ARRAY[0..2999] OF BYTE;
memory AT%MB0 : ARRAY[0..2999] OF BYTE;
data : ARRAY[0..2999] OF BYTE;

bEnable : BOOL := TRUE;
hServer : T_HSERVER;
server : FB_IEC870_5_104Slave;

END_VAR

und im Programmteil wird die Instanz aufgerufen:


IF init THEN
init := FALSE;
...


F_CreateServerHnd( '', '127.0.0.1'(* change this! *), 2404, nMode := LISTEN_MODE_CLOSEALL OR CONNECT_MODE_ENABLEDBG, bEnable, hServer );

ELSE
server( pInputs := ADR( inputs ),
cbInputs := SIZEOF( inputs ),
pOutputs := ADR( outputs ),
cbOutputs := SIZEOF( outputs ),
pMemory := ADR( memory ),
cbMemory := SIZEOF( memory ),
pData := ADR( data ),
cbData := SIZEOF( data ),
pAOEntries := ADR( AODB ),
cbAOEntries := SIZEOF( AODB ),
hServer := hServer,
bEnable := bEnable );
END_IF

Das zugehörige Tutorial SPS-Beispiel kann hier heruntergeladen werden.