FB_IEC870_5_101TableEventHandler

FB_IEC870_5_101TableEventHandler 1:

Das Auslesen der Ereignisse ist optional und nicht zwingend notwendig. D.h. die SPS-Applikation muss diesen Baustein nicht unbedingt instanzieren. Zur Zeit wird diese Funktionalität nur vom High-Level IEC 60870-5-101/104 Master unterstützt!

FB_IEC870_5_101TableEventHandler 2:

Mit diesem Funktionsbaustein kann die SPS-Applikation einige Änderungen in der IEC-Applikationsobjektdatenbank erkennen und, wenn nötig, darauf entsprechend reagieren. Die Änderungen werden als Ereignisse bezeichnet. Jeder Ereignis-Typ wird in einer separaten internen Liste verwaltet. Die SPS-Applikation kann durch den Aufruf der Bausteinaktionen die anstehenden Ereignisse aus einer der Listen auslesen. Da auch mehrere Ereignisse pro SPS-Zyklus auftreten können werden die Ereignisse intern gezählt. Der Zähler wird beim Auftreten eines Ereignisses immer inkrementiert. An dem Bausteinausgang wird nur der letzte Wert und der Zählerstand ausgegeben.

Folgende Ereignisse werden von dem Funktionsbaustein registriert:

Der Funktionsbaustein besitzt zwei Aktionen:

VAR_IN_OUT

VAR_IN_OUT
    hTable : T_HAODBTable;
END_VAR

hTable: Applikationsobjekt-Datenbankhandle (Hash-Tabellenhandle). Das Tabellenhandle muss vor der Benutzung einmalig mit der Funktion F_iecCreateTableHnd initialisiert werden.

VAR_OUTPUT

VAR_OUTPUT
    bOk     : BOOL := FALSE;
    getObj  : ST_IEC870_5_101AOGen;
    getCfg  : ST_IEC870_5_101AOCfg;
    nEvents : DWORD := 0;
END_VAR

bOk: Diese Variable wird TRUE, wenn ein Ereignis erfolgreich ausgelesen wurde. Bei FALSE ist die zuletzt gelesene Ereignisliste leer.

getObj: Der aktuelle Wert der Dateneinheit (ASDU).

getCfg: Die aktuellen Konfigurationsparameter der Dateneinheit (ASDU).

nEvents: Ereignis-Zähler (Multiplikator). Wertebereich: (0 bis 16#FFFFFFFF). Beim Erreichen des Maximalwertes wird nicht mehr inkrementiert.

Beispiel in ST:

Im folgenden Programmausschnitt werden die anstehenden Ereignisse in REPEAT-Schleifen ausgelesen und in Windows Application Log geschrieben. Die gesuchten Datenpunkte sind bereits als Hash-Tabelleneinträge konfiguriert worden. Siehe in der Beschreibung der Funktion: F_iecAddTableEntry.

PROGRAM P_LogEvents
VAR_IN_OUT
    hTable    : T_HAODBTable;
END_VAR
VAR
    fbHandler : FB_IEC870_5_101TableEventHandler;
END_VAR
REPEAT
    fbHandler.RemoveOnChangeEvent( hTable := hTable );
    IF fbHandler.bOk THEN
        ADSLOGSTR( ADSLOG_MSGTYPE_HINT OR ADSLOG_MSGTYPE_LOG,
            'RemoveOnChangeEvent(), IOA: %s', 
            DWORD_TO_STRING( fbHandler.getObj.info.objAddr ) );
    END_IF
UNTIL NOT fbHandler.bOk
END_REPEAT


REPEAT
    fbHandler.RemoveOnCreateEvent( hTable := hTable );
    IF fbHandler.bOk THEN
        ADSLOGSTR( ADSLOG_MSGTYPE_HINT OR ADSLOG_MSGTYPE_LOG,
            'RemoveOnCreateEvent(), IOA: %s', 
            DWORD_TO_STRING( fbHandler.getObj.info.objAddr ) );
    END_IF
UNTIL NOT fbHandler.bOk
END_REPEAT

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken (Kategoriegruppe)

TwinCAT v3.1.4012.0

PC oder CX (x86, x64, ARM)

Tc2_IEC60870_5_10x (Communication->IEC60870)
Tc2_SerialCom (Communication->Serial)
Tc2_TcpIp (Communication->TcpIp)
Tc2_Utilities (System)