Editor
Neben standardmäßigen Bedienfunktionen (Kopieren, Einfügen, Ausschneiden, Rückgängig, Speichern) bietet der Editor einige besondere Funktionen:
- Menü „Datei – Extern speichern“: Speichert das Skript als XML-Datei mit Kopfdaten, Code und Parameterdefinitionen. Das Öffnen solcher XML-Dateien und damit das Importieren von Skripts ist ebenfalls möglich.
- Menü „Einstellungen – Parameter verwalten“: Hier legen Sie benötigte Parameter und Variablen an (s. Transferobjekt-Skripte und Trigger-Skripte).
- Menü „Einstellungen – Kommentar bearbeiten“: Der Kommentar wird in der Script-Liste des Plug-ins angezeigt.
- Taste „F6“: Kompiliert und testet das Programm auf Fehler.
Im rechten Fensterteil finden Sie eine grafische Programmierhilfe für OPC-Zugriffe, Variablen aus der OPC-Router-Konfiguration, Log-Nachrichten und Parameter.
- Doppelklicken Sie auf einen Eintrag, und die entsprechend vorbereitete Codezeile wird eingefügt. Einträge können als String (in Anführungszeichen) oder als vorbelegte Variable geschrieben werden.
Hinweise zu OPC-Nullwerten
Haben Sie im OPC UA Plug-in den Haken bei „OPC-Nullwerte transferieren“ gesetzt, werden die entsprechenden Werte der Datenpunkte immer transferiert, wenn diese Null sind.
Wenn der Haken nicht gesetzt ist und „Quality“ des Datenpunktes ist nicht „Good“, dann wieder der Wert nicht transferiert und die Verbindung läuft auf Fehler.
Wenn der Haken nicht gesetzt ist und die „Quality“ des Datenpunktes ist „Good“ und der Wert ist Null, dann wird Null transferiert
OpcAccess.Read
Liest den Wert eines OPC-Items aus.
Object <myValue\> = OpcAccess.Read("<ItemPath\>", "<OPCServerName\>")
- Rückgabe: Objekt
- ItemPath: Zugriffspfad und Name des Items
- OPCServerName: Name der OPC-Anbindung im Router-Projekt
OpcAccess.ReadMultiple
Liest den Wert mehrerer OPC-Items aus.
List<string> <lItemNames\> = new List<string> ();
<lItemNames\>.Add ("<ItemPath.ItemName1\>");
<lItemNames\>.Add ("<ItemPath.ItemName2\>");
...
Dictionary<string,object> <MyValues\> = OpcAccess.ReadMultiple(<lItemNames\>, "<OPCServerName\>");
- Rückgabe: Dictionary <string>
- lItemNames: Zugriffspfade und Namen der Items als Liste
- OPCServerName: Name der OPC-Anbindung im Router-Projekt
OpcAccess.Write
Schreibt einen Wert in ein OPC-Item.
OpcAccess.Write ("<ItemPath\>", <objValue\>, "<OPCServerName\>")
- Rückgabe: keine
- ItemPath: Zugriffspfad und Name des Items
- objValue: zu schreibender Wert
- OPCServerName: Name der OPC-Anbindung im Router-Projekt
OpcAccess.WriteMultiple
Schreibt mehrere Werte in mehrere OPC-Items.
Dictionary<string,object> <dicItemsToWrite\> = new Dictionary<string,object> ();
<dicItemsToWrite\>.Add("<ItemPath.ItemName1\>", <Value1\>);
<dicItemsToWrite\>.Add("<ItemPath.ItemName2\>", <Value2\>);
...
OpcAccess.WriteMultiple(<dicItemsToWrite\>, "<OPCServerName\>")
- Rückgabe: keine
- dicItemsToWrite: Dictionary mit Items und Werten
- OPCServerName: Name der OPC-Anbindung im Router-Projekt
OpcAccess.Browse
Bietet die Möglichkeit für OPC DA- und UA-Anbindungen einen Browse (Objektsuche) durchzuführen.
ItemPath: Zugriffspfad und Name des Items
ServerName: Name der OPC-Anbindung im Router-Projekt
Verschiedene Abfragen stehen Ihnen zur Verfügung:
OpcAccess.Browse(ItemPath, ServerName).Select(e => e.DisplayName).ToArray()
- Rückgabe: Gibt die Namen der Tags von diesem OPC Pfad an.
OpcAccess.Browse(ItemPath, ServerName).Select(e => e.NodeKind.ToString()).ToArray()
- Rückgabe: Gibt den Typen der Tags von diesem OPC Pfad zurück.
OpcAccess.Browse(ItemPath, ServerName).Select(e => e.Identifier).ToArray()
- Rückgabe: Gibt den Namen der Tags mit vollständigem Pfad zurück.
OpcAccess.Browse(ItemPath, ServerName).Select(e => e.HasChildren).ToArray()
- Rückgabe: Gibt zurück, ob die Tags noch Unterobjekte (Childs) besitzen.
Wichtig: Um OPC Objekte zu suchen muss für die Usings „Using System.Linq;“ sowie der Assemblyverweis „System.Core.dll“ angegeben werden.
VariablesAccess.Read
Liest den Wert einer Variablen des OPC-Routerprojekts aus. Gemeint sind hier nur Variablen, die über das Variablen-Plug-in angelegt wurden, also keine Platzhalter in Templates, Mail-Objekten o. ä. Wenn die Variable nicht existiert, wird NULL zurückgegeben.
Object <myValue\> = VariablesAccess.Read("<VariableName\>")
- Rückgabe: Objekt
- VariableName: Variablen-Name im OPC-Router-Projekt
VariablesAccess.Write
Weist einer Variablen des OPC-Routerprojekts einen Wert zu. Gemeint sind hier nur Variablen, die über das Variablen-Plug-in angelegt wurden, also keine Platzhalter in Templates, Mail-Objekten o. ä. Wenn die Variable nicht existiert, wird sie neu angelegt.
VariablesAccess.Write("<VariableName\>", Value)
- Rückgabe: keine
- VariableName: Variablen-Name im OPC-Router-Projekt
- Value: Wert, der zugewiesen wird, Object
Log
Schreibt eine Nachricht in die Logdatei
Log("<strMessage\>", MessageType.<LogLevel\>)
- Rückgabe: keine
- strMessage: zu schreibende Nachricht
- LogLevel: zu schreibender Log-Level. Wenn der entsprechende Log-Level deaktiviert ist, wird auch nicht aufgezeichnet.
MessageType.All
protokolliert in jedem Fall, unabhängig von der Router-Konfiguration.