Script IDE (LUA / Python)

<< Click to Display Table of Contents >>

Navigation:  Komponenten > Steuerung, Logik & Zeit >

Script IDE (LUA / Python)

Einführung

Diese Komponente dient zur Umsetzung individueller Abläufe und kundenspezifischer Logiken innerhalb von EisBaer. Die Anzahl der Ein- und Ausgänge kann dabei frei definiert und im Script verarbeitet werden.
 
Als Script-Sprache stehen LUA und Python zur Verfügung.

Einsatz der Script-Sprachen

LUA eignet sich besonders für zeitkritische, ereignisgesteuerte oder zyklische Steuerungslogiken innerhalb von EisBaer.
Python eignet sich besonders für komplexere Berechnungen, strukturierte Datenverarbeitung und Anwender mit bestehender Python-Erfahrung.
 
Die Auswahl der Script-Sprache hat keinen Einfluss auf die verfügbaren Ein- und Ausgänge.

Hinweis für Entwickler

Diese Komponente richtet sich ausschließlich an Anwender mit fundierten Kenntnissen in LUA oder Python.
Für individuell erstellte Scripte wird kein kostenfreier Support angeboten.
Fehlerhafte oder ineffiziente Scripte können zu Funktionsstörungen oder Systemabstürzen führen.

Zugriff auf Arrays

Arrays werden in EisBaer im Kanaleditor über die Einstellung „Anzahl Elemente (Array)“ definiert.
Diese EisBaer-Arrays sind immer 0-basiert und stehen dem Script unabhängig von der verwendeten Sprache zur Verfügung.

Beispiel – Kanaldefinition

EINGÄNGE:
Input[0] … Input[7]
 
AUSGÄNGE:
Output[0] … Output[3]

Python Interpreter – Installation und Initialisierung

Für die Verwendung von Python ist eine separate Python-Installation erforderlich.
 
EisBaer 3 benötigt Python 32-bit.
EisBaer 4 benötigt Python 64-bit.
 
Beide Versionen können parallel installiert werden, müssen jedoch in unterschiedlichen Verzeichnissen liegen.

Pfadkonfiguration:
Base Path: Root-Verzeichnis der Python-Installation
Home Dir: Lib\site-packages
DLL Path: Root-Verzeichnis der Python-Installation (pythonXY.dll)

Wichtiger Hinweis zur Initialisierung:
Der erste Start der Simulation aus dem Script-Editor kann ca. 30–45 Sekunden dauern.
Während dieser Zeit darf der Simulationsmodus nicht ein- oder ausgeschaltet werden.
Es wird empfohlen, den Diagnose-Ausgang mit einem Protokollfenster zu verbinden, um den Abschluss der Initialisierung zu erkennen.

 

Wichtig bei Python:

Für die Verwendung von muss das PythonSetup als 32bit Version (EisBaer3) oder 64bit Version (EisBaer4) installiert werden.

"Install Now" auswählen

Am Ende der Installation erscheint die Abfrage, ob die Zeichen-Limitierung deaktiviert werden soll (Disable path lenght limit). Dies muss deaktiviert werden.

Nach der Installation muss im bei der Script Interpreter Komponente im Parameter Sprachinterpreter "Auto Search" ausgeführt werden. Dadurch werden alle notwendigen Pfadeinstellungen gesetzt.

 

Datenpunkte der Komponente

Name

Typ

Funktion

Diagnose [Text]

Ausgang

Achtung: Diagnose oder Debug - Ausgänge sind nur für den Fehlerfall vorgesehen. Bitte nur mit Rücksprache mit dem Supportteam verwenden! Diese können bei Verwendung die Leistung des Dienstes erheblich beeinträchtigen.

Dynamisch

Ordner

In diesem Ordner werden die editierten Ein und Ausgänge als Datenpunkte bereitgestellt.

Erweiterte Diagnose

Eingang

Die Ausgabe der Diagnose kann hier mit einem An-Wert erweitert werden.

Prozessierungsverzögerung [ms]

Bidirektional

Das Ausführen des Script kann zur Laufzeit verzögert werden.

Script beenden

Ausgang

Eine AN-Flanke wird ausgegeben, wenn das Script abgearbeitet wurde.

Script Fehler

Ausgang

Ein AN-Signal wird ausgegeben, wenn das Script Fehler aufweist, sonst ein AUS.

Script läuft

Ausgang

Ein AN-Signal wird ausgegeben, wenn das Script ausgeführt wird, sonst ein AUS.

Script Prozessierungsdauer [ms]

Ausgang

Gibt die Zeit der Abarbeitung des Scripts in Millisekunden aus.

Script-Code aktualisieren

Eingang

Mit einem beliebigen Signal wird der Script-Code aus der übergeordneten LUA aktualisiert.

Script-Code Ausgang

Ausgang

Der eingetragene Script-Code kann an eine andere LUA übergeben werden.

Script-Code Eingang

Eingang

Es kann der Script-Code einer übergeordneten LUA empfangen werden.

Treiber An/Aus

Bidirektional

Ein- oder Ausschalten des Treibers.

Zyklischer Trigger Intervall [s]

Bidirektional

Das zyklische Ausführen des Scripts kann zur Laufzeit eingestellt werden.

 

 

Eigenschaften der Komponente

Name

Standard

Funktion

Sprachinterpreter

Lua

Option für die Umschaltung zwischen LUA und Python als Script-Sprache. Für die Verwendung von Python muss dies auch als 32bit Version (EisBaer3) oder 64bit Version (EisBaer4) installiert sein. Am Ende der Installation erscheint die Abfrage, ob die Zeichen-Limitierung deaktiviert werden soll. Dies soll deaktiviert werden.

