El archivo LogicBuilderShell.exe se encuentra en el directorio de instalación de EcoStruxure Machine Expert.
El Logic Builder Shell proporciona el REPL de EcoStruxure Machine Expert basado en ipy.exe de IronPython. Se trata el REPL del paquete de IronPython estándar cuando se instala en un PC. Por lo tanto, incluye las mismas funcionalidades, como la finalización con tabulador o la compatibilidad para la depuración de scripts de Python, entre otras. Además, permite el acceso a la Python API de EcoStruxure Machine Expert.
Haga doble clic en el archivo LogicBuilderShell.exe para iniciar el Logic Builder Shell (sin argumentos) en una consola.
Resultado: Se muestra la interfaz de entrada (>>>
):
En la interfaz de entrada (>>>
), escriba las instrucciones de Python y pulse para ejecutarlas.
La siguiente secuencia de comandos constituye un ejemplo de cómo abrir un proyecto, buscar un nodo de dispositivo e imprimir su nombre:
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
>>>
Uso:
LogicBuilderShell.exe [options] [file.py|- [arguments]]
Las [options]
se definen en la lista siguiente de argumentos de línea de comandos.
[arguments]
es un marcador de posición para los argumentos que se transmiten al archivo de script.
Argumentos de línea de comandos del Logic Builder Shell:
Argumento de línea de comandos |
Descripción |
Ejemplo |
---|---|---|
|
Imprime la ayuda de línea de comandos de IronPython. |
|
|
Ejecuta el módulo de la biblioteca como un script. |
|
|
Realiza una inspección interactiva tras la ejecución del script. |
|
|
Ejecuta el archivo de script de Python especificado. |
|
|
Omite la visualización del texto informativo de Logic Builder durante el inicio.
Omite la visualización del mensaje de |
|
Es posible combinar diferentes argumentos de la línea de comandos. El argumento -i
, por ejemplo, puede combinarse con un archivo de script de Python especificado y -nologo
.
En la lista se muestra únicamente una selección de argumentos de la línea de comandos de IronPython. Para obtener la lista completa, consulte el sitio web y la documentación de IronPython.
El Logic Builder Shell puede utilizarse en diferentes escenarios. Los siguientes casos de uso muestran cómo este ayuda a mejorar la experiencia de uso en el trabajo con EcoStruxure Machine Expert y el lenguaje de creación de scripts Python.
Al ejecutar scripts en sistemas de integración continua (CI) (por ejemplo, para EcoStruxure Machine Expert desde Subversion (SVN), compilar el proyecto y guardarlo como biblioteca), necesitará imprimir la salida del script en una consola. Con LogicBuilderShell.exe como aplicación de consola real, podrá redirigir el resultado o bien llamarlo en un sistema CI (como, por ejemplo, Jenkins), donde el resultado se recuperará y añadirá al registro de creación.
un proyecto deEjemplo:
LogicBuilderShell.exe MyScript.py > output.txt
LogicBuilderShell.exe permite utilizar la función incorporada de depuración de línea de comandos, denominada módulo pdb
.
Ejemplo:
LogicBuilderShell.exe -m pdb MyScript.py
Pruebe sus scripts de Python en la modalidad sin interfaz de usuario para comprobar que funcione correctamente. En la modalidad de consola, podrá especificar la entrada mediante la consola. Recuerde que la entrada de lectura de la consola solo se admite en LogicBuilderShell.exe La vista , disponible en la interfaz de usuario de Logic Builder, no permite ninguna entrada de consola. Esto implica que la instrucción readline()
se ignora.
Ejemplo:
import sys
print("Please enter a text: ")
text = sys.stdin.readline()
print("Your entered text: " + text)
Explore la API y la documentación de Python y EcoStruxure Machine Expert.
Utilice la función incorporada help()
para acceder a la ayuda de Python a través del shell de IronPython. Para ello, asegúrese de que dispone de conexión a Internet.
Ejemplo:
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
Utilice la función integrada dir()
para imprimir las funciones disponibles de la API.
Ejemplo:
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 #####
Utilice el módulo inspectapi
para explorar la API de Python de EcoStruxure Machine Expert. Debido a restricciones técnicas, la función integrada dir()
de Python no puede imprimir la ayuda de la API de Python de EcoStruxure Machine Expert. Para ello, utilice inspectapi
.
Ejemplo:
inspectapi.dir(projects) # prints the available API functions of "projects" which provides access e.g. to open a Machine Expert project
##### here you'll get the Machine Expert API provided via "projects" variable #####
Utilice el modificador -i
como un argumento transmitido a LogicBuilderShell.exe combinado con un script específico para que aparezca la interfaz del shell al finalizar la ejecución del script. De este modo, podrá realizar inspecciones interactivas tras la ejecución de un script, por ejemplo, para comprobar el contenido de las variables.
Se recomienda utilizar LogicBuilderShell.exe para ejecutar scripts en lugar de utilizar LogicBuilder.exe para ejecutar scripts en modalidad sin interfaz de usuario. Si bien ambos métodos son posibles, la línea de comandos de LogicBuilderShell.exe ofrece una mejor experiencia de uso, mientras que el Logic Builder Shell imprime el resultado en la consola.
Ejemplo de uso de LogicBuilder.exe para ejecutar scripts en modalidad sin interfaz de usuario:
LogicBuilder.exe -noui --runscript="<script file>"
Ejemplo de uso de LogicBuilderShell.exe:
LogicBuilderShell.exe "<script file>"
pdb
LogicBuilderShell.exe incluye el módulo pdb
de la función integrada de depuración de línea de comandos (para obtener más información, consulte https://docs.python.org/2/library/pdb.html). Se trata de una función para expertos que se utiliza para depurar scripts de Python o bien para detectar problemas. El propio IronPython incluye un módulo que puede cargarse en un shell. Cuando inicie su propio script mediante la función run(…)
de pdb
, podrá depurar el código de Python en la consola. La aplicación de consola solo incluye opciones de UI basadas en texto.
El módulo pdb
define un depurador de código fuente interactivo para programas de Python. Incluye las funciones siguientes:
Ajuste de puntos de interrupción (condicionales) y ejecución única paso a paso en el nivel de línea de origen
Inspección de tramas de pila
Enumeración de código fuente
Evaluación de código de Python arbitrario en el contexto de cualquier trama de pila
Para iniciar un script de Python directamente en pdb
, utilice la siguiente sintaxis de línea de comandos:
LogicBuilderShell.exe -m pdb MyScript.py
Selección de comandos del depurador de pdb
(consulte la ayuda de Python en Internet para obtener más información):
Comando del depurador |
Descripción del comando |
---|---|
|
Sin argumento, imprime la lista de comandos disponibles. Con un comando como argumento, imprime la ayuda relativa a dicho comando.
|
|
Reinicia el programa de Python depurado. |
|
Con un argumento de número de línea, define una interrupción en esa posición del archivo.
Con un argumento de función, define una interrupción en la primera instrucción ejecutable dentro de dicha función. El número de línea puede ir precedido de un nombre de archivo y dos puntos para especificar un punto de interrupción en otro archivo (que probablemente no se haya cargado todavía). El archivo se busca en Si existe un segundo argumento, se tratará de una expresión que deberá evaluarse como TRUE antes de hacer efectivo el punto de interrupción. Sin argumento, enumera todas las interrupciones. Para cada punto de interrupción enumerado se incluye el número de veces que se ha activado el punto de interrupción, el recuento de veces que se ha ignorado y la condición relacionada, si la hay. |
|
Enumera el código fuente del archivo. Sin argumentos, enumera 11 líneas alrededor de la línea actual o bien continúa la enumeración anterior. Con un argumento, enumera 11 líneas alrededor de dicha línea. Con dos argumentos, enumera el rango indicado; si el segundo argumento es inferior al primero, se interpreta como un recuento. |
|
Continúa la ejecución; solo se detiene cuando se detecta un punto de interrupción. |
|
Continúa la ejecución hasta que se alcanza la siguiente línea de la función actual o hasta que regresa. La diferencia entre |
|
Ejecuta la línea actual y se detiene a la primera ocasión posible (ya sea en una función que se ha llamado o en la siguiente línea de la función actual). |
|
Continúa la ejecución hasta que se alcanza una línea con un número de línea mayor que la línea actual o bien cuando se regresa de la trama actual. |
|
Continúa la ejecución hasta que regresa la función actual. |
|
Imprime una trama de pila con la trama más reciente en la parte inferior. La flecha indica la trama actual, que determina el contexto de la mayoría de los comandos. |
|
Sale del depurador. Se interrumpe el programa que se estaba ejecutando. |
pdb
Ejemplo de script de Python para depurar:
print("Demonstration how to use Python pdb module to debug Machine Expert 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()
En cada línea de la siguiente enumeración que empieza por (pdb)
se ejecuta un comando del depurador, como por ejemplo list (l)
, help
, next (n)
o quit (q)
. Entre uno y otro se muestra la instrucción o el resultado de la ejecución de esta.
LogicBuilderShell.exe -m pdb MachineExpertPythonDemonstration.py
Machine Expert Logic Builder Shell version 1.53.16.0
Copyright (C) Schneider Electric Automation GmbH 2014-2015
Demonstration how to use Python pdb module to debug Machine Expert Python scripts
> C:\temp\MachineExpertpythondemonstration.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 Python pdb module to debug Machine Expert 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\MachineExpertpythondemonstration.py(9)<module>()
-> print("Open project")
(Pdb) n
Open project
> C:\temp\MachineExpertpythondemonstration.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\MachineExpertpythondemonstration.py(10)<module>()
-> projects.open("c:\\Temp\\MyProject.project")
(Pdb) q
Machine Expert Logic Builder Shell terminated.