Beschreibung
Mit der Anweisung sperren Sie PLC-Meldungen, die Sie mit Anweisungen erzeugt haben. Die zu sperrenden Meldungen legen Sie über die Eingangsparameter MODE und MESGN fest. Voraussetzung für den erfolgreichen Start eines Sperrvorgangs mit der Anweisung "DIS_MSG" ist, dass momentan kein weiterer Sperrvorgang von "DIS_MSG" aktiv ist.
Meldungen, die beim Aufruf von "DIS_MSG" bereits zum Verschicken vorbereitet sind, aber noch in einem internen Puffer stehen, sind von der Sperre nicht mehr betroffen, d. h. sie werden noch verschickt.
Dass die Meldungsübertragung gesperrt ist, wird Ihnen in den Ausgängen ERROR und STATUS der Anweisungen "NOTIFY", "NOTIFY_8P", "ALARM", "ALARM_8P" und "ALARM_8" mitgeteilt.
Sie starten den Vorgang, indem Sie beim Aufruf von "DIS_MSG" den Eingangsparameter REQ mit "1" belegen.
Arbeitsweise
Der Vorgang des Sperrens wird asynchron ausgeführt, d. h. er kann sich über mehrere Aufrufe erstrecken (siehe auch Unterschied zwischen synchron und asynchron arbeitenden Anweisungen):
-
Beim Erstaufruf (REQ =1) prüft "DIS_MSG" die Eingangsparameter und versucht die benötigten Systemressourcen zu belegen. Im Gutfall wird in RET_VALW#16#7001 eingetragen, BUSY wird gesetzt, und das Sperren wird angestoßen.
Andernfalls wird in RET_VAL die zugehörige Fehlerinformation eingetragen, und der Auftrag ist abgeschlossen. BUSY darf in diesem Fall nicht ausgewertet werden. -
Bei eventuellen Zwischenaufrufen wird in RET_VALW#16#7002 eingetragen (Auftrag wird von der CPU noch bearbeitet), und BUSY wird gesetzt. Ein Zwischenaufruf beeinflusst den laufenden Auftrag nicht.
-
Beim letzten Aufruf wird in RET_VALW#16#0000 eingetragen, falls kein Fehler vorlag. BUSY wird in diesem Fall mit "0" beschrieben. Im Fehlerfall wird in RET_VAL die Fehlerinformation eingetragen, und BUSY darf nicht ausgewertet werden.
Parameter
Die folgende Tabelle zeigt die Parameter der Anweisung "DIS_MSG":
|
Parameter |
Deklaration |
Datentyp |
Speicherbereich |
Beschreibung |
|---|---|---|---|---|
|
REQ |
Input |
BOOL |
E, A, M, D, L |
REQ = 1: Sperren anstoßen |
|
MODE |
Input |
BYTE |
E, A, M, D, L oder Konstante |
Parameter für die Auswahl der zu sperrenden Meldungen, siehe folgende Tabelle |
|
MESGN |
Input |
DWORD |
E, A, M, D, L oder Konstante |
Meldungsnummer Nur relevant für MODE = 5, 6, 7. Damit kann eine Einzelmeldung gesperrt werden. |
|
RET_VAL |
Return |
INT |
E, A, M, D, L |
Fehlercode (siehe unten) |
|
BUSY |
Output |
BOOL |
E, A, M, D, L |
BUSY = 1: Der Vorgang des Sperrens ist noch nicht beendet. |
Weitere Informationen zu den gültigen Datentypen finden Sie unter "Übersicht über die gültigen Datentypen".
Parameter MODE
In der folgenden Tabelle sind die zulässigen Werte des Eingangsparameters MODE aufgeführt.
|
Wert |
Bedeutung |
|---|---|
|
0 |
Alle mit Anweisungen erzeugten PLC-Meldungen der CPU |
|
1 |
Alle mit Anweisungen erzeugten PLC-Meldungen der CPU, d. h. alle Meldungen von "NOTIFY", "NOTIFY_8P", "ALARM", "ALARM_8P" und "ALARM_8" |
|
6 |
Einzelmeldung der Klasse "Mit Anweisungen erzeugte PLC-Meldungen" |
Parameter RET_VAL
|
Fehlercode (W#16#...) |
Erläuterung |
|---|---|
|
0000 |
Das Sperren wurde ohne Fehler beendet. |
|
7000 |
Erstaufruf mit REQ = 0: Das Sperren wurde nicht aktiviert. |
|
7001 |
Erstaufruf mit REQ = 1: Das Sperren wurde angestoßen. |
|
7002 |
Zwischenaufruf: Das Sperren ist bereits aktiv. |
|
8081 |
Fehler beim Zugriff auf einen Parameter |
|
8082 |
MODE hat unzulässigen Wert. |
|
8083 |
Die Meldungsnummer liegt außerhalb des zulässigen Wertebereichs. |
|
8084 |
Für die über MODE und ggf. MESGN spezifizierte(n) Meldung(en) liegt keine Anmeldung vor. |
|
80C3 |
Das Sperren der über MODE und ggf. MESGN spezifizierten Meldung(en) kann momentan nicht angestoßen werden, da bereits ein anderer Sperrvorgang von "DIS_MSG" aktiv ist. |
|
8xyy |
allgemeine Fehlerinformation Siehe auch: Fehlerauswertung mit dem Ausgangsparameter RET_VAL |