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 |