Auszug aus der Hilfe:
[TABLE="class: breadcrumb_table, width: 100%"]
[TR]
[TD="class: td_breadcrumb_left, width: 100%"]Programmierreferenz > Deklaration > Pragma-Anweisungen > Attribut-Pragmas > Attribut Monitoring [/TD]
[/TR]
[/TABLE]
[h=5]Attribut Monitoring[/h]
Dieses Attribut-Pragma ermöglicht das Monitoring von Eigenschaften und Funktionsaufrufen in der Online-Ansicht des IEC-Editors oder in einer Überwachungsliste (watchlist). Siehe im Folgenden:
⇘ „Monitoring von Eigenschaften“,
⇘ „Monitoring der Ergebnisse von Funktionsaufrufen“.
Monitoring von Eigenschaften
Das Pragma muss in der Zeile oberhalb der Definition der
⇘ Eigenschaft eingefügt werden. Dann wird in der Online-Ansicht des Bausteins, der die Eigenschaft verwendet, bzw. in einer
⇘ Überwachungsliste der Name, Typ und Wert der Variablen der Eigenschaft angezeigt. Dort können auf Werte für das Forcen der Eigenschaften-Variablen vorbereitet werden.
Abb. 559: Beispiel einer zum Monitoring vorbereiteten Eigenschaft
Abb. 560: Beispiel einer Monitoring-Ansicht
Es gibt zwei verschiedene Wege, den aktuellen Wert der Eigenschaften-Variablen angezeigt zu bekommen. Im jeweiligen Anwendungsfall muss sorgfältig erwogen werden, welches Attribut-Pragma geeignet ist, den gewünschten Wert anzuzeigen. Das hängt davon ab, ob innerhalb der Eigenschaft weitere Operationen mit den Variablen implementiert sind.
1. Pragma
'{attribute 'monitoring':='variable'}'
Eine implizite Variable wird für die Eigenschaft angelegt, die immer wenn die Applikation die Set oder Get Methode aufruft. Der zuletzt in dieser Variablen gespeicherte Wert wird im Monitoring dargestellt.
Syntax:
{attribute 'monitoring':='variable'}
2. Pragma
'{attribute 'monitoring':='call'}'
Dieses Attribut kann nur für Eigenschaften verwendet werden, die einfache Datentype oder Pointer zurückgeben, nicht für strukturierte Typen:
Der zu monitorende Wert wird durch direktes Aufrufen der Eigenschaft geholt, d.h. der Monitoring-Dienst des Laufzeitsystems ruft die Get Methode auf und die Eigenschaften-Funktion wird ausgeführt!
[TABLE="class: notice_table, width: 90%"]
[TR]
[TD="class: td_infoicon_left, width: 80"]
[/TD]
[TD="class: td_infotext_right"]HINWEIS!
Wenn dieser Monitoring-Typ gewählt wird anstelle eine implizite Zwischenvariable zu verwenden (siehe oben, 1.), müssen mögliche Seiteneffekte bedacht werden, die auftreten können wenn innerhalb der Eigenschaft-Funktion die Variable betreffende Operationen implementiert sind!
[/TD]
[/TR]
[/TABLE]
Syntax:
{attribute 'monitoring':='call'}
Monitoring der Ergebnisse von Funktionsaufrufen
Monitoring von
⇘ Funktionsaufrufen kann für jeden konstanten Wert verwendet werden, der als 4-byte-numerischer Wert interpretiert werden kann (z.B. INT, SHORT, LONG). Für alle anderen Eingabeparameter (z.B. BOOL) muss eine Variable anstelle des konstanten Parameters verwendet werden. Das Pragma
'{attribute 'monitoring':='call'}' muss in der Zeile oberhalb der Funktionsdeklaration eingefügt werden. Dann wird in der Online-Ansicht einer POU, in der einer Variable das Ergenis eines Funktionsaufrufs zugewiesen wird, diese Variable in der Texteditor-Ansicht gemonitored werden. Die Variable kann zum gleichen Zweck auch einer
⇘ Überwachungsliste hinzugefügt werden. Man beachte, dass dabei der Befehl "Watchliste" verwendet werden kann, um die Variable unmittelbar in einer Überwachungsliste bereitgestellt zu bekommen.
Abb. 561: Beispiel, Funktionen FUN2 und FUN_BOOL2 mit Attribut 'monitoring'
Abb. 562: Beispiel, Aufrufe der Funktionen FUN2 und FUN_BOOL2 in einer Programm-POU
Abb. 563: Beispiel, Funktionsaufrufe im Online-Modus
Zu beachten für das Monitoring von Variablen mit einem impliziten Aufruf einer externen Funktion:
- Die Funktion muss mit {attribute 'monitoring' := 'call'} gekennzeichnet werden
- Die Funktion muss mit der Eigenschaft ⇘ immer binden versehen sein
- Die Variable muss mit {attribute 'monitoring_instead' := 'MyExternalFunction(a,b,c)'} gekennzeichnet sein
- Die Werte a,b,c müssen ganzzahlige Werte sein und müssen zu den Eingabeparameter der aufzurufenden Funktion passen
[TABLE="class: note_table, width: 90%"]
[TR]
[TD="class: td_infoicon_left, width: 80"]
[/TD]
[TD="class: td_infotext_right"]Forcen oder Schreiben von Funktionen wird nicht unterstützt. Forcen kann jedoch implizit implementiert werden, indem ein zusätzlicherEingabeparameter für die jeweilige Funktion hinzugefügt wird, der als internes "Force-Flag" funktioniert dient.
[/TD]
[/TR]
[/TABLE]
[TABLE="class: note_table, width: 90%"]
[TR]
[TD="class: td_infoicon_left, width: 80"]
[/TD]
[TD="class: td_infotext_right"]Funktionsmonitoring ist im Kompakt-Laufzeitsystem nicht möglich.
[/TD]
[/TR]
[/TABLE]