WR_USMSG: Anwender-Diagnoseereignis in den Diagnosepuffer schreiben (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
WR_USMSG: Anwender-Diagnoseereignis in den Diagnosepuffer schreiben

Beschreibung

Mit der Anweisung schreiben Sie ein Anwender-Diagnoseereignis in den Diagnosepuffer. Zusätzlich können Sie die zugehörige Anwender-Diagnosemeldung an alle dafür angemeldeten Teilnehmer senden (durch Belegung des Eingangsparameters SEND = TRUE). Tritt ein Fehler auf, dann gibt der Ausgangsparameter RET_VAL die Fehlerinformation aus.

Anwender-Diagnosemeldung senden

Ein Anwender-Diagnoseereignis wird mit der Anweisung in den Diagnosepuffer eingetragen. Zusätzlich können Sie die zugehörige Anwender-Diagnosemeldung auch an alle dafür angemeldeten Teilnehmer senden (durch Belegung des Eingangsparameters SEND = TRUE). Die Anwender-Diagnosemeldung wird dann in den Sendepuffer geschrieben und von dort automatisch an die dafür angemeldeten Teilnehmer gesendet.

Sie können prüfen, ob das Senden von Anwender-Diagnosemeldungen momentan möglich ist. Dazu rufen Sie die Anweisung "RDSYSST" mit den Parametern SZL_ID = W#16#0132 und INDEX = W#16#0005 auf. Das vierte Wort des dabei gelieferten Datensatzes zeigt an, ob das Senden derzeit möglich ist (1) oder nicht (0).

Sendepuffer voll

Der Eintrag der Anwender-Diagnosemeldung in den Sendepuffer kann nur dann erfolgen, wenn der Sendepuffer nicht voll ist. Wie viele Einträge in den Sendepuffer möglich sind, hängt vom Typ der CPU ab.

Wenn der Sendepuffer voll ist, dann

  • erfolgt trotzdem der Eintrag des Diagnoseereignisses in den Diagnosepuffer

  • wird im Parameter RET_VAL angezeigt, dass der Sendepuffer voll ist. (RET_VAL = W#16#8092).

Teilnehmer nicht angemeldet

Wenn eine Anwender-Diagnosemeldung gesendet werden soll (SEND = TRUE) und kein Teilnehmer angemeldet ist, dann

  • erfolgt trotzdem der Eintrag des Anwender-Diagnoseereignisses in den Diagnosepuffer.

  • wird im Parameter RET_VAL angezeigt, dass kein Teilnehmer angemeldet ist (W#16#0091 oder W#16#8091. Der Wert W#16#8091 erscheint bei älteren Ausgabeständen der CPU.).

Aufbau eines Eintrags

Ein Eintrag in den Diagnosepuffer ist intern wie folgt aufgebaut:

Byte

Inhalt

1 und 2

Ereignis-ID

3

Prioritätsklasse

4

OB-Nummer

5 und 6

Reserviert

7 und 8

Zusatzinformation 1

9, 10, 11 und 12

Zusatzinformation 2

13 bis 20

Zeitstempel

Ereignis-ID

Jedem Ereignis ist eine Ereignis-ID zugeordnet.

Zusatzinformation

In der Zusatzinformation sind zusätzliche Informationen zum Ereignis abgelegt. Diese Zusatzinformationen können für jedes Ereignis unterschiedlichen Inhalt besitzen. Wenn Sie ein Anwender-Diagnoseereignis erzeugen, dann können Sie den Inhalt dieser Einträge selbst bestimmen.

Wenn Sie eine Anwender-Diagnosemeldung versenden, können Sie die Zusatzinformationen als Begleitwerte in den (Ereignis-ID-spezifischen) Meldetext integrieren.

Zeitstempel

Der Zeitstempel ist vom Typ Date_and_Time.

Parameter

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

Parameter

Deklaration

Datentyp

Speicherbereich

Beschreibung

SEND

Input

BOOL

E, A, M, D, L

Senden der Anwender-Diagnosemeldung an alle angemeldeten Teilnehmer freigeben

EVENTN

Input

WORD

E, A, M, D, L oder Konstante

Ereignis-ID. Sie vergeben die Ereignis-ID. Die Vorgabe erfolgt nicht durch den Meldeserver.

INFO1

Input

ANY

E, A, M, D, L

Zusatzinformation: 1 Wort lang

INFO2

Input

ANY

E, A, M, D, L

Zusatzinformation: 2 Worte lang

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 SEND

Mit SEND = TRUE wird die Anwender-Diagnosemeldung an alle dafür angemeldeten Teilnehmer gesendet. Das Senden erfolgt nur dann, wenn mindestens ein Teilnehmer angemeldet ist und der Sendepuffer nicht voll ist. Das Senden erfolgt asynchron zum Anwenderprogramm.

Parameter EVENTN

Der Parameter EVENTN enthält die Ereignis-ID des Anwenderereignisses. Sie dürfen Ereignis-IDs der Form W#16#8xyz , W#16#9xyz, W#16#Axyz, W#16#Bxyz eintragen.

Die IDs der Form W#16#8xyz und W#16#9xyz gehören zu vordefinierten Ereignissen, die IDs der Form W#16#Axyz und W#16#Bxyz zu frei definierten Ereignissen.

Ein kommendes Ereignis wird durch x = 1, ein gehendes Ereignis durch x = 0 gekennzeichnet. Für Ereignisse der Klasse A und B gilt: yz ist die in der Meldungsprojektierung für die zugehörige Meldung vergebene Meldungsnummer in hexadezimaler Darstellung.

Parameter INFO1

Der Parameter INFO1 enthält eine Information, die ein Wort lang ist. Für INFO1 sind folgende Datentypen zulässig:

  • WORD

  • INT

  • ARRAY [0...1] OF CHAR

Sie können den Parameter INFO1 als Begleitwert in den Meldetext integrieren und damit der Meldung aktuelle Informationen hinzufügen.

Parameter INFO2

Der Parameter INFO2 enthält eine Information, die zwei Worte lang ist. Für INFO2 sind folgende Datentypen zulässig:

  • DWORD

  • DINT

  • REAL

  • TIME

  • ARRAY [0...3] OF CHAR

Sie können den Parameter INFO2 als Begleitwert in den Meldetext integrieren und damit der Meldung aktuelle Informationen hinzufügen.

Parameter RET_VAL

Fehlercode

(W#16#...)

Erläuterung

0000

kein Fehler

0091

kein Teilnehmer angemeldet (Eintrag des Diagnoseereignisses in den Diagnosepuffer erfolgt)

8083

Datentyp INFO1 nicht zulässig

8084

Datentyp INFO2 nicht zulässig

8085

EVENTN nicht zulässig

8086

Länge von INFO1 nicht zulässig

8087

Länge von INFO2 nicht zulässig

8091

(Dieser Fehlercode erscheint nur bei älteren Ausgabeständen der CPU.)

kein Teilnehmer angemeldet (Eintrag des Diagnoseereignisses in den Diagnosepuffer erfolgt)

8092

Senden derzeit nicht möglich, Sendepuffer ist voll (Eintrag des Diagnoseereignisses in den Diagnosepuffer erfolgt)

8xyy

allgemeine Fehlerinformation

Siehe auch: Fehlerauswertung mit dem Ausgangsparameter RET_VAL