LogicBuilderShell.exe è ubicato nella directory di installazione di EcoStruxure Machine Expert.
Logic Builder Shell fornisce il REPL EcoStruxure Machine Expert basato su IronPython ipy.exe. Si tratta del REPL del pacchetto standard IronPython quando installato su PC. Perciò, fornisce le stesse funzionalità come il completamento scheda, supporto debug script Python e così via. Inoltre, consente di accedere a EcoStruxure Machine Expert Python API.
Fare doppio clic su LogicBuilderShell.exe per avviare Logic Builder Shell (senza argomenti) in una console.
Risultato: viene visualizzato il prompt di immissione (>>>
):
Alla richiesta di immissione (>>>
), digitare le istruzioni Python e premere per eseguirle.
La sequenza seguente fornisce un esempio su come aprire un progetto, cercare un nodo dispositivo e stampare il nome:
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]]
Le [options]
sono definite nell'elenco di argomenti della riga di comando di seguito.
[arguments]
è un segnaposto per argomenti passati al file script.
Argomenti della riga di comando di Logic Builder Shell:
Argomento della riga di comando |
Descrizione |
Esempio |
---|---|---|
|
Stampa la guida della riga di comando di IronPython. |
|
|
Esegue il modulo libreria come script. |
|
|
Ispezione interattiva dopo l'esecuzione dello script. |
|
|
Esegue il file script Python specificato. |
|
|
Salta la visualizzazione del testo informativo di Logic Builder durante l'avvio.
Salta la visualizzazione del messaggio |
|
È possibile combinare diversi argomenti della riga di comando. Ad esempio, l'argomento -i
può essere combinato con un file script Python specificato e -nologo
.
L'elenco mostra solo una selezione di argomenti della riga di comando di IronPython. Per un elenco completo, consultare la documentazione e il sito Web di IronPython.
È possibile utilizzare Logic Builder Shell in diversi scenari. I seguenti casi d'uso mostrano come è possibile migliorare la possibilità di lavorare con EcoStruxure Machine Expert e il linguaggio di scripting Python.
Quando si eseguono script nei sistemi Continuous Integration (CI), ad esempio per eseguire il EcoStruxure Machine Expert da Subversion (SVN), compilare il progetto e salvarlo come libreria, è necessario stampare l’uscita dello script su una console. Con LogicBuilderShell.exe come reale applicazione di console, è possibile reindirizzare l'output o chiamarlo in un sistema CI (ad esempio, Jenkins) dove l'output viene recuperato e aggiunto al log di compilazione.
di un progettoEsempio:
LogicBuilderShell.exe MyScript.py > output.txt
LogicBuilderShell.exe consente di utilizzare la funzionalità di debug integrata della riga di comando denominata modulo pdb
.
Esempio:
LogicBuilderShell.exe -m pdb MyScript.py
Eseguire il test degli script Python in modalità senza IU per verificare che funzionino. In modalità console, è possibile eseguire l'immissione tramite la console. Tenere presente che la lettura dell'ingresso dalla console è possibile solo in LogicBuilderShell.exe. Nella vista , disponibile nell'interfaccia utente di Logic Builder, non è possibile alcuna immissione di console. Come conseguenza, l'istruzione readline()
viene ignorata.
Esempio:
import sys
print("Please enter a text: ")
text = sys.stdin.readline()
print("Your entered text: " + text)
Esplorare l'API e la documentazione di Python e EcoStruxure Machine Expert.
Utilizzare la funzionalità integrata in help()
per accedere alla guida di Python tramite shell IronPython. Per questo, verificare che sia disponibile una connessione a Internet.
Esempio:
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
utilizzare la funzionalità integrata dir()
per stampare le funzioni api disponibili.
Esempio:
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 #####
utilizzare il modulo inspectapi
per esplorare l’API EcoStruxure Machine Expert Python. A causa di restrizioni tecniche, la funzionalità integrata dir()
di Python non è in grado di stampare la Guida dell'API per API EcoStruxure Machine Expert Python. Per questo scopo, utilizzare inspectapi
.
Esempio:
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 #####
Utilizzare lo switch -i
come argomento passato a LogicBuilderShell.exe insieme con uno script specificato per ottenere il prompt della shell alla fine dell'esecuzione dello script. Ciò consente di indagare in modo interattivo dopo l'esecuzione di uno script, ad esempio, per vedere il contenuto delle variabili.
Si consiglia di utilizzare LogicBuilderShell.exe per eseguire script invece di utilizzare LogicBuilder.exe per eseguire script in mdalità senza IU. Entrambi i metodi sono sempre possibili, ma la riga di comando di LogicBuilderShell.exe fornisce una migliore usufruibilità e Logic Builder Shell stampa l'output sulla console.
Esempio di uso di LogicBuilder.exe per eseguire script in modalità senza IU:
LogicBuilder.exe -noui --runscript="<script file>"
Esempio di uso di LogicBuilderShell.exe:
LogicBuilderShell.exe "<script file>"
pdb
LogicBuilderShell.exe fornisce il modulo pdb
della funzionalità di debug della riga di comando integrata (per altra documentazione, consultare https://docs.python.org/2/library/pdb.html). Si tratta di una funzionalità per utenti esperti e utilizzata per il debug di script Python o per individuare un problema. IronPython stesso fornisce un modulo che può essere caricato in una shell. Quando si avvia lo script tramite la funzione pdb
run(…)
, è possibile eseguire il debug del codice Python nella console. L'applicazione della console fornisce solo possibilità IU testuali.
Il modulo pdb
definisce un debugger del codice sorgente interattivo per programmi Python. Offre le seguenti caratteristiche:
Impostazione di punti di interruzione (condizionali) e procedimenti passo-passo a livello di riga di origine
Ispezione dei frame di stack
Elenco del codice sorgente
Valutazione del codice arbitrario Python nel contesto di qualsiasi frame di stack
Per avviare uno script Python direttamente in pdb
, utilizzare la seguenti sintassi della riga di comando:
LogicBuilderShell.exe -m pdb MyScript.py
Selezione dei comandi del debugger pdb
(per ulteriori informazioni, consultare la guida di Python su Internet):
Comando debugger |
Descrizione comando |
---|---|
|
Senza argomento, stampare l'elenco dei comandi disponibili. Con un comando come argomento, stampare la guida sul comando.
|
|
Riavviare il programma Python sottoposto a debug. |
|
Con un argomento della riga di comando, impostare un'interruzione in questa posizione nel file.
Con un argomento di funzione, impostare un'interruzione nella prima istruzione eseguibile in tale funzione. Il numero di riga può avere come prefisso un nome di file e due punti per specificare un punto di interruzione in un altro file (probabilmente uno non ancora caricato). Si esegue la ricerca nel file su Se è presente un secondo argomento, si tratta di un'espressione che deve risultare TRUE prima di rispettare il punto di interruzione. Senza argomento, elenca tutte le interruzioni. Per ogni punto di interruzione elencato, il numero di volte in cui è stato toccato il punto di interruzione, il numero di volte in cui è stato ignorato e la condizione associata, se presenti, sono inclusi. |
|
Elenca il codice sorgente del file. Senza argomenti, elenca 11 righe attorno alla riga corrente o continua l'elenco precedente. Con un argomento, elenca 11 righe attorno a quella linea. Con due argomenti, elenca l'intervallo dato; se il secondo argomento è inferiore al primo, esso viene interpretato come una somma. |
|
Continua l'esecuzione, si arresta solo quando si incontra un punto di interruzione. |
|
Continua l'esecuzione fino al raggiungimento della riga successiva nella funzione corrente o ritorna. (La differenza tra |
|
Esegue la riga corrente, si arresta alla prima occasione possibile (in una funzione chiamata o alla riga successiva nella funzione corrente). |
|
Continua l'esecuzione fino alla riga con il numero maggiore di quella corrente raggiunta o quando torna dal frame corrente. |
|
Continua l'esecuzione fino al ritorno della funzione corrente. |
|
Stampa una traccia dello stack, con il frame più recente al fondo. Una freccia indica il frame corrente, che determina il contesto di molti comandi. |
|
Esce dal debugger. Il programma in esecuzione viene interrotto. |
pdb
Esempio di script Python per cui eseguire il debug:
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()
In ogni riga nell'elenco seguente che inizia con (pdb)
, viene eseguito un comando del debugger, come list (l)
o help
o next (n)
o quit (q)
. Nel mezzo è possibile vedere l'istruzione o il relativo risultato eseguito.
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.