Skripts in Grafiken
Im Evaluationseditor können Sie Ausdrücke basierend auf den Berechnungen und Ergebnissen mehrerer Datenpunkte oder Eigenschaften erstellen. Diese Ausdrücke werden erstellt, wenn Sie im Dropdown-Menü Typ im Bereich Ausdruck des Editors die Option Script wählen. Sie können die Berechnungen auch auf das Feld Bedingung anwenden. Die Skript-Ausdrücke verwenden die JavaScript-Syntax basierend auf dem ECMA-Standard für JavaScript (Standard ECMA-262 5.1 Edition.)
Die Statements der Methoden Read, ReadCnsDescription und Trace wurden speziell für die Arbeit mit dem System erstellt:
- Die Methode Read erlaubt Ihnen, den aktuellen Wert des angegebenen Datenpunkts abzurufen.
- Die Methode ReadCndDescription ermöglicht Ihnen, die aktuelle Beschreibung des angegebenen Datenpunkts abzurufen.
- Mit der Methode Trace können Sie eine Trace-Nachricht an das Graphics.Scripting-Modul des Trace-Kanals protokollieren. Um diese Grafik-Skripte für Trace-Meldungen anzuzeigen, müssen Sie in der Applikation Trace-Viewer das Trace-Modul aktivieren.
Skript-Ausdrücke sind nützlich, wenn Sie Grafiken erstellen, die sich ändernde Werte darstellen, zum Beispiel einen Sensor oder positiven und negativen Luftdruck im Raum. Sie können auch die Skript-Funktion verwenden, um einen Ausdruck für einen Grundriss zu erstellen, der eine Farbänderung je nach Abstand der Bereichstemperatur vom Sollwert verursacht. Skript-Beispiele finden Sie unter Skript-Szenario.
Globale Anwendung von lokalen Variablen und Funktionen
Alle Grafikskripte innerhalb des gleichen Systemmanagers verwenden das gleiche Skriptmodul. Das heisst, dass alle lokalen Variablen und Funktionen die gleiche globale Reichweite haben.
Beispiel: Eine Grafik enthält zwei Textelemente:
Textelement 1 ist das Skript: var x=3; x;
Textelement 2 ist das Skript: var y=x+1; y;
Ein mögliches Ergebnis für den Wert der Textelementskripte ist: 3 für Textelement 1 und 4 für Textelement 2. Die resultierenden Werte hängen jedoch von der Reihenfolge ab, in der die Skripte ausgeführt werden, und diese kann nicht festgelegt werden. Wenn das Skript für Textelement 2 das nächste Mal ausgeführt wird, kann das Ergebnis für den Wert einen Fehler ausgeben, der angibt, dass x nicht definiert ist.