Vordefinierte Module

...Custom

Nur für LUA! Falls vorhanden, können hier vorgefertigte Scripte geladen werden. Hierfür muss der komplette Datensatz (Script (.lua), Kanalliste (.luaChannels), falls benötigt Verschlüsselungsdatei (.luaPasswd) und eventuell Icon (.png)) im Verzeichnis C:\Program Files (x86)\Alexander Maier GmbH\EisBär SCADA 3.0\Devices abliegen. Der Dateinamen muss für alle Teile gleich sein.

Kanäle

0

Im Kanaleditor können die Ein- und Ausgänge erstellt werden. Auch kann hier die Anzahl der Datenpunkte pro Kanal eingestellt werden. Wird eine Anzahl eingegeben, sind die Datenpunkte Teil eines Arrays und werden über den Kanalnamen angesprochen. Der Kanalname kann nur aus Buchstaben [a-z][A-Z], Zahlen [0-9], sowie dem Zeichen Unterstrich [_] bestehen. Andere Zeichen sind nicht erlaubt. Umlaute wie "ä" werden zu "ae" gewandelt.

Script Datei

 

Nur für LUA! Eingabe vom Speicherpfad, falls eine Scriptdatei ausgeführt werden soll. Wird nichts eingetragen wird der Code aus der LUA selbst verwendet.

Script Code Editor

Bytes

Öffnet den Code Editor. siehe auch Erweiterungen

Codeeditor - Schriftgröße

10

Anpassung der Schriftgröße innerhalb des Code Editors.

Codeeditor - Schriftfarbe

Color

Anpassung der Schriftfarbe innerhalb des Code Editors.

Codeeditor - Hintergrund

Color

Anpassung der Hintergrundfarbe innerhalb des Code Editors.

Passwort

 

Hier kann der Zugriff auf den Code-Editor mit einem Passwort geschützt werden.

Trigger

 

Hier kann eingestellt werden, wann der Code ausgeführt werden soll.

Eingänge (ausgewählte) --> Trigger bei Änderung am markierten Eingang

Zyklisch (Intervall) --> Code wird nach der eingestellten Zeit automatisch abgearbeitet.

Eingänge und zyklisch --> Code wird, sowohl bei Änderung am markierten Eingang, als auch nach Zeitablauf getriggert.

Zyklischer Trigger-Intervall [s]

1

Zeit-Einstellung für das zyklische Ausführen des Codes. Hat nur Auswirkungen, wenn unter "Trigger" auch zyklisch ausgewählt wurde.

Prozessierungs-verzögerung [ms]

50

Der Scriptaufruf wird nach Änderung eines Trigger-Eingangs um die angegebene Zeit verzögert.

Trigger während Ausführung verzögern

 

Wenn aktiviert, werden Trigger während der Scriptausführung verzögert und das Script nach Beendigung einmalig getriggert. Hierdurch wird eine mehrfache Ausführung des Scripts vermieden, falls mehrere Trigger-Eingänge gleichzeitig ausgelöst werden.

Script bei Start ausführen

 

Ist diese Option gesetzt, wird das Script bei Systemstart sofort ausgeführt.

Netzwerte bei Start auslesen

 

Netzwerte bei Start auslesen und übernehmen. Defaultwerte nur übernommen, wenn kein Netz am Datenpunkt vorhanden ist.

UTF8 Encoding

 

Nur für LUA! Setzen um strings im UTF8 Format zu verarbeiten.

Treiber An/Aus

 

Ein- oder Ausschalten.

Hinweise zur Verwendung der Trigger-Einstellungen

Die in den Eigenschaften verfügbaren Trigger-Optionen bestimmen, wann und wie oft ein Script ausgeführt wird. Die folgenden Hinweise dienen als Ergänzung zur Tabelle und erklären das Zusammenspiel der Optionen sowie typische Anwendungsfälle.

Ereignisgesteuerte Ausführung

Diese Variante eignet sich für Logiken, die unmittelbar auf Änderungen von Eingängen reagieren sollen.
 
Hinweis:
Bei mehreren gleichzeitig ändernden Eingängen kann es sinnvoll sein, eine kurze Prozessierungsverzögerung zu setzen, damit alle Werte stabil anliegen.

Zyklische Ausführung

Die zyklische Ausführung eignet sich für Logiken, die regelmäßig überprüft oder nachgeführt werden müssen, auch wenn sich keine Eingänge ändern.
 
Hinweis:
Das Zyklusintervall sollte so gewählt werden, dass die Script-Laufzeit deutlich kürzer als das Intervall ist.

Kombination aus Ereignis und Zyklus

Diese Variante ist sinnvoll, wenn auf Ereignisse sofort reagiert werden soll und zusätzlich eine periodische Nachführung erforderlich ist.
 
Hinweis:
Diese Einstellung sollte bewusst eingesetzt werden, da sie die Anzahl der Script-Ausführungen erhöht.

Vermeidung mehrfacher Script-Ausführungen

Bei mehreren Trigger-Eingängen oder schnellen Wertänderungen empfiehlt es sich, Trigger während der laufenden Script-Ausführung zu puffern und das Script nach Abschluss einmalig erneut auszuführen. Dies erhöht die Stabilität und vermeidet unnötige Mehrfachberechnungen.

Initialisierung beim Systemstart

Die Ausführung des Scripts beim Systemstart eignet sich für Initialisierungen, Startwerte oder Berechnungen, die für den laufenden Betrieb erforderlich sind.

Best Practice (Kurzfassung)

- Reine Reaktion auf Änderungen → ereignisgesteuert
- Regelmäßige Prüfungen → zyklisch