Zum Hauptinhalt springen
Version: 5.6

Editor

Script-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.
warnung

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.All protokolliert 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.