|
<< 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