Instanz der IEC60870-5-101 Unterstation deklarieren und aufrufen

Hier können Sie die kompletten SPS-Sourcen entpacken: TcPlcLibIEC870_5_101Slave_TutorialSample.zip

 

Die gesamte Funktionalität einer Unterstation ist im Funktionsbaustein FB_IEC870_5_101Slave gekapselt. Mit einer Instanz kann eine Verbindung zum Master aufgebaut werden.  Das hSerial-Verbindungshändle der schnellen Task muss als VAR_IN_OUT-Variable an die Unterstation übergeben werden.

 

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

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

    init        : BOOL := TRUE;
    error       : 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;
    server      : FB_IEC870_5_101Slave;
END_VAR

und im Programmteil wird die Instanz aufgerufen:

IF init THEN
    init := FALSE;
...



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 ),
     hSerial := P_SerialComm_HighSpeed.hSerial, (* serial link interface connection handle from fast task *)
     bEnable := bEnable );
...
END_IF