Hinweis:
Die Verwendung von Variablen in einem Skript ist kein Problem, selbst wenn zwei Skripte auf der gleichen Grafik den gleichen Variablennamen nutzen. Skripte werden nicht durch andere Skripte unterbrochen, sodass die Variable während der Ausführung unverändert bleibt.
Grundlegende Regeln für Variablen und IDs
Eine Variable dient beim Programmieren und in JavaScript als Speichermöglichkeit für einen Wert. Alle Variablen müssen in Ihrem Skript mit eindeutigen Namen identifiziert sein. Diese eindeutigen Namen werden IDs genannt.
Im Folgenden finden Sie einige Regeln für den Aufbau von Namen für Variablen und ihre eindeutigen IDs.
- Kann Buchstaben, Zahlen, Unterstriche (_) und Dollarzeichen ($) enthalten
- Muss mit einem Buchstaben beginnen
- Kann auch mit $ und _ beginnen
- Gross-/Kleinschreibung zu beachten
- Leerzeichen nicht zulässig
Anforderungen an Skript-Ausdrücke
- JavaScript-Objekte sind Zeichenketten, Zahlen, mathematische Operatoren, Arrays usw.
- Die Ausdrücke unterstützen die folgenden Operatoren: +,-,*,/, %, ++ und – sowie gängige Operationen wie math.abs(), math.max(), math.min(), math.sqrt(), math.average(), math.sum() usw.
- Ein Skript-Ausdruck wird evaluiert, wenn eine Grafik geladen wird oder sich der Wert eines Datenpunkts ändert.
- Sie können eine Datenpunktreferenz mit der Maus aus dem System Browser in jeden Bereich des Felds Skript ziehen. Wenn Sie eine Datenpunktreferenz mit der Maus ziehen, wird sie automatisch mit der Read-Methode eingefügt. Weitere Informationen hierzu finden Sie im Abschnitt Read() Drag & Drop.
- Verwenden Sie in einem Skript keine globalen Daten, ohne die Daten im gleichen Skript zu deklarieren und zu initialisieren.
- Fehler in der Skriptsyntax werden durch einen roten Rahmen um das Feld Ausdruck und einen Tooltip mit dem eigentlichen Fehler gekennzeichnet. Ebenso wird eine Trace-Warnmeldung protokolliert.
Referenztabellen für Skripts
Die folgenden Tabellen geben eine kurze Übersicht über einige Ausdrücke, die Sie mit der Skriptfunktion schreiben können. Konsultieren Sie beim Erstellen eigener Skripts diese Tabellen.
Read-Methode
Die Methoden Read, ReadCnsDescription, und Trace sind drei Statements, die insbesondere für die Arbeit mit dem System entworfen wurden. Mit der Methode Read können Sie den aktuellen Wert des angegebenen Datenpunkts abrufen; mit ReadCnsDescription können Sie den aktuellen Wert des angegebenen Datenpunkts abrufen; und mit der Methode Trace können Sie eine Trace-Nachricht an das Graphics.Scripting-Modul des Trace-Kanals protokollieren. Um diese Grafik-Skripte für Trace-Meldungen anzuzeigen, müssen Sie in der Applikation Trace-Viewer das Trace-Modul aktivieren.
Read-Methode | |
Ausdruck | Resultat |
Read("System1.LogicalView:Logical.Site'AS01.B.Ahu10.FanSu;") | Zeigt den aktuellen Wert des Datenpunkts an. |
Lesen("{*}") | Zeigt den Wert der Objektreferenz an. |
Read("System1.LogicalView:Logical.Site'AS01.B.Ahu10.FanSu;.Value") - Read("System1.LogicalView:Logical.Site'AS01.B.Ahu10.FanSu;.SetPoint") | Zeigt den Unterschied zwischen den beiden Eigenschaften des Datenpunkts an. |
(Read("System1.LogicalView:Logical.Site'AS01.A;.Value") + | Zeigt den Durchschnittswert der beiden Eigenschaften an. |
Unterstützung von Drag & Drop für Read()
Sie können eine Datenpunktreferenz mit der Maus aus dem System Browser in jeden Bereich des Felds Skript ziehen. Sie wird automatisch mittels der Read()-Methode eingefügt, ausser Sie drücken die Taste UMSCHALT.
Die Abbildung unten zeigt das Ziehen einer Datenpunktreferenz in das Feld Ausdruck des Evaluationseditors für eine Evaluation eines Skripts.

Die Read-Methode wird dadurch direkt auf den eingefügten Datenpunkt angewendet:

? ?-Operator in der Read-Methode
In der Read-Methode kann das Fragezeichen als Teil der Datenpunktbezeichnung verwendet werden. Wenn mindestens eine Bezeichnung mit einem Fragezeichen endet, ist das Element verborgen, wenn ein Datenpunkt, der von der aktuellen Read-Methode referenziert wird, nicht existiert. Siehe letztes Beispiel in folgender Tabelle.
? in der Read-Methode | |
Ausdruck | Resultat |
Read("System1.LogicalView:Logical.Site'AS01.B.Ahu10.FanSu;?-1") | Der aktuelle Wert des Datenpunkts, wenn er existiert. 1 - wenn der Datenpunkt nicht existiert. |
Read("System1.LogicalView:Logical.Site'AS01.B.Ahu10.FanSu;?") | Der aktuelle Wert des Datenpunkts, wenn er existiert. Das Element wird im Zeichenbereich verborgen, wenn der Datenpunkt nicht existiert. |
Read("{*dp1}?{*dp2}?99") | Ausdruck in einem Symbol: Gibt den Wert von Datenpunkt 1 oder Datenpunkt 2 zurück. 99. Wird angezeigt, wenn weder der Datenpunkt noch die Eigenschaft existiert. |
Read("xyz?dp1") + Read("xyz?abc?4") | Der Wert des Datenpunkts 1 + 4. |
Read("dp1?") + Read("xyz") | Null. Das Element wird verborgen, auch wenn Datenpunkt 2 existiert. |
Methode ReadCnsDescription
Die Read()-Methode meldet den aktuellen Wert des angegebenen Datenpunkts zurück, wenn der Pfad des Datenpunkts in Klammern eingeschlossen ist. In diesem Fall ist der angegebene Datenpunkt eine Zeichenkette. In Ausdrücken müssen alle Zeichenfolgen in Anführungszeichen eingeschlossen werden. Es ist wichtig, doppelte Anführungszeichen (") zu setzen, da Datenpunktbezeichnungen bereits einfache Anführungszeichen (') enthalten können.
Hinweis: In der Ansicht Texteigenschaften muss die Eigenschaft Texttyp auf Folgendes eingestellt werden: Rohwert. Der Datenpunkt muss online sein. Wenn der Datenpunkt offline (#COM) ist, wird der Datenpunkt im Skript nicht verarbeitet.
Die Beschreibung wird basierend auf der Ansicht, in der sich der Datenpunkt befindet, dynamisch aktualisiert. Daher kann die für einen Datenpunkt zurückgegebene Beschreibung variieren.
Methode ReadCnsDescription | |
Ausdruck | Resultat |
ReadCnsDescription("System1.LogicalView:Logical.Site'AS01.B.Ahu10.FanSu;") | Zeigt den aktuellen Beschreibung des Datenpunkts an. |
ReadCnsDescription("{*}") | Zeigt die Beschreibung der Objektreferenz an. |
ReadCnsDescription ("System1.LogicalView:Logical.Site'AS01.B.Ahu10.FanSu;.Value") + ReadCnsDescription ("System1.LogicalView:Logical.Site'AS01.B.Ahu10.FanSu;.SetPoint") | Zeigt die Verknüpfung zwischen den zwei oder mehr Eigenschaften des Datenpunkts an. Hinweis: Sie können Strings nur zusammenfügen (+); Sie können den Subtraktionsoperator (-) nicht verwenden. |
? Operator in der ReadCnsDescription-Methode
In der ReadCnsDescription-Methode kann das Fragezeichen (?) als Teil der Datenpunktbezeichnung verwendet werden. Wenn mindestens eine Bezeichnung mit einem Fragezeichen endet, ist das Element verborgen, wenn ein Datenpunkt, der von der aktuellen Read-Methode referenziert wird, nicht existiert. Siehe letztes Beispiel in folgender Tabelle.
? in der Methode ReadCnsDescription | |
Ausdruck | Methode Result |
ReadCnsDescription("System1.LogicalView:Logical.Site'AS01.B.Ahu10.FanSu;?-1") | Die aktuelle Beschreibung des Datenpunkts, wenn er existiert. 1 - wenn der Datenpunkt nicht existiert. |
ReadCnsDescription ("System1.LogicalView:Logical.Site'AS01.B.Ahu10.FanSu;?") | Die aktuelle Beschreibung des Datenpunkts, wenn er existiert. Das Element wird im Zeichenbereich verborgen, wenn der Datenpunkt nicht existiert. |
ReadCnsDescription ("{*dp1}?{*dp2}?99") | Ausdruck in einem Symbol: Gibt die Beschreibung von Datenpunkt 1 oder Datenpunkt 2 zurück. 99 zeigt an, wenn weder der Datenpunkt noch die Eigenschaft existiert. |
ReadCnsDescription("xyz?dp1") + Read("xyz?abc?4") | Die Beschreibung von Datenpunkt 1 verkettet mit dem Read-Ergebnis. |
ReadCnsDescription("dp1?") + Read("xyz") | Null. Das Element wird verborgen, auch wenn Datenpunkt 2 existiert. |
Trace-Methode
Der Channel Graphic.Scripting muss im Trace-Viewer aktiviert sein, damit die Trace-Methode funktioniert. Weitere Informationen zum Aktivieren eines Trace-Channels finden Sie im Abschnitt Hilfe des Trace-Viewers.
Trace-Methode | |
Ausdruck | Resultat |
Var x = 1 +2; Trace("Wert ist" + x); | 3 und die Zeichenkette Wert ist 3 werden unter Nachrichtentext im Trace-Viewer protokolliert. |
Geläufige JavaScript-Beispiele
Die Tabelle unten enthält geläufige JavaScript-Beispiele. Beachten Sie, dass "//" nicht Teil der Syntax ist. In JavaScript werden Kommentare mit "//" gekennzeichnet.
Geläufige JavaScript-Beispiele: | |
Ausdruck | Resultat |
| 3 |
| 15 |
| 2 |
| 1.5 |
| 6 |
| 2 |
| 3 |
| 1 |
| "B.3" |
Typkonvertierung
Die Typkonvertierung | |
Ausdruck | Resultat |
| True. Speichern unter: 7 > (2*3) |
| 3, weil True in 1 konvertiert wird |
Geschweifte Klammern und Ersetzungen
Geschweifte Klammern sind für Ersetzungen reserviert, und die Ersetzungen werden aufgelöst, bevor das Skript evaluiert wird. Daher werden, wenn eine geschweifte Klammer Teil des Skripts ist, zwei geschweifte Klammern verwendet.
Geschweifte Klammern/Ersetzungen | |
Ausdruck | Resultat |
| 3 |
| Ab |
| 3 und die Meldung |
Grafikeditor - Gegenüberstellung von Skript und Referenz
Die Ausführung eines Skripts ist im Allgemeinen langsamer als die Auswertung eines Referenzausdrucks. Versuchen Sie, die Nutzung von Skripts nach Möglichkeit einzuschränken.
Empfehlungen für Systemspezialisten:
- Verwenden Sie Skripts für ein Symbol in einer Grafik. Wenn ein Symbol, inklusive aller verschachtelten Symbole, mehr als 5 Mal in einer Grafik angezeigt wird, sollte allerdings kein Skript genutzt werden.
- Verwenden Sie Skripts, um Elemente aus einem Symbol zu entfernen.
- Verwenden Sie Skripts, um die Anzahl der Platzhalter, Evaluationen oder Bedingungen zu reduzieren.
- Beschränken Sie die Anzahl der Read()-Aufrufe.
- Beschränken Sie die Anzahl der if- oder while-Statements. Skripte sollten nicht komplex sein.
- Wenn eine Aufgabe mit einem Referenzausdruck ausgeführt werden kann, sollten Sie diesen anstelle eines Skriptausdrucks verwenden. Siehe auch das Beispiel für die Gegenüberstellung von Referenz und Skript.
Beispiel für die Gegenüberstellung von Skript und Referenz
In diesem Beispiel ist das Ziel, das Element in der Grafik zu verbergen, wenn der Wert eines bestimmten Datenpunkts (dp1) grösser als 25 ist. Die Elementeigenschaft Sichtbar empfängt die Auswertung des Ausdrucks, und abhängig vom Wert des Datenpunkts ist das Element in der Grafik sichtbar oder unsichtbar.
Im ersten Beispiel wird ein Skriptausdruck für dieses Szenario dargestellt.

Unten sehen Sie die gleiche Evaluation, bei der stattdessen ein einfacher Referenzausdruck verwendet wurde.

In diesem Beispiel ist der Referenzausdruck effizienter als der Skriptausdruck.
Grafikeditor –Skript-Timeout
Alle Skripts im gleichen Systemmanager werden nacheinander ausgeführt. Sie können daher andere Grafiken, die ebenfalls Skripts enthalten, verlangsamen. Um zu verhindern, dass Skripts verzögert oder durch Skripts in anderen Grafiken blockiert werden, hat jedes Skript eine maximale Ausführungszeit von 4 Sekunden. Danach wird das Skript gestoppt und gibt wie folgt einen Nullwert zurück:
- Textelementanzeige:
#COM
- Traceanzeige:
WARNUNG
Skript-Szenario: Farbe des Grundrisses ändern
Sie können Bereiche im Grundriss erstellen, deren Farbe sich abhängig von der Abweichung der Bereichstemperatur vom Sollwert ändert. Hierzu zeichnen Sie ein Polygon-, Rechteck- oder Pfad-Element auf der Grundrissgrafik. Die in der Eigenschaft Füllfarbe angegebene Elementfarbe bestimmt die Farbe des Raums basierend auf der Temperatur. Die Änderungen der Füllfarbe stellen einen Verlauf von blau (zu kalt) über weiss (genau richtig) bis rot (zu warm) dar, jeweils bezogen auf den Sollwert.
Die folgenden Beispiele veranschaulichen die Verwendung der Skriptfunktion im Evaluationseditor, um einen Grundriss mit Farbverlauf für die gemessene Temperatur zu erstellen. Um die Verwendung von Skripts mit Eigenschaftsevaluationen vollumfänglich darzustellen, werden mehrere Beispiele angeführt. Beispiel 1: Die einfachste Evaluation unter den drei Beispielen ist die empfohlene Methode für die Verwendung eines Skripts in diesem Szenario.
Die folgenden Beispiele veranschaulichen die Verwendung der Skriptfunktion im Evaluationseditor, um einen Grundriss mit Farbverlauf für die gemessene Temperatur zu erstellen. Um die Verwendung von Skripts mit Eigenschaftsevaluationen vollumfänglich darzustellen, werden mehrere Beispiele angeführt. Beispiel 1: Die einfachste Evaluation unter den drei Beispielen ist die empfohlene Methode für die Verwendung eines Skripts in diesem Szenario.
Beispiel 1 für Skripts (empfohlen)
Dies ist die gradlinigste und einfachste Art, ein Skript in einer Evaluation zu nutzen, um eine wechselnde Füllfarbe für ein Element anzugeben. Es wird ein diskreter Evaluationstyp mit Bedingungen verwendet. Zudem wird ein Skript mit zwei Read()-Methoden genutzt. Das Skript liest die Objektreferenz für die tatsächliche Temperatur und subtrahiert den Wert für die Sollwert-Objektreferenz. Der Wert wird durch die Evaluation untersucht. Abhängig vom Wert wird die entsprechende Bedingung ausgewählt und die Füllfarbe geändert.

Beispiel 2 für Skripts
In diesem Beispiel wird ebenfalls der Evaluationstyp Diskret mit Bedingungen verwendet. Das Skript deklariert und verwendet jedoch Platzhaltervariablen, um zu bestimmen, welche Bedingung auf die Füllfarbe angewendet wird.

|
|
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
Beispiel 3 für Skripts
Dieses Beispiel zeigt eine etwas komplexere Nutzung des Skripts für das ursprüngliche Szenario. Hierin wird eine einfache Evaluation verwendet. Im Gegensatz zu den ersten beiden Beispielen werden die Felder für Bedingung in diesem Beispiel nicht verwendet. Stattdessen wird mithilfe des Skripts ein hexadezimaler Farbwert für die Füllfarbe abhängig vom Temperaturunterschied im Raum erzeugt.

|
|
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
| |
| |
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
Verwandte Themen
Weitere Informationen zum Arbeitsbereich finden Sie unter Evaluationseditor-Ansicht.
Informationen zu verknüpften Verfahren finden Sie unter Evaluationen definieren.
Eine alternative Vorgehensweise zum Ändern der Grundrissfarbe finden Sie unter Farbe von Elementen basierend auf Alarmbedingungen ändern.