FB_IEC870_5_101ErrorFifo
IEC60870-5-10x Fehler-Fifo. Der älteste Eintrag wird immer überschrieben. Der Fifo hat eine konstante Größe. Die Größe wird durch die Konstante: IEC870_MAX_ERROR_FIFO_SIZE bestimmt (default: 10 Elemente).
Der Funktionsbaustein besitzt drei Aktionen:
- AddError (fügt eine neue Fehlermeldung dem Fifo hinzu);
- RemoveError (entfernt die älteste Fehlermeldung aus dem Fifo);
- Reset (löscht alle Fehlermeldungen, setzt den Fifo zurück);
Im Normalfall werden die Fehlermeldungen durch die internen IEC60870-5-10x Gerätefunktionen dem Fifo hinzugefügt. Die SPS-Applikation kann diese Fehlermeldungen durch den Aufruf der Aktion: RemoveError auslesen und auswerten.
VAR_INPUT
VAR_INPUT
putError : ST_IEC870_5_101ErrorFifoEntry;
END_VAR
putError: Fehlermeldung, die dem Fifo hinzugefügt werden soll.
VAR_OUTPUT
VAR_OUTPUT
getError : ST_IEC870_5_101ErrorFifoEntry;
nErrors : UDINT; (* Error counter *)
bOk : BOOL; (* TRUE = new entry added or removed succesfully, FALSE = fifo empty *)
END_VAR
getError: Fehlermeldung, die aus dem Fifo entfernt wurde.
nErrors: Liefert die aktuelle Anzahl Fifo-Einträge (Fehlermeldungen im Fifo).
bOk: Diese Variable wird TRUE, wenn ein neuer Eintrag erfolgreich hinzugefügt oder aus dem Fifo entfernt wurde.
Beispiel in ST:
Im folgenden ST-Beispiel wird der Gerätefehler-Fifo ausgelesen und die registrierten Fehler ins Windows Application Log geschrieben.
PROGRAM P_LogErrors
VAR_IN_OUT
fbErrors : FB_IEC870_5_101ErrorFifo;
END_VAR
REPEAT
fbErrors.RemoveError();
IF fbErrors.bOk THEN
ADSLOGSTR( ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_LOG,
'IEC60870-5-10x device error: 0x%s',
DWORD_TO_HEXSTR( fbErrors.getError.nErrId, 8, FALSE) );
END_IF
UNTIL NOT fbErrors.bOk
END_REPEAT
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken |
---|---|---|
TwinCAT v2.9.0 Build >= 1030 | PC oder CX (x86) | TcIEC870_5_101.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcUtilities.Lib; werden automatisch eingebunden ) |
TwinCAT v2.10.0 Build >= 1301 | CX (ARM) |