DIS_MSG: PLC-Meldungen sperren (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
DIS_MSG: PLC-Meldungen sperren

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