Produkt: | Elvis 2 |
Version: | ab 1.3 |
Stand: | 2002-08-02 |
Zusammenfassung
Der Aktualwert (ActualValue) eines Datenpunkts, der mit einem Bus-System verbunden ist (er hat einen Anschluss und eine Adresse) repräsentiert den Wert eines Prozesspunktes in der Anlage. Der Aktualwert wird gesetzt, wenn ein Telegramm (vom angegebenen Anschluss / Adresse) empfangen wird. Der Aktualwert kann von Elvis aber auch beim Hochlauf, zyklisch oder bei Bedarf abgefragt werden.
Einzelheiten
Für eine Abfrage können zwei Angaben gemacht werden:
- Hochlauf
- Zykluszeit
Die beiden Angaben können beliebig kombiniert werden.
Wenn eine Abfrage weder bei Hochlauf noch zyklisch erfolgen soll, muss eine Abfrage angelegt werden, aber die Angaben entfallen. Eine Abfrage dieser Art ist ab Elvis 2.0 bereits in der leeren Datenbank angelegt und heißt „bei Bedarf“.
Wenn der Wert eines Prozesspunktes Elvis nicht bekannt ist (Aktualwert ist undefiniert) und Elvis den Aktualwert anzeigen soll oder Elvis den Aktualwert in einer Berechnung benötigt, wird der Aktualwert abgefragt. Elvis wird aber nur eine Abfrage (beim EIB: value read) ausführen, wenn dem Datenpunkt eine Abfrage zugeordnet ist. Elvis wird also nie einen Wert abfragen, wenn dem entsprechenden Datenpunkt keine Abfrage zugeordnet ist.
Wann wird welche Abfrage benutzt?
Hochlauf: Diese Abfrage sollte nur in Ausnahmefällen benutzt werden. Jede Abfrage bedeutet, dass im Idealfall mindestens zwei zusätzlich Telegramme übertragen werden (Frage und Antwort). Wenn sehr viele Aktualwerte mit kurzem Abstand abgefragt werden, wie es beim Hochlauf des Elvis-Prozessservers geschieht, kann eine deutliche Zunahme des Telegrammverkehrs beobachtet werden.
Zyklisch: Wenn ein Wert, z.B. von einem Sensor, nicht durch den Sensor selbst gesendet wird, kann der Aktualwert zyklisch abgefragt werden (Zykluszeit: 10 Sekunden bis 24 Stunden).
Bei Bedarf: Diese Abfrage berechtigt Elvis, den Wert von der Anlage zu holen. Elvis wird aber erst dann abfragen, wenn er den Aktualwert auch braucht.
Elvis braucht einen Aktualwert, wenn der Aktualwert in einem Kontrollelement angezeigt werden soll und die Seite, die das Kontrollelement enthält, geöffnet wird
oder wenn der Aktualwert in einer Berechnung verwendet wird und die Berechnung ausgeführt wird.
Abfrage erzwingen
Eine Abfrage kann in einer Berechnung oder Ereignisverarbeitung auch erzwungen werden. Dazu wird ein „Refresh“ durchgeführt. Die Syntax dazu lautet:
Database.Datapoint("<Datenpunktname>").Refresh <Zeitverzögerung in ms>
Beispiel:
Database.Datapoint("OG3 Flur Süd Licht").Refresh 1000
Nach einer Sekunde Verzögerung wird der Aktualwert des Datenpunkts mit dem Namen „OG3 Flur Süd Licht“ abgefragt.
Achtung, diese Abfrage wird immer ausgeführt – auch wenn der Aktualwert vorliegt.
Sonderfall
Die nachfolgende Lösung entstand aus einer sehr ungewöhnlichen Anforderung und stellt keinen üblichen Weg der Projektierung dar. Zum Verständnis der Abfrage und als Anregung für einige Elvis-Spezialisten möchte ich diesen Sonderfall hier anhängen.
Problemstellung
Für eine Anlage soll der Alarmzustand (AlarmState) in Kontrollelementen auf Seiten angezeigt werden. Der Alarmzustand wird von Elvis automatisch gesetzt, wenn sich der Aktualwert ändert. Wenn Elvis hochfährt, sollen die richtigen Werte für die Alarmzustände angezeigt werden. Da es sich um eine große Anlage handelt (über 1300 Datenpunkte nur für die Alarmzustände) soll keine Abfrage beim Hochlauf erfolgen (das ist auch richtig so!). Da die Aktualwerte aber weder angezeigt noch in einer Berechnung verwendet werden, werden die Aktualwerte nicht abgefragt und die Alarmzustände auch nicht aktualisiert.
Lösung
Wenn eine Seite geöffnet wird, werden die Aktualwerte in einer Berechnung der Seite benutzt. Wenn ein Aktualwert noch nicht im Prozessabbild von Elvis vorhanden ist, wird der Aktualwert abgefragt, andernfalls passiert nichts – also ideal. Da die Elvis-Projektierer schlau sind (und etwas faul) wollen Sie keine Liste der Datenpunkte in die Berechnung der Seite eingeben und bei Änderungen auch noch pflegen (uff – was´n Aufwand!). Also wird ein kleines Programm benutzt, das alle Datenpunkt-Namen ermittelt, die auf der Seite verwendet werden und deren Aktualwerte einer Dummy-Variablen zugewiesen (bingo!).
Das angegebenen Programm muss in die „Ereignisse…“ der gewünschten Seite(n) unter Form/Load eingefügt werden.
Download Skript