Instanz der IEC60870-5-104 Unterstation deklarieren und aufrufen

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

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 (empfohen). Die IP-Addresse 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