FB_TcEventFilter
Stellt die Funktionalität zur Verfügung, um einen Ereignisfilter zu spezifizieren.
Die Filter werden über eine fließende Schnittstelle in Anlehnung an eine strukturierte Abfragesprache gegeben. Diese beschreibt, welche Nachrichten zutreffen sollen.
- Bedingungen können durch
.AND_OP()
und.OR_OP()
verknüpft werden. - Bedingungen können durch
.NOT_OP()
negiert werden. - Bedingungen können durch Eigenschaften wie .
isAlarm()
oder beispielsweise.EventClass.EqualsTo(<EventClass>)
definiert werden. Eine vollständige Liste der Eigenschaften befindet sich in der API-Dokumentation. - Eine Gruppierung kann durch
.FilterExpression(<SubCondition>)
formuliert werden. Die<SubCodition>
ist selbst wieder einFB_TcEventFilter
bzw.ITcEventFilter
.
Nachdem ein Filter zusammengestellt wurde, wird er angewendet. Für das Empfangen von Nachrichten wird er beispielsweise über FB_ListenerBase2.subscribe()
einem Empfänger zugeordnet. Der FB_ListenerBase2
übernimmt hierdurch den Filter und gibt einen entsprechenden Rückgabewert, welcher hier beschrieben ist. Eine Änderung des Filters durch erneuten FB_ListenerBase2.subscribe()
vornehmen.
Es können maximal 255 Filterbedingungen gesetzt werden – danach wird als Fehlermeldung ein ADS_NOMOREHDL rückgegeben.
Beispiel
Beispielsweise kann ein Filter auf diese Art zusammengestellt werden:
fbFilter.Severity.GreaterThan (TcEVentSeverity.Error).AND_OP().Source.Name.Like('%Main%');
Das Beispiel Filter zeigt die Verwendung.
EtherCAT Filter
Der Empfang der EtherCAT Emergency Nachrichten ist ähnlich zu dem zuvor beschriebenen Mechanismus aufgebaut. Der Einstiegspunkt in den verketteten Methodenaufrufen ist .EtherCATDevice()
, welches als erstes die direkte Anfrage bietet, ob es von einem EtherCAT Gerät abgesendet wurde (IsEtherCATDevice()
). Von hier aus kann auf den Hersteller (.VendorId()
), den ProductCode (.ProductCode()
) sowie die Revision (.RevisionNo())
gefiltert werden.
Syntax
Definition:
FUNCTION_BLOCK FB_TcEventFilter IMPLEMENTS I_TcEventFilter, I_TcExpressionBase
Methoden
Name | Definitionsort | Beschreibung |
---|---|---|
I_TcEventFilter | Löscht den bisherige Filterausdruck. | |
I_TcExpressionBase | Angabe einer unterlagerten Filterdefinition. | |
I_TcExpressionBase | Überprüfung, ob es sich um einen Alarm handelt. | |
I_TcExpressionBase | Überprüfung, ob es sich um eine Nachricht handelt. | |
I_TcExpressionBase | Negierung der folgenden Aussage. |
Eigenschaften
Name | Typ | Zugriff | Beschreibung |
---|---|---|---|
AlarmState | I_TcAlarmFilterExpression | Get | Abgleich mit einem AlarmState |
EtherCATDevice | I_TcEtherCATDeviceExpression | Get | Abgleich, ob es sich um ein EtherCAT Gerät als Quelle handelt. |
EventClass | I_TcGuidCompare | Get | Abgleich mit einer EventClass |
EventId | I_TcUDIntCompare | Get | Abgleich mit einer EventId |
JsonAttribute | I_TcJsonAttributeExpression | Get | Abgleich mit dem JsonAttribut |
Severity | I_TcSeverityCompare | Get | Abgleich mit der Serverity |
Source | I_TcSourceInfoExpression | Get | Abgleich mit der Quelle |
TimeCleared | I_TcULIntCompare | Get | Abgleich des Clear-Zeitpunkts (nur bei Alarm) |
TimeConfirmed | I_TcULIntCompare | Get | Abgleich des Confirm-Zeitpunkts (nur bei Alarm mit Quittierung) |
TimeRaised | I_TcULIntCompare | Get | Abgleich des Absenders (bei Nachrichten) bzw. des Raised -Zeitpunktes (bei Alarmen) |
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v3.1.4024.17 | PC oder CX (x64, x86, ARM) | Tc3_EventLogger (>= v3.1.27.0) |