Ereignisse mit API-Aufruf programmatisch auslösen
Hinweis
Ereignisse sind Alarme des Überwachungstyps Ereignis (API). Sie werden programmatisch im Applikationscode mithilfe der Funktionalität der Bibliothek AlarmManager und der Schnittstelle IAlarmHandler7 ausgelöst.
Ereignisse werden direkt in einer Alarmgruppe definiert oder in einer Alarmgruppenvorlage als Alarminstanz.
Für weitere Informationen siehe: Beispiel AlarmManager
Mit Ereignis alarmieren
Alarm mit Typ Ereignis (API) definieren
Legen Sie unter
Alarm Configurationeine Alarmgruppe an.Definieren Sie in der Alarmgruppe einen Alarm des Überwachungstyps Ereignis (API).
Wählen Sie in der Spalte Klasse beispielsweise die Alarmklasse
Errorund geben Sie unter Nachricht die gewünschte Alarmmeldung an.
Der per API auf ein Ereignis hin auslösender Alarm ID_0 ist definiert.
Sie können ein solches Ereignis mit einer beliebigen Alarmklasse definieren. Die Angabe von Details entfällt und es wird keine Alarmbedingung angegeben. Das Ereignis wird per API-Aufruf ausgelöst.
Tipp
Sie können ein Ereignis auch in einer Alarmgruppenvorlage definieren.
API-Aufruf implementieren
Ein Ereignis wird im Code durch den API-Aufruf der Bibliotheksbaustein-Instanz RaiseEvent ausgelöst, wobei eine Alarm-ID übergeben wird. Jeder Alarm hat eine eindeutige ID. Diese kann im Code als Variable verwendet werden und dient somit als Übergabevariable.
Konkret ist die AlarmID-Variable ein Enum nach folgendem Schema:
Alm_<Name der Alarmgruppe>_ IDs.ID_<konfigurierte ID>
Setzen Sie den Cursor an die Programmstelle, an der der Funktionsbaustein-Aufruf stattfinden soll.
Geben Sie „
AlarmManager“ gefolgt von einem Punkt ein.Wählen Sie
AlarmGlobalsund geben Sie einen Punkt ein.Es öffnet sich ein Fenster mit einer Liste aller einfügbaren Elemente (Funktionalität „Komponenten auflisten“).

Fügen Sie in der gleichen Weise die Elemente
g_AlarmHandlerundRaiseEventein.Sie erhalten folgende Zeile:
Alarmmanager.AlarmGlobals.g_AlarmHandler.RaiseEvent.Legen Sie nun die Übergabevariablen
AlarmGroup_IDundAlarm_IDfest. Dazu geben Sie eine öffnende Klammer ein.Es erscheint ein Tooltip mit Informationen zu den Übergabevariablen
Drücken Sie F2.
Es öffnet sich die Eingabehilfe.
Wählen Sie in der Registerkarte Kategorien (
) die Kategorie Variablen (
).Eingabehilfe

Wählen Sie die gewünschte Alarmgruppen-ID-Variable (
) aus.Die Variable wird in die Programmzeile übernommen.
Geben Sie ein Komma ein und fügen Sie mit Unterstützung der Eingabehilfe die gewünschte Alarm-ID-Variable (
) ein. Geben Sie eine schließende Klammer und einen Strichpunkt ein.Sie erhalten folgende Programmzeile:
Alarmmanager.AlarmGlobals.g_AlarmHandler.RaiseEvent(Alm_AlarmConfiguration_Alarmgroup_IDs.ID_AlarmGroup1, Alm_AlarmGroup1_Alarm_IDs.ID_0);
Dieser Code löst den Alarm
ID_0in der AlarmgruppeAlarmGroup1aus.
Ereignis per Alarminstanz auslösen
Dies ist insbesondere für Bibliotheksentwickler relevant.
Wichtig
Wenn Sie die Variablen eines benutzerdefinierten Typs (Funktionsbaustein oder Struktur) überwachen und dafür ein Ereignis für diesen Programmierbaustein definieren möchten, sollten Sie dies am besten in einer Alarmgruppenvorlage tun.
Von Vorteil ist, dass sowohl der Programmierbaustein als auch die Alarmgruppenvorlage Teil einer Entwicklungsbibliothek werden können.
Alarm mit Typ Ereignis (API) definieren
Legen Sie unter Ihrer Applikation die Alarmgruppenvorlage
AGT_0an.Definieren Sie in der Alarmgruppenvorlage einen Alarm des Überwachungstyps Ereignis (API).
Wählen Sie in der Spalte Klasse die Alarmklasse
Errorund geben Sie unter Nachricht die gewünschte Alarmmeldung an.
Der Alarm ID_0, der per API auf ein Ereignis hin auslösen soll, ist definiert.
Ein solcher Alarm kann mit einer in der Auswahlliste angegebenen Alarmklasse und Bestätigungsmethode definiert werden. Die Angabe von Details entfällt.
API-Aufruf implementieren
Ein Ereignis eines Instanzalarms wird durch den API-Aufruf der Bibliotheksbaustein-Instanz RaiseEventAlarmInstance oder alternativ durch RaiseEventAlarmInstanceByName ausgelöst.
Implementieren Sie den Funktionsbaustein
FB_MyAlarmmit der MethodenMETH_RaiseEvent.Selektieren Sie den Applikationsknoten und wählen Sie den Befehl Objekt hinzufügen → POU.
Konfigurieren Sie die POU wie folgt: Name
FB_MyAlarm, Typ Funktionsbaustein, Implementierungssprache ST.Deklarieren Sie die Eingangsvariable.
Deklaration:
FUNCTION_BLOCK FB_MyAlarm VAR_INPUT xCondition : BOOL; END_VAR VAR_OUTPUT END_VAR VAR END_VARSelektieren Sie den Baustein und fügen Sie die Methode
METH_RaiseEventhinzu.Öffnen Sie den ST-Editor der Methode
METH_RaiseEventund programmieren Sie den Bibliotheksaufruf.Tipp
Lassen Sie sich von der Eingabehilfe (F2) unterstützen.
Dieser Code aktiviert den Alarm
ID_0aus der AlarmgruppenvorlageAGT_0.METHOD RaiseEvent : BOOL VAR_INPUT END_VAR
Alarmmanager.AlarmGlobals.g_AlarmHandler.RaiseEventAlarmInstance(THIS, Alm_AGT_0_Alarm_IDs.ID_0);
Instanzieren Sie den Funktionsbaustein in der Alarmgruppenvorlage.
Öffnen Sie den Editor von
AGT_0und klicken Sie in der Zeile Typ für Alarmdefinition auf die Drei-Punkt-Schaltfläche.Die Einhabehilfe öffnet sich.
Wählen Sie unter
Applicationden FunktionsbausteinFB_MyAlarmaus.
Die Alarmdefinition ist instanziert.
Implementieren Sie den API-Aufruf im IEC-Code.
Deklaration
PROGRAM PLC_PRG VAR // Alarm Instances myInst : FB_MyAlarm; myInst2 : FB_MyAlarm; END_VARImplementierung
Alarmmanager.AlarmGlobals.g_AlarmHandler.RaiseEventAlarmInstance(ADR(myInst), Alm_AGT_0_Alarm_IDs.ID_0); Alarmmanager.AlarmGlobals.g_AlarmHandler.RaiseEventAlarmInstanceByName(ADR(myInst2), Alm_AGT_0_Alarm_IDs.ID_0, 'AGT_0');
