ALARM_S: Alarmmeldung generieren (S7-300, S7-400) - STEP 7

Erweiterte Anweisungen (S7-300, S7-400)

ft:publication_title
Erweiterte Anweisungen (S7-300, S7-400)
Product
STEP 7
Version
V20
Publication date
11/2024
Language
de-DE
ALARM_S: Alarmmeldung generieren

Beschreibung

Die Anweisung generiert bei jedem Aufruf eine Meldung, an die Sie einen Begleitwert anhängen können. Die Meldung wird an alle dafür angemeldeten Teilnehmer gesendet. Die Anweisung stellt Ihnen also einen einfachen Meldemechanismus zur Verfügung. Sie müssen darauf achten, dass Sie die Anweisung nur dann aufrufen, wenn der Wert des meldungsauslösenden Signals SIG gegenüber dem letzten Aufruf invertiert ist. Ist dies nicht der Fall, so wird Ihnen dies über RET_VAL mitgeteilt, und es wird keine Meldung gesendet. Beim allerersten Aufruf der Anweisung müssen Sie dafür Sorge tragen, dass am Eingang SIG "1" anliegt. Sonst bekommen Sie über RET_VAL eine Fehlerinformation, und es wird keine Meldung gesendet.

Hinweis

In neu zu erstellenden Programmen sollten Sie nur noch die Anweisung "ALARM_D" verwenden (sofern Ihre CPU diese Anweisung unterstützt), da diese verbesserte Möglichkeiten zum Verwalten der Systemressourcen bieten.

Belegung von Systemressourcen

Bei der Meldungserzeugung belegt das Betriebssystem für die Dauer eines Signalzyklus eine Systemressource.

Der Signalzyklus dauert vom Aufruf mit SIG=1 bis zum erneuten Aufruf mit SIG=0. Falls innerhalb des Signalzyklus ein Überladen oder Löschen des meldungserzeugenden Bausteins erfolgt, bleibt die zugehörige Systemressource bis zum nächsten Neustart (Warmstart) belegt.

Meldungsquittierung

Meldungen, die Sie mit "ALARM_S" gesendet haben, sind immer implizit quittiert. Den Signalzustand beim letzten "ALARM_S" -Aufruf können Sie mit Hilfe von "ALARM_SC" ermitteln.

Zwischenspeicherung von Signalzuständen

Die Anweisung "ALARM_S" belegt Systemressourcen. Darin werden u. a. die letzten beiden Signalzustände inkl. Zeitstempel und Begleitwert zwischengespeichert. Erfolgt ein Aufruf von "ALARM_S" zu einem Zeitpunkt, an dem die Signalzustände der beiden letzten "gültigen" Aufrufe noch nicht gesendet sind (Signal-Overflow), werden der aktuelle und der letzte Signalzustand verworfen und eine Overflow-Kennung im Zwischenspeicher gesetzt. Zum nächstmöglichen Zeitpunkt wird das vorletzte Signal samt Overflow-Kennung gesendet.

Beispiel:

Seien t0, t1 und t2 die Aufrufzeitpunkte von "ALARM_S". Falls die Signalzustände von t0 und t1 zum Zeitpunkt t2 noch nicht gesendet sind, werden die Signalzustände von t1 und t2 verworfen, und beim Signalzustand von t0 wird die Overflow-Kennung gesetzt.

Instanzoverflow

Falls die Anzahl von "ALARM_S"-Aufrufen größer ist als die maximale Anzahl von Systemressourcen Ihrer CPU, kann es zu einem Ressourcenengpass (Instanz-Overflow) kommen. Dies wird Ihnen sowohl durch eine Fehlerinformation in RET_VAL als auch an den angemeldeten Anzeigegeräten mitgeteilt.

Die maximale Anzahl von "ALARM_S"-Aufrufen ist CPU-abhängig.

Parameter

Die folgende Tabelle zeigt die Parameter der Anweisung "ALARM_S":

Parameter

Deklaration

Datentyp

Speicherbereich

Beschreibung

SIG

Input

BOOL

E, A, M, D, L

Das meldungsauslösende Signal

ID

Input

WORD

E, A, M, D, L oder Konstante

Datenkanal für Meldungen: W#16#EEEE

EV_ID

Input

C_ALARM_S

E, A, M, D, L

Meldungsnummer (nicht erlaubt: "0")

SD

Input

ANY

E, A, M, D, T, Z

Begleitwert

Maximale Länge: 12 Byte

Zulässig sind nur die Datentypen BOOL (nicht erlaubt: Bitfeld), BYTE, CHAR, WORD, INT, DWORD, DINT, REAL, DATE, TOD, TIME, S5TIME, DATE_AND_TIME.

RET_VAL

Return

INT

E, A, M, D, L

Fehlerinformation

Weitere Informationen zu den gültigen Datentypen finden Sie unter "Übersicht über die gültigen Datentypen".

Parameter RET_VAL

Fehlercode

(W#16#...)

Erläuterung

0000

Es ist kein Fehler aufgetreten.

0001

  • Der Begleitwert ist länger als die maximal zulässige Länge.

  • Der Zugriff auf den Anwenderspeicher ist nicht möglich (z. B. Zugriff auf gelöschten DB). Die Meldung wird gesendet.

  • Der Begleitwert zeigt auf einen Wert im Lokaldatenbereich. Die Meldung wird gesendet. (nur S7‑400)

0002

Warnung: Der letzte freie Meldequittierspeicher wurde belegt. (nur S7-400)

8081

Die angegebene EV_ID liegt außerhalb des zulässigen Bereichs.

8082

Meldungsverlust, da Ihre CPU keine Ressourcen für die Erzeugung von PLC- Meldungen durch Anweisungen mehr frei hat.

8083

Meldungsverlust, da derselbe Signalwechsel bereits vorliegt, aber noch nicht gesendet werden konnte (Signal-Overflow).

8084

Beim aktuellen und beim vorangegangenen "ALARM_S"-Aufruf hat das meldungsauslösende Signal SIG denselben Wert.

8085

Für die angegebene EV_ID liegt keine Anmeldung vor.

8086

Ein Aufruf für die angegebene EV_ID ist bereits in einer Prioritätsklasse niedrigerer Priorität in Bearbeitung.

8087

Beim ersten Aufruf von "ALARM_S" hatte das meldungsauslösende Signal den Wert "0".

8088

Die angegebene EV_ID wird bereits von einer anderen Systemressource ("ALARM_S", ALARM_DQ , ALARM_D) belegt.

8xyy

allgemeine Fehlerinformation

Siehe auch: Fehlerauswertung mit dem Ausgangsparameter RET_VAL