Skip to main content

Simple-Script-Transferobjekt

Mit dem Simple-Script-Transferobjekt führen Sie eine einzelne C#-Methode direkt im Flow aus – für kleine Umrechnungen, Berechnungen und Textformatierungen. Der Skriptcode gehört zum Transferobjekt selbst: Beim Kopieren des Transferobjekts wird das Skript mitkopiert, eine zentrale Skriptverwaltung gibt es hier nicht. Für vollständige C#-Skripte mit Assemblyreferenzen sowie OPC- und Variablenzugriff nutzen Sie das Advanced-C#-Scripting-Plug-in. Das Simple-Script-Transferobjekt gehört zu den Basisfunktionen des OPC Routers und benötigt keine Plug-in-Lizenz; das Advanced-C#-Scripting-Plug-in ist lizenzpflichtig.

Sie finden das Transferobjekt in der Toolbox in der Gruppe „Tools & ETL“. Erstellen Sie es innerhalb des Flows wie beschrieben.

Dialog des Simple-Script-Transferobjekts mit Eingangs-Items und Code-Editor

Ein- und Ausgänge​

Auf den Registerkarten „Eingänge“ und „Ausgänge“ legen Sie die Items des Transferobjekts an. Jeder Eingang wird vor der Skriptausführung mit dem verbundenen Wert gefüllt und steht im Skript als typisierte Eigenschaft zur Verfügung. Jeder Ausgang ist ebenfalls eine typisierte Eigenschaft, deren Wert nach der Ausführung als Datenquelle im Flow bereitsteht. Weist das Skript einem Ausgang keinen Wert zu, liefert dieser den Standardwert seines Typs (z. B. 0, "" oder null).

EigenschaftBeschreibung
NameName des Items. Er wird zum Eigenschaftsnamen im Skript und muss daher ein gültiger C#-Bezeichner sein (kein C#-Schlüsselwort; einige Namen wie System, Execute und TransferCancellationToken sind reserviert).
TypDatentyp des Items: Boolean, Byte, String, Char, Int16, Int32, Int64, UInt16, UInt32, UInt64, Float32, Float64, DateTime oder Object. Eingangswerte werden vor der Ausführung in diesen Typ konvertiert; bei „Object“ entfällt die Konvertierung.
ArrayLegt fest, ob das Item ein Array des gewählten Typs ist.

Skriptcode​

In den Code-Editor schreiben Sie den Rumpf einer einzelnen C#-Methode (C#-10-Syntax), zum Beispiel:

Result = A + B;

Folgende Namespaces sind ohne using-Direktive nutzbar: System, System.Collections.Generic, System.Globalization, System.Linq, System.Text, System.Text.RegularExpressions.

Der Funktionsumfang ist bewusst auf eine Methode beschränkt: Eigene using-Direktiven, Assembly-Verweise, Namespace-, Typ- und Member-Deklarationen, Attribute sowie goto sind nicht verfügbar und werden mit einer Fehlermeldung abgelehnt. Lokale Variablen und lokale Funktionen können Sie verwenden.

Über die Schaltfläche „Code prüfen“ unten links im Dialog kompilieren Sie das Skript testweise. Fehler werden mit Zeile und Spalte in einer Tabelle unter dem Editor aufgelistet.

Kompiliert das Skript, prüft der OPC Router zusätzlich, ob jedem konfigurierten Ausgang im Skript ein Wert zugewiesen wird. Für jeden Ausgang ohne Zuweisung erscheint eine Warnung – ohne Zeilen- und Spaltenangabe, da der Ausgang auf der Registerkarte „Ausgänge“ und nicht im Code definiert ist. Das Prüfergebnis meldet in diesem Fall, dass das Skript mit Warnungen kompiliert. Gezählt wird jede Zuweisung an beliebiger Stelle des Skripts, auch in einem Zweig, der zur Laufzeit nicht durchlaufen wird. Warnungen verhindern das Übernehmen des Dialogs nicht.

Beispiele​

Die Registerkarte „Beispiele“ enthält fertige Skripte zum Übernehmen, u. a. zu Skalierung, Bedingungen, Schleifen, Textoperationen, Parsen, Konvertierungen, Arrays sowie Datum und Uhrzeit. Ein Doppelklick auf einen Eintrag zeigt eine Vorschau; „In Editor kopieren“ ersetzt nach einer Bestätigung den aktuellen Code und die Ein- und Ausgänge durch das Beispiel.

Registerkarte „Beispiele“ mit geöffneter Vorschau eines Beispielskripts

Ausführung​

Das Skript wird bei jedem Transfer neu ausgeführt; Zustände bleiben zwischen zwei Transfers nicht erhalten. Läuft das Skript in eine Endlosschleife, wird die Ausführung mit der Zeitüberschreitung des Transfers sowie beim Stoppen des Plug-ins oder des Dienstes abgebrochen.