Der Adressraum
Die sieben reservierten Wurzeln, unter denen jeder Punkt lebt, wie eine Adresse geschrieben und bereinigt wird, wo ein Punkt endet und ein Element beginnt, was das Filterfeld einengt und die drei Wege, eine Adresse in einem Editor einzugeben.
Jeder Punkt, den ein Ausdruck, ein Skript, eine Verknüpfung im Dashboard oder ein Werkzeug eines Agenten nennen kann, lebt unter einer von sieben reservierten Wurzeln. Ihre eigenen Namen leben immer unter einer Wurzel, sie stoßen also nie mit den Wurzeln selbst zusammen. Die Spalte der Seite Logic zeichnet dieselben Wurzeln, aufgeteilt unter zwei Überschriften, und was der Baum zeigt, ist genau das, was Sie tippen: Die Adresse einer Zeile ist der Text, den ein Ausdruck verwendet.
Die sieben Wurzeln
| Wurzel | Was sie hält | Überschrift in der Spalte | Bearbeitet |
|---|---|---|---|
System |
Vier Diagnosewerte, die die Anwendung über sich selbst veröffentlicht | Von anderen Seiten | Nirgends |
Server |
Vier Diagnosewerte des eingebetteten OPC UA-Servers | Von anderen Seiten | In den Einstellungen |
Connector |
Der laufende Baum aus Treibern, Ordnern, Geräten und Tags | Von anderen Seiten | Auf der Seite Connector |
Variables |
Die Variablen, die Sie hier definieren, in ihren Ordnern | Hier definiert | Hier |
Alarms |
Der laufende Zustand der Alarme, die Sie hier definieren, in ihren Ordnern | Hier definiert | Hier (der Zustand selbst wird nur gelesen) |
Process |
Die Einheiten jedes Modells: Kanäle, Zustand des Laufs, Produktivität, Befehle, Vorbereitung | Von anderen Seiten | Auf der Seite Process |
Assets |
Die Bilder, Icons und Farben der Bibliothek, über ihren Namen adressierbar | Hier definiert, als Wurzel Assets | In den Bereichen von Assets |
Actions und Triggers sind Abschnitte der Spalte, aber keine Wurzeln des Adressraums: Sie werden über ihre Identität angesprochen, nicht über eine Adresse, und tragen keinen laufenden Wert. Die Wurzel Assets gibt es für Ausdrücke und die Auswahl Durchsuchen…; in der Spalte nimmt die Wurzel der Bibliothek Assets ihren Platz ein, der Baum zeigt also nie zwei Wurzeln dieses Namens. Die festen Punkte von System und Server und die Gestalt der Zweige Connector und Process stehen auf Von anderen Seiten.
Wie eine Adresse geschrieben wird
Eine Adresse besteht aus durch Punkte getrennten Segmenten, verwurzelt an einer reservierten Wurzel: Connector.Simulated.Air.CompressedAir.HeaderPressure, Variables.Forno.Setpoint, Alarms.HighLevel, System.Now, Assets.Colors.Red. Angezeigte Namen bleiben freier Text; die Adresse verwendet das bereinigte Segment jedes Namens: Jedes Zeichen, das kein Buchstabe und keine Ziffer ist, wird zu _, und einem Namen, der mit einer Ziffer beginnt, wird ein _ vorangestellt (Forno de teste antwortet auf Forno_de_teste, 3rd zone auf _3rd_zone, ein leerer Name auf _). Segmente sind immer Bezeichner, die Punktform funktioniert also immer; ein Segment darf auch in Klammerform mit einer Zeichenkette geschrieben werden, Variables["Setpoint"], und der Auswerter liest es als dieselbe Adresse.
Wo der Punkt endet und der Zugriff auf ein Element beginnt, hängt von der Wurzel ab. Adressen unter Connector tragen die Ordnerebenen des Geräts zwischen dem Treiber und dem Gerät (eine Modbus RTU-Leitung fügt keine Ebene hinzu), und Variables und Alarms tragen bis zu drei Ordnerebenen vor dem Namen, unter diesen Wurzeln ist der Punkt also das längste Präfix, das auflöst, und was darauf folgt, ist ein Element (.Value, .State()). Assets liegt immer zwei Segmente unter der Wurzel; Process vier bei einem gewöhnlichen Punkt, sechs bei einem zusammenfassenden Punkt der Produktivität und sieben bei einem Ausgabepunkt der Produktivität oder einem Punkt eines Ablaufs. Eine Kette, die kürzer ist, als ihre Wurzel erlaubt, wird als unvollständige Adresse abgelehnt.
Adressen in Ausdrücken und Skripten müssen statisch sein: jedes Segment ein Bezeichner oder eine Zeichenkette, nie ein berechneter Wert. Variables[someName] wird bei der Prüfung abgelehnt, mit "Addresses must be static".
Zusammenstoßende Adressen
Eine Ebene eines Abschnitts ist ein Namensraum aus Segmenten, den die Ordner und die Definitionen dort teilen. Zwei Variablen namens Setpoint in verschiedenen Ordnern sind in Ordnung; eine Variable und ein Ordner, die auf derselben Ebene beide auf Forno führen, sind es nicht, und Pump 1 und Pump_1 nebeneinander ebenso wenig. Die Editoren lehnen einen solchen Namen schon beim Tippen ab und nennen, was auf die Adresse bereits antwortet: "'Pump 1' antwortet bereits auf 'Variables.Pump_1'. In einem Ordner abgelegte Namen müssen auf verschiedene Segmente führen." Die Assets folgen innerhalb jeder Kategorie derselben Regel: Zwei Ihrer Bilder, Icons oder Farben dürfen sich kein Segment teilen, und ein eigenes Icon oder eine eigene Farbe, deren Segment zu einem Eintrag des Systems passt, überschreibt ihn an der Adresse.
Eine Adresse eingeben
Drei Wege, eine Adresse in einem Ausdruck, einer Bedingung oder einem Skript einzugeben:
- Sie tippen. Der Editor vervollständigt die Zeichen einer Adresse: Wurzelnamen bei einem nackten Zeichen (
ConbietetConnectoran), dann die Kinder des bisher getippten Pfades, nach Präfix und ohne Rücksicht auf Groß- und Kleinschreibung getroffen, und die lesbaren Elemente eines Punkts, sobald das Zeichen einen Punkt nennt. Jeder Kandidat ersetzt das ganze Zeichen. - Durchsuchen… öffnet eine Auswahl über dem Baum jeder Wurzel bis auf die Ebene der Elemente, die Wurzel
Assetseingeschlossen. Wählen Sie eine Zeile und drücken Sie Einfügen oder klicken Sie doppelt darauf, um ihre Adresse an der Einfügemarke abzulegen. Der Fuß zeigt den Text, den die gewählte Zeile einfügt, oder "Doppelklicken (oder Einfügen), um es in den Editor zu übernehmen.", solange nichts gewählt ist. - Von einem Punkt kopieren. Einen beliebigen Punkt in der Spalte zu wählen öffnet den Bereich des Punkts, dessen Feld Adresse Text ist, der nur gelesen wird und den Sie markieren und kopieren können, neben dem laufenden Wert, seiner Qualität und seinem Zeitstempel. Der Editor einer Variablen oder eines Alarms zeigt seine eigene Adresse unter dem Feld Name.
Unter einem Punkt führt die Auswahl seine lesbaren Elemente auf (Value, ValueToReal(), State() und so fort). Ein Element ist keine Adresse für sich: Es ist das, was Sie an die Adresse des Punkts anhängen. Ausdrücke führt dieselbe Fläche auf, mit dem, was jedes Element zurückgibt.
Das Filterfeld
Das Feld Filtern… über der Spalte engt den Baum auf die Zeilen ein, deren Name den getippten Text enthält, ohne Rücksicht auf Groß- und Kleinschreibung. Ein Punkt überlebt nur, wenn er passt; ein Ordner überlebt, wenn er passt oder irgendein Nachkomme passt, und klappt zu seinen Treffern auf. Die Abschnitte Actions und Triggers führen nur die Zeilen auf, deren Name passt (ihr eigener Name hält den Abschnitt aufgeführt, aber leer); die Wurzel Assets engt sich auf die Kategorien ein, deren Name passt (Col zu tippen lässt Colors stehen), und kommt ganz, wenn nur ihr eigener Name passt; eine Wurzel des Adressraums, deren eigener Name passt, bleibt aufgeführt und lädt ihren Zweig beim Aufklappen. Elemente sind nie Teil der gefilterten Ansicht, und der Filter gehört allein Ihrem Fenster: Ein anderer Browser an derselben Station behält seinen eigenen.
Was der Adressraum nicht tut
Er veröffentlicht nichts für ein deaktiviertes Gerät, für ein Gerät, dessen Tags im eingebetteten Server nicht aufgebaut sind, und für einen Kanal von Process ohne Bindung (ein solcher Kanal wird aufgeführt, bietet aber keine Elemente an). Namen werden nicht übersetzt: Die Adresse ist der bereinigte Anzeigename, eine Variable, einen Alarm, einen Ordner, ein Gerät, einen Tag oder ein Bild umzubenennen ist also eine Änderung der Adresse, die die Anwendung über das sichere Umbenennen in jedem Verweis umschreibt (Variablen, Geräteordner).