Script Hook Manager

Überblick

Der Scripthook-Verwalter stellt eine Schnittstelle für verschiedene Befehle und Ereignisse bereit, die während der Ausführung von EcoStruxure Machine Expert ausgeführt werden können. Die Befehlsausführung oder Ereigniserkennung kann die Ausführung eines spezifischen Python-Skripts auslösen. Sie können Ihr eigenes Python-Skript programmieren oder eine der mit EcoStruxure Machine Expert bereitgestellten Python-Vorlagen nutzen.

Die AutomaticProjectArchiveCreation.py-Vorlage beispielsweise stellt ein Python-Skript zur Erstellung eines Projektarchivs bereit. Wenn mehrere Benutzer gemeinsam an einem Projekt arbeiten, kann dadurch sichergestellt werden, dass ein Projektarchiv erstellt wird, sobald das Projekt von einer beliebigen Person geändert wird. So verfügt jeder Benutzer über den neuesten Status des Projekts, wenn das neueste Projektarchiv verwendet wird.

Weitere Informationen finden Sie in den Script Engine User Guides, die mit dem Teil zur Software - Programmierung der Online-Hilfe von EcoStruxure Machine Expert bereitgestellt werden:

  • CODESYS Script Engine - User Guide

  • EcoStruxure Machine Expert Script Engine - User Guide

Erstellen eines Scripthook-Verwalter-Objekts

Gehen Sie vor wie folgt, um ein Scripthook-Verwalter-Objekt zu erstellen:

Schritt

Aktion

Kommentar

1

Klicken Sie mit der rechten Maustaste auf den Knoten Global in der Anwendungsbaumstruktur und führen Sie den Befehl Objekt hinzufügen > Scripthook-Verwalter aus.

Ergebnis: Das Dialogfeld Scripthook-Verwalter hinzufügen wird geöffnet.

2

Wählen Sie die geeignete Option für die Erstellung eines Python-Skripts aus.

  • Wählen Sie die Option Neues Skript aus, um ein vollständig neues Python-Skript in Logic Builder zu erstellen.

  • Wählen Sie die Option Ausgehend von Vorlage sowie eine Python-Vorlage aus, die mit EcoStruxure Machine Expert als Grundlage für die Erstellung eines Python-Skripts bereitgestellt wird. Die von den verschiedenen Vorlagen gedeckten Anwendungsfälle werden in den Kommentaren in den Skripten selbst beschrieben.

  • Wählen Sie die Option Ausgehend von vorhandenem Skript aus, um eine Python-Skriptdatei zu öffnen, die Sie in einem anderen Tool programmiert haben. Klicken Sie auf die Schaltfläche Auswählen, um das Dialogfeld Datei öffnen aufzurufen, in dem Sie nach der .py-Datei suchen können.

3

Klicken Sie auf die Schaltfläche Hinzufügen.

Ergebnisse:

  • Ein Scripthook-Verwalter-Knoten und ein Python-Skript-Knoten werden als Unterknoten des Knotens Global in der Anwendungsbaumstruktur hinzugefügt.

  • Der Scripthook-Verwalter-Editor wird geöffnet.

Editor Scripthook-Verwalter

Im Scripthook-Verwalter-Editor werden die Befehle und Ereignisse aufgelistet, die zur Auslösung der Ausführung der Python-Skripte am linken Rand verfügbar sind.

  • Um einen Befehl oder ein Ereignis zu aktivieren, wählen Sie das betreffende Element aus und klicken Sie auf die Schaltfläche Hook aktivieren .

  • Um einen Befehl oder ein Ereignis zu deaktivieren, wählen Sie das betreffende Element aus und klicken Sie auf die Schaltfläche Hook deaktivieren .

Diese Statuseinstellungen werden im Projekt gespeichert. Wenn Sie beispielsweise ein Projekt öffnen, das zuvor mit aktiviertem BeforeProjectSave-Hook gespeichert wurde, bleibt dieser Hook aktiv und wird ausgelöst, sobald das Ereignis bzw. der Befehl gültig wird.

Am rechten Rand werden weitere Informationen zum jeweils ausgewählten Befehl bzw. Ereignis angezeigt:

Der Bereich Deklarationssyntax enthält die Signatur der Methode, die vom System aufgerufen wird, nachdem das Ereignis bzw. der Befehl von EcoStruxure Machine Expert ausgeführt wurde. Klicken Sie auf die Schaltfläche Code kopieren, um den Code in Ihren Python-Code im Python-Skript-Editor einzufügen und diese Methode, um die Python-Befehle zu erweitern, die ausgeführt werden sollen.

Über die Schaltfläche Funktion umbenennen können Sie den Namen der Python-Funktion in einem separaten Dialogfeld ändern. Nachdem Sie einen anderen Namen gespeichert haben, müssen Sie sicherstellen, dass Sie genau dieselbe Zeichenfolge des geänderten Namens in Ihrem Python-Code verwenden.

Im Bereich Parameter werden die Parameter aufgeführt, die in der Python-Methode bei deren Ausführung verfügbar sind.

Editor Python-Skript

Dank des Python-Skript-Editors können Sie Ihr Python-Skript direkt in Logic Builder programmieren. Der Editor unterstützt alle Python-Programmierfunktionen, auch wenn die Autocomplete-Funktion (IntelliSense) nicht alle verfügbaren Python-Schlüsselwörter für die Auswahl bereitstellt.

Je nach der von Ihnen im Dialogfeld Scripthook-Verwalter hinzufügen vorgenommenen Auswahl stehen Ihnen die folgenden Optionen zur Erstellung Ihres Python-Skripts im Python-Skript-Editor zur Verfügung:

  • Komplette Neuerstellung: Sie beginnen mit einem leeren Python-Skript-Editor, geben Ihren Code ein und verwenden Code-Snippets, die Sie aus dem Bereich Deklarationssyntax im Scripthook-Verwalter-Editor kopieren können.

  • Erstellung ausgehend von einer Vorlage: Sie verwenden das von der ausgewählten Vorlage bereitgestellte Skript als Ausgangsbasis und erweitern es mit Ihrem spezifischen Python-Code.

  • Sie importieren das von Ihnen in einem anderen Tool programmierte Python-Skript.

HINWEIS: Klicken Sie nach der Programmierung Ihres Python-Skripts auf die Schaltfläche Skriptbereich aktualisieren , um das Skript zu synchronisieren und die Änderungen anzuwenden. Wenn Sie den Python-Skript-Editor ohne Synchronisation verlassen, werden die Änderungen gespeichert und sind damit weiterhin im Editor verfügbar, sie werden jedoch nicht angewendet. Stattdessen wird nach wie vor das vorhergehende Skript ohne Änderungen ausgeführt. Wenn Sie ein anderes Projekt laden oder ein neues Projekt erstellen, ist ein unterschiedliches Projekt - bzw. überhaupt kein Projekt - verfügbar.

Über das Verfahren Skriptbereich aktualisieren wird der Python-Code bestätigt. Wenn Fehler erkannt werden, werden sie in der Ansicht Meldungen SoMMenu/index.htm angezeigt und der Code wird nicht ausgeführt.

Ignorieren mehrerer Ereignisse bei der Anmeldung/Abmeldung

HINWEIS: Aufgrund technischer Einschränkungen kann das Ereignis AfterDeviceLogin und/oder AfterDeviceLogout mehrmals ausgelöst werden.

Ignorieren Sie beispielsweise die mehrfache Ausführung des AfterDeviceLogin-Ereignisses mithilfe eines Flag im Skript:

def after_device_login():
    if session_store.get("loginHandled", False) == False:
        print("after_device_login")
        session_store.set("loginHandled", True)
    pass

def after_device_logout():
    print("after_device_logout")
    session_store.set("loginHandled", False)
    pass

Scripthook-Meldungen in der Ansicht Meldungen

Die Texte, die Sie in Ihrem Python-Code mit dem Befehl print programmieren, werden im Bereich Scripthooks der Ansicht Meldungen SoMMenu/index.htm angezeigt.