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 |
|
|
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 |
Siehe auch