Die Logic Builder Shell verwenden
Die Logic Builder Shell starten
Die LogicBuilderShell.exe befindet sich im Installationsverzeichnis von EcoStruxure Machine Expert.
Die Logic Builder Shell stellt die EcoStruxure Machine Expert-REPL zur Verfügung, die auf IronPython ipy.exe basiert. Dies ist die REPL des IronPython-Standardpakets bei Installation auf einem Computer. Deshalb bietet sie dieselben Funktionen wie Tabulatorergänzung, Debugging-Unterstützung für Python-Skripte usw. Außerdem ermöglicht sie den Zugriff auf die EcoStruxure Machine Expert Python API.
Doppelklicken Sie auf LogicBuilderShell.exe, um die Logic Builder Shell (ohne Argumente) auf einer Konsole zu starten.
Ergebnis: Die Eingabeaufforderung (>>>) wird angezeigt:
Geben Sie an der Eingabeaufforderung (>>>) Ihre Python-Anweisungen ein, und drücken Sie die Eingabetaste, um sie auszuführen.
Die folgende Befehlssequenz ist ein Beispiel zum Öffnen eines Projekts, zum Durchsuchen eines Geräteknotens und zum Ausgeben des Namens:
IronPython 2.7.4 (2.7.4.40) on .NET 4.0.30319.18444 (32-bit)
Type "help", "copyright", "credits" or "license" for more information.
>>> projectName = "C:\\temp\\MyProject.project"
>>> proj = projects.open(projectName)
>>> sercosNode = proj.find("SERCOSIII", True)[0]
>>> print(sercosNode.get_name(False))
SERCOSIII
>>>
Verwendung:
LogicBuilderShell.exe [options] [file.py|- [arguments]]
Die [options] werden in der folgenden Liste der Befehlszeilenargumente aufgeführt.
[arguments] ist ein Platzhalter für Argumente, die an die Skriptdatei weitergegeben werden.
Befehlszeilenargumente der Logic Builder Shell:
|
Befehlszeilenargument |
Beschreibung |
Beispiel |
|---|---|---|
|
-h / --help |
Zeigt die IronPython-Hilfe für Befehlszeilen an. |
LogicBuilderShell.exe --help |
|
-m <module> |
Führt das Bibliotheksmodul als Skript aus. |
LogicBuilderShell.exe -m pdb |
|
-i |
Führt nach Ausführung des Skripts eine interaktive Prüfung aus. |
LogicBuilderShell.exe -i |
|
<Script File> |
Führt die angegebene Python-Skriptdatei aus. |
LogicBuilderShell.exe |
|
--nologo |
Überspringt die Anzeige des Informationstexts der Logic Builder während des Startvorgangs. Überspringt die Anzeige der …terminated-Meldung während des Herunterfahrens. |
LogicBuilderShell.exe --nologo |
Sie können verschiedene Befehlszeilenargumente kombinieren. Beispielsweise kann das Argument -i mit einer angegebenen Python-Skriptdatei und -nologo kombiniert werden.
In der Liste wird nur eine Auswahl an IronPython-Befehlszeilenargumenten aufgeführt. Eine vollständige Liste finden Sie auf der IronPython-Website und in der Dokumentation.
Anwendungsfälle für die Logic Builder Shell
Sie können die Logic Builder Shell in verschiedenen Szenarien einsetzen. Die folgenden Anwendungsfälle zeigen, wie Sie mit EcoStruxure Machine Expert und der Python-Skriptsprache die Benutzerfreundlichkeit verbessern können.
Wenn Sie Skripts in CI-Systemen (Continuous Integration) ausführen – z. B. um ein EcoStruxure Machine Expert-Projekt aus Subversion (SVN) auszuchecken, das Projekt zu kompilieren und als Bibliothek zu speichern –, muss die Skriptausgabe auf einer Konsole erfolgen. Mit LogicBuilderShell.exe als richtiger Konsolenapplikation können Sie die Ausgabe umleiten oder in einem CI-System aufrufen (z. B. Jenkins), wo die Ausgabe abgerufen und einem Build-Protokoll hinzugefügt wird.
Beispiel:
LogicBuilderShell.exe MyScript.py > output.txt
Sie können LogicBuilderShell.exe als Gegenstück zu Python-Tools für Visual Studio integrieren (siehe Kapitel zum Debuggen). In diesem Fall wird LogicBuilderShell.exe für die Debugging-Kommunikation zwischen Visual Studio und EcoStruxure Machine Expert sowie zum Ausführen der Anweisungen verwendet.
Mit LogicBuilderShell.exe können Sie die integrierte Debugging-Funktion über die Befehlszeile namens pdb-Modul verwenden.
Beispiel:
LogicBuilderShell.exe -m pdb MyScript.py
Sie können Ihre Python-Skripte ohne Benutzeroberfläche testen, um ihre Funktion zu überprüfen. Im Konsolenmodus können Sie Eingaben über die Konsole tätigen. Beachten Sie, dass die Eingabe über die Konsole nur in LogicBuilderShell.exe möglich ist. In der Ansicht Scripting Immediate, die in der Logic Builder-Benutzeroberfläche verfügbar ist, ist keine Konsoleneingabe möglich. Dadurch wird die Anweisung readline() ignoriert.
Beispiel:
import sys
print("Please enter a text: ")
text = sys.stdin.readline()
print("Your entered text: " + text)
Hilfreiche Funktionen finden sich in der Python- und EcoStruxure Machine Expert-API sowie in der Dokumentation.
oNutzen Sie die integrierte Funktion help(), um auf die Python-Hilfe über die IronPython-Shell zuzugreifen. Stellen Sie dafür sicher, dass eine Internetverbindung vorhanden ist.
Beispiel:
help() # start the built-in help module
topics # list all available topics
##### here you'll get the list of available topics #####
LIST # dumps the help to work with lists.
##### here you'll get the help working with lists #####
quit # leaf build-in help feature
oVerwenden Sie die integrierte Funktion dir(), um verfügbare API-Funktionen anzuzeigen.
Beispiel:
dir() # prints the list of defined variables and functions in current script scope
##### here you'll get the list of defined variables or functions in current script scope #####
import sys
dir(sys) # prints the available functions defined in sys module
##### here you'll get the list of defined variables or functions in sys module #####
oVerwenden Sie das Modul inspectapi, um eine Übersicht über die EcoStruxure Machine Expert Python-API zu erhalten. Aufgrund von technischen Beschränkungen kann die integrierte Funktion dir() von Python die API-Hilfe nicht für die EcoStruxure Machine Expert Python-API anzeigen. Verwenden Sie dafür inspectapi.
Beispiel:
inspectapi.dir(projects) # prints the available API functions of "projects" which provides access e.g. to open a SoMachine project
##### here you'll get the SoMachine API provided via "projects" variable #####
Sie können den Schalter -i als Argument verwenden, das an LogicBuilderShell.exe weitergeben wird. Kombinieren Sie dies mit einem spezifischen Skript, damit die Shell-Aufforderung am Ende der Skriptausführung geschieht. Dies erleichtert eine interaktive Prüfung nach Ausführung eines Skripts, z. B. um den Inhalt von Variablen anzuzeigen.
Vorteile der Logic Builder Shell
Es hat sich bewährt, LogicBuilderShell.exe zur Ausführung von Skripten zu verwenden, statt über LogicBuilder.exe Skripte ohne Benutzeroberfläche auszuführen. Es stehen weiterhin beide Methoden zur Verfügung, aber die Befehlszeile der LogicBuilderShell.exe bietet mehr Benutzerfreundlichkeit, und über die Logic Builder Shell erfolgt die Ausgabe auf der Konsole.
Beispiel zur Verwendung von LogicBuilder.exe zur Ausführung von Skripten ohne Benutzeroberfläche:
LogicBuilder.exe -noui --runscript="<script file>"
Beispiele zur Verwendung von LogicBuilderShell.exe:
LogicBuilderShell.exe "<script file>"
EcoStruxure Machine Expert Python-Skripte mit dem Befehlszeilen-Debugger-Modul pdb debuggen
LogicBuilderShell.exe verfügt über eine integrierte Befehlszeilen-Debugging-Funktion pdb (weitere Informationen unter https://docs.python.org/2/library/pdb.html). Dies ist eine Funktion für Experten und wird verwendet, um Python-Skripte zu debuggen oder Fehler zu finden. IronPython selbst stellt ein Modul zur Verfügung, das in eine Shell geladen werden kann. Wenn Sie Ihr eigenes Skript über die pdbFunktion run(…) starten, können Sie den Python-Code auf der Konsole debuggen. Die Konsolenapplikation stellt nur eine textbasierte Benutzeroberfläche zur Verfügung.
HINWEIS: Die Verwendung des Befehlszeilen-Debuggers kann schwierig sein. Eine benutzerfreundlichere Debugging-Erfahrung erhalten Sie über Microsoft Visual Studio und PTVS (weitere Informationen unter Die Logic Builder Shell mit Microsoft Visual Studio und PTVS verwenden).
Das Modul pdb definiert einen interaktiven Quellcode-Debugger für Python-Programme. Es stellt folgende Funktionen bereit:
oFestlegen (konditioneller) Haltepunkte und Überprüfung auf Zeilenebene
oÜberprüfung von Aufrufrahmen
oAufführung des Quellcodes
oÜberprüfung arbiträren Python-Codes im Kontext eines Aufrufrahmens
Um ein Python-Skript direkt in pdb zu starten, verwenden Sie die folgende Befehlszeilensyntax:
LogicBuilderShell.exe -m pdb MyScript.py
Auswahl der pdb-Debugger-Befehle (weitere Informationen in der Python-Online-Hilfe):
|
Debugger-Befehl |
Befehlsbeschreibung |
|---|---|
|
h(elp) [command] |
Ohne Argument wird die Liste der verfügbaren Befehle ausgegeben. Mit einem Befehl als Argument werden Hilfsinformationen zu diesem Befehl ausgegeben. help pdb zeigt die Dokumentationsdatei an. |
|
r(un) |
Startet das Python-Programm, für das das Debugging ausgeführt wurde. |
|
b(reak) |
Legt mit einem Zeilennummernargument einen Haltepunkt an dieser Position in der Datei fest. Legt mit einem Funktionsargument einen Haltepunkt an der ersten ausführbaren Anweisung innerhalb dieser Funktion fest. Die Zeilennummer kann ein Präfix mit einem Dateinamen und Doppelpunkt haben, um einen Haltepunkt in einer anderen Datei anzugeben (meistens in einer Datei, die noch nicht geladen wurde). Die Datei wird auf sys.path gesucht. Jeder Haltepunkt bekommt eine Nummer, auf die sich die anderen Haltepunktbefehle beziehen. Wenn ein zweites Argument vorhanden ist, handelt es sich um einen Ausdruck, für den TRUE gelten muss, damit der Haltepunkt beachtet wird. Ohne Argument werden alle Haltepunkte aufgeführt. Für jeden aufgeführten Haltepunkt wird angezeigt, wie oft er erreicht wurde, wie oft er ignoriert wurde und ggf. welche Bedingung gilt. |
|
l(ist) [first[, last]] |
Der Quellcode für die Datei wird aufgeführt. Ohne Argument werden 11 Zeilen in der Umgebung der aktuellen Zeile aufgeführt, oder die vorherige Auflistung wird weitergeführt. Mit einem Argument werden 11 Zeilen um die aktuelle Zeile aufgeführt. Mit zwei Argumenten wird der entsprechende Bereich angezeigt. Wenn das zweite Argument geringer ist als das erste, wird es als Zähler interpretiert. |
|
c(ontinue) |
Die Ausführung wird fortgeführt und nur angehalten, wenn ein Haltepunkt erkannt wird. |
|
n(ext) |
Die Ausführung wird fortgeführt, bis die nächste Zeile in der aktuellen Funktion erreicht oder ausgegeben wird. (Der Unterschied zwischen next und step ist der, dass step innerhalb einer aufgerufenen Funktion gestoppt wird, während next aufgerufene Funktionen bei (fast) voller Geschwindigkeit ausführt und erst an der nächsten Zeile in der aktuellen Funktion anhält.) |
|
s(tep) |
Die aktuelle Zeile wird ausgeführt, hält an der erstmöglichen Gelegenheit an (entweder in einer aufgerufenen Funktionen oder an der nächsten Zeile in der aktuellen Funktion). |
|
u(ntil) |
Die Ausführung wird fortgeführt, bis die Zeile mit einer größeren Zeilennummer als der aktuellen erreicht wird oder wenn eine Ausgabe des aktuellen Rahmens geschieht. |
|
r(eturn) |
Die Ausführung wird fortgeführt, bis die aktuelle Funktion ausgegeben wird. |
|
w(here) |
Ein Stacktrace mit dem aktuellsten Rahmen ganz unten wird ausgegeben. Ein Pfeil weist auf den aktuellen Rahmen hin, der den Kontext der meisten Befehle festlegt. |
|
q(uit) |
Der Debugger wird beendet. Das ausgeführte Programm wird abgebrochen. |
Beispiel für ein Python-Skript, für das ein Debuggen erforderlich ist:
print("Demonstration how to use Visual Studio + PTVS to debug SoMachine Python scripts")
# close open project
if projects.primary:
print("Close project")
projects.primary.close()
print("Open project")
projects.open("c:\\Temp\\MyProject.project")
sercosDevice = projects.primary.find("SERCOSIII", True)[0]
sercosDeviceName = sercosDevice.get_name(False)
print("Sercos device name: " + sercosDeviceName)
print("Close project")
projects.primary.close()
In jeder Zeile der folgenden Liste wird, beginnend mit (pdb), ein Debugger-Befehl ausgeführt, z. B. list (l) oder help oder next (n) oder quit (q). Dazwischen wird die Anweisung oder die entsprechende Ausgabe angezeigt.
LogicBuilderShell.exe -m pdb SoMachinePythonDemonstration.py
SoMachine Logic Builder Shell version 1.53.16.0
Copyright (C) Schneider Electric Automation GmbH 2014-2015
Demonstration how to use Visual Studio + PTVS to debug SoMachine Python scripts
> C:\temp\somachinepythondemonstration.py(5)<module>()
-> if projects.primary:
(Pdb) help
Documented commands (type help <topic>):
========================================
EOF bt cont enable jump pp run unt
a c continue exit l q s until
alias cl d h list quit step up
args clear debug help n r tbreak w
b commands disable ignore next restart u whatis
break condition down j p return unalias where
Miscellaneous help topics:
==========================
exec pdb
Undocumented commands:
======================
retval rv
(Pdb) l
1
2 print("Demonstration how to use Visual Studio + PTVS to debug SoMachine Python scripts")
3
4 # close open project
5 -> if projects.primary:
6 print("Close project")
7 projects.primary.close()
8
9 print("Open project")
10 projects.open("c:\\Temp\\MyProject.project")
11
(Pdb) n
> C:\temp\somachinepythondemonstration.py(9)<module>()
-> print("Open project")
(Pdb) n
Open project
> C:\temp\somachinepythondemonstration.py(10)<module>()
-> projects.open("c:\\Temp\\MyProject.project")
(Pdb) l
5 if projects.primary:
6 print("Close project")
7 projects.primary.close()
8
9 print("Open project")
10 -> projects.open("c:\\Temp\\MyProject.project")
11
12 sercosDevice = projects.primary.find("SERCOSIII", True)[0]
13
14 sercosDeviceName = sercosDevice.get_name(False)
15
(Pdb) n
IOError: IOError(...oject'.")
> C:\temp\somachinepythondemonstration.py(10)<module>()
-> projects.open("c:\\Temp\\MyProject.project")
(Pdb) q
SoMachine Logic Builder Shell terminated.