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.
OpcAccess.Reset
Setzt den OPCAccess zurück sodass er beim nächsten Aufruf neu inizialisiert wird.
OpcAccess.Reset()
- Rückgabe: keine
- Übergabeparameter: keine
OpcAccess.Decode
Dekodiert einen Wert von einem OPC UA Server und gibt ein .NET Objekt zurück, welches alle möglichen Variablentypen enthalten kann.
object <myValue\> = OpcAccess.Decode("<OPCServerName\>", <objValue\>)
- Rückgabe: Objekt
- OPCServerName: Name des OPC-Servers von dem der Wert decodiert werden soll.
- objValue: Der zu decodierende Wert.
Der Rückgabewert kann alle nativen Datentypen beinhalten. Zudem können die folgenden Funktionen im .NET Object enthalten sein.
IUaStructureTypeDescription <myValue\> = TypeDescription
- Rückgabe: Die Typbeschreibung vom Typ IUaStructureTypeDescription.
- Bei dieser Funktion handelt es sich um eine Property. Daher hat sie keine Übergabeparameter und keine Klammern.
CopyTo(<dest\>)
- Rückgabe: keine
- dest: Destination vom Typ IEncodeable
CopyValuesFrom(<objValue\>)
- Rückgabe: keine
- objValue: Quelle der zu kopierenden Werte.
T <myValue\> = GetValue<T>("<property\>")
- Rückgabe: Einen Wert eines generischen Typen.
- property: Die auszulesende Property.
bool <myResult\> = TryGetValue("<field\>", out <objVallue\>)
- Rückgabe: Das Ergebnis ob der entsprechende Wert gefunden werden konnte.
- field: Der Name der auszulesenden Variablen.
- objValue: Der eigentliche Wert, der über den out Parameter an den Nutzer zurückgegeben wird.
WriteField<T>("<property\>", <genericValue\>);
- Rückgabe: keine
- property: Variablenname, der zu beschreiben ist.
- genericValue: Wert eines generischen Typs, der in die Variable geschrieben werden soll.
bool <myResult\> = TryGetFieldInfo("<field\>", out <fieldInfo\>)
- Rückgabe: Das Ergebnis, ob die entsprechende Variableninfromation gefunden wurde.
- field: Der Name der auszulesenden Variable.
- fieldInfo: Die Variableninformation vom Typ IFieldType, die über den out Parameter an den Nutzer zurückgegeben wird.
IEnumerable<KeyValuePair<string, object>> <myValues\> = GetValues()
- Rückgabe: Alle Werte, gespeichert in einem IEnumerable vom Typ KeyValuePair, dass die Typen String und object beinhaltet.
- Übergabeparameter: keine.
ExpandedNodeId <myTypeId\> = TypeId
- Rückgabe: Die Node-ID des zu codierenden Typen.
- Bei dieser Funktion handelt es sich um eine Property. Daher hat sie keine Übergabeparameter und keine Klammern.
ExpandedNodeId <myBinaryEncodingId\> = BinaryEncodingId
- Rückgabe: Die Node-ID des zu codierenden Binärtyps.
- Bei dieser Funktion handelt es sich um eine Property. Daher hat sie keine Übergabeparameter und keine Klammern.
ExpandedNodeId <myXmlEncodingId\> = XmlEncodingId
- Rückgabe: Die Node-ID des zu codierenden XML-Datentyps.
- Bei dieser Funktion handelt es sich um eine Property. Daher hat sie keine Übergabeparameter und keine Klammern.
VariablesAccess.Read
Liest den Wert einer globalen 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.ReadLocal
Liest den Wert einer lokalen 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.ReadLocal("<VariableName\>", "<connectionId\>")
- Rückgabe: Objekt
- VariableName: Variablen-Name im OPC-Router-Projekt
- connectionId: Id der Verbindung aus der die Variable gelesen werden soll.
VariablesAccess.Write
Weist einer globalen 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
VariablesAccess.WriteLocal
Weist einer lokalen 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.WriteLocal("<VariableName\>", Value, "<connectionId\>")
- Rückgabe: keine
- VariableName: Variablen-Name im OPC-Router-Projekt
- Value: Wert, der zugewiesen wird, Object
- connectionId: Id der Verbindung aus der die Variable gelesen werden soll.
ConnectionParameters.GetConnectionName
Liefert den Namen der aktuellen Verbindung.
string "<myConnectionName\>" = ConnectionParameters.GetConnectionName()
- Rückgabe: Der Name der aktuellen Verbindung.
- Übergabeparameter: keine
ConnectionParameters.GetConnectionId
Liefert die Verbindungs-ID der aktuelln Verbindung.
string "<myConnectionId\>" = ConnectionParameters.GetConnectionId()
- Rückgabe: Die ID der aktuellen Verbindung.
- Übergabeparameter: keine
PlugInAccess.GetStatus
Liefert den aktuellen Status eines Plug-Ins. Das Plug-In kann anhand einer ID oder eines Namens und optional eines Typens identifiziert werden.
PlugInStatus <myStatus\> = PlugInAccess.GetStatus("<plugInId\>")
PlugInStatus <myStatus\> = PlugInAccess.GetStatus("<plugInName\>", "<plugInType\>")
- Rückgabe: Der aktuelle Status des ausgewählten Plug-Ins vom Typen PlugInStatus.
- plugInId: ID des gewünschten Plug-Ins zu dessen Identifizierung.
- plugInName: Name des gewünschten Plug-Ins zu dessen Identifizierung.
- plugInType: Typ des gewünschten Plug-Ins zu dessen Identifizierung.
Die möglichen Status aus dem Typen PlugInStatus sind folgende:
- Unknown = 0
- Stopped = 1
- Starting = 2
- Running = 3
- Stopping = 4
- Faulted = 5
- NoLicense = 6
PlugInAccess.RequestRestart
Fordert ein Plug-In auf neu zu starten. Das Plug-In kann anhand einer ID oder eines Namens und optional eines Typens identifiziert werden.
PlugInAccess.RequestRestart("<plugInId\>")
PlugInAccess.RequestRestart("<plugInName\>", "<plugInType\>")
- Rückgabe: keine
- plugInId: ID des gewünschten Plug-Ins zu dessen Identifizierung.
- plugInName: Name des gewünschten Plug-Ins zu dessen Identifizierung.
- plugInType: Typ des gewünschten Plug-Ins zu dessen Identifizierung.
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.Allprotokolliert in jedem Fall, unabhängig von der Router-Konfiguration.
AbortTransfer
Bricht einen Datentransfer mit einer übergebenen Meldung ab.
AbortTransfer(<myMessage\>)
- Rückgabe: keine
- myMessage: Abbruchmitteilung für den unterbrochenen Datentransfer.