EcoStruxure Machine Expert Version 1.1 unterstützt nicht die Controller M258, LMC058 und LMC078.

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:

G-SE-0046243.1.gif-high.gif

 

 

Befehle

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
LogicBuilderShell.exe -h

-m <module>

Führt das Bibliotheksmodul als Skript aus.

LogicBuilderShell.exe -m pdb
MyScript.py

-i

Führt nach Ausführung des Skripts eine interaktive Prüfung aus.

LogicBuilderShell.exe -i
MyScript.py

<Script File>

Führt die angegebene Python-Skriptdatei aus.

LogicBuilderShell.exe
MyScript.py

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

Anwendungsfall 1

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 LogicBuil­derShell.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

Anwendungsfall 2

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.

Anwendungsfall 3

Mit LogicBuilderShell.exe können Sie die integrierte Debugging-Funktion über die Befehlszeile namens pdb-Modul verwenden.

Beispiel:

LogicBuilderShell.exe -m pdb MyScript.py

Anwendungsfall 4

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)

Anwendungsfall 5

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

Anwendungsfall 6

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 Benutzer­freundlichkeit, 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 benutzer­freundlichere 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.

Debugging-Beispiel mit pdb

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.