Produkt: | Elvis |
Version: | alle |
Stand: | 2001-11-19 |
Zusammenfassung
Wunsch: Bei Änderung des Werts eines oder mehrerer Datenpunkte soll eine bestimmte Bildschirmseite auf der Bedienstation angezeigt werden.
Lösung: In der Projekt-Ereignisverarbeitung (Datenbank/Projekt/Eigenschaften/Projekt/Ereignisse) wird auf die Wertänderung (DatapointChanged) der gewünschten Datenpunkte reagiert, indem ein Bild geöffnet wird. Im unten gezeigten Beispiel wird auf die Datenpunkteigenschaft Alarmstatus reagiert. Diese Eigenschaft haben alle Alarm-Datenpunkte. Dieses Vorgehen ist elegant, da der Seitenwechsel immer erfolgt, wenn irgendein Alarmdatenpunkt in den Alarmzustand wechselt. Der Datenpunktname oder eine andere spezielle Datenpunkteigenschaft muß also nicht in der Berechnung genannt werden.
Der Seitenwechsel kann aber ebenso durch die Änderung einer anderen Datenpunkteigenschaft ausgelöst werden. Es könnten auch selbstdefinierte Datenpunkteigenschaften verwendet werden.
Anmerkung: Die Berechnung wird in der Bedienstation ausgeführt und belastet in verteilten Anlagen den Elvis-Server nicht.
Download Datei ( 145 KB) mit einem Beispielprojekt (db und iep).
Einzelheiten
Im Beispielprojekt sind zwei Datenpunkte (Schalter, Wert) enthalten. Beide Datenpunkte sind Alarmdatenpunkte. Die Grenzwerte für den Schalter: ein -> Alarm; für den Wert: unterer Grenzwert: 40, oberer Grenzwert 75. Die Datenpunkte sind in der Startseite und der Alarmseite durch Kontrollelemente visualisiert.
Zum Öffnen der Alarmseite wird die Projekt-Ereignisverarbeitung genutzt. Die Projekt-Ereignisverarbeitung wird geöffnet indem Sie:
– den Datenbankordner wählen
– die Eigenschaftsseite des Projekts öffnen (Doppelklick oder rechte Maustaste und Eigenschaften wählen)
– im Eigenschaftsdialog die Seite Projekt wählen
– auf den Knopf „Ereignisse…“ klicken.
Im nun offenen Editor können Sie verschiedene Ereignisse auswählen, auf die reagiert werden soll:
– Load – das Starten (Laden) der Bedienstation
– Unload – das Beenden der Bedienstation
– DatapointChanged (bzw. Form_DatapointChanged) – die Änderung eines (jeden!) Datenpunktwert
Wir verwenden Form_DatapointChanged und können damit auf die Änderung des Werts von Datenpunkten reagieren.
Wir wollen nur reagieren, wenn sich die Datenpunkteigenschaft (prop = property) Alarmzustand (=AlarmState) ändert. Ausserdem soll der neue Alarmzustand „Alarm“ (=“A“) sein.
Anmerkung: Die Zuordnung der Alarmzustände zu ASCII-Zeichen ist willkürlich getroffen. Die mögliche Alarmzustände sind:
„A“ = Alarm (ASCII-Zahlenwert: 65)
„N“ = Nicht Alarm (ASCII-Zahlenwert: 78)
„Q“ = quittierter Alarm (ASCII-Zahlenwert: 81)
Damit ergibt sich die folgende Berechnung:
//CODE:vb:Sub Form_DatapointChanged(ByVal DP As Object, ByVal prop As String) 'DP = Datenpunkt 'prop = property = Eigenschaft If prop = "AlarmState" Then 'nur wenn sich die Eigenschaft Alarmstatus geändert hat kommt man hierher If DP.AlarmState = Asc("A") Then 'nur wenn der Alarmstatus Alarm (=A) ist kommt man hierher 'zum Testen kann man auch eine Message-Box öffnen: 'MsgBox "Alarm!" 'jetzt wird die Seite "alarmseite" geöffnet ProjectDoc.Open "\Dokumente\alarmseite" 'ab Version 1.3 "\Bedienstation\alarmseite" End If End If End Sub//CODE
Bitte beachten Sie auf der Alarmseite auch die Werte der drei Zustände des Kontrollelements, das den Alarmzustand der Heizung anzeigt (65 = Alarm, 78 = kein Alarm, 81 = Quittiert).
Wenn nicht eine feste Alarmseite geöffnet werden soll, kann man die gewünschte Seite auch in einer neuen Eigenschaft des Datenpunkts ablegen. Dazu müssen wir drei Änderungen vornehmen:
1. Die neue Eigenschaft hinzufügen: In den Datenpunkt-Eigenschaften die neue persistente Eigenschaft Name = „AlarmPage“, Typ = Zeichenkette (Text ist egal).
2. Das Sprungziel in die neue Eigenschaft einfügen: Die neue Datenpunkteigenschaft ist in den Eigenschaften des Datenpunkts veränderbar.
3. Bei Alarm auf die jeweilige Seite springen: Ersetzen Sie in obige Berechnung die Zeile „ProjectDoc.Open …“ durch “ ProjectDoc.Open „\Bedienstation\“ & DP.Value(„AlarmPage“)“