La versione 1.1 di EcoStruxure Machine Expert non supporta i controllori M258, LMC058 e LMC078.

Utilizzo di Logic Builder Shell

Avvio di Logic Builder Shell

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 visualizzata la richiesta di immissione (>>>):

G-SE-0046243.1.gif-high.gif

 

 

Comandi

Alla richiesta di immissione (>>>), digitare le istruzioni Python e premere Invio 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

-h / --help

Stampa la guida della riga di comando di IronPython.

LogicBuilderShell.exe --help
LogicBuilderShell.exe -h

-m <module>

Esegue il modulo libreria come script.

LogicBuilderShell.exe -m pdb
MyScript.py

-i

Ispezione interattiva dopo l'esecuzione dello script.

LogicBuilderShell.exe -i
MyScript.py

<Script File>

Esegue il file script Python specificato.

LogicBuilderShell.exe
MyScript.py

--nologo

Salta la visualizzazione del testo informativo di Logic Builder durante l'avvio.

Salta la visualizzazione del messaggio …terminated durante l'arresto.

LogicBuilderShell.exe --nologo

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

Casi d'uso di Logic Builder Shell

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

Caso d'uso 1

Quando si eseguono script nei sistemi Continuous Integration (CI), ad esempio, per il Checkout di un progetto EcoStruxure Machine Expert da Subversion (SVN), compilare il progetto e salvare come libreria, è necessario lo script stampato 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.

Esempio:

LogicBuilderShell.exe MyScript.py > output.txt

Caso d'uso 2

È possibile integrare LogicBuilderShell.exe come controparte degli Strumenti di Python per Visual Studio (consultare il capitolo sul debug). In questo caso, LogicBuilderShell.exe consente di eseguire il debug della comunicazione tra Visual Studio e EcoStruxure Machine Expert e per eseguire le istruzioni.

Caso d'uso 3

LogicBuilderShell.exe consente di utilizzare la funzionalità di debug integrata della riga di comando denominata modulo pdb.

Esempio:

LogicBuilderShell.exe -m pdb MyScript.py

Caso d'uso 4

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'immissione dalla console è possibile solo in LogicBuilderShell.exe. Nella vista Scripting Immediate, 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)

Caso d'uso 5

Consultare la documentazione e API Python e EcoStruxure Machine Expert.

oUtilizzare 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

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

oUtilizzare il modulo inspectapi per esplorare l'API EcoStruxure Machine Expert Python. A causa di limitazioni tecniche, la funzionalità integrata dir() di Python non è in grado di stampare la guida dell'API per l'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 SoMachine project
##### here you'll get the SoMachine API provided via "projects" variable #####

Caso d'uso 6

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.

Vantaggi di Logic Builder Shell

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

Debug di script EcoStruxure Machine Expert Python con modulo di debug della riga di comando 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.

NOTA: L'uso del debugger della riga di comando può risultare complesso. Per facilitare le operazioni di debug, utilizzare Microsoft Visual Studio e PTVS (per ulteriori informazioni, consultare Uso della shell di Logic Builder con Microsoft Visual Studio e PTVS).

Il modulo pdb definisce un debugger del codice sorgente interattivo per programmi Python. Offre le seguenti caratteristiche:

oImpostazione di punti di interruzione (condizionali) e procedimenti passo-passo a livello di riga di origine

oIspezione dei frame di stack

oElenco del codice sorgente

oValutazione 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 maggiori informazioni, consultare la guida di Python su Internet):

Comando debugger

Descrizione comando

h(elp) [command]

Senza argomento, stampare l'elenco dei comandi disponibili.

Con un comando come argomento, stampare la guida sul comando.

help pdb visualizza il file della documentazione.

r(un)

Riavviare il programma Python sottoposto a debug.

b(reak)

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 sys.path. A ogni punto di interruzione viene assegnato un numero a cui fanno riferimento gli altri comandi del punto di interruzione.

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.

l(ist) [first[, last]]

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

Con due argomenti, elenca l'intervallo dato; se il secondo argomento è inferiore al primo, esso viene interpretato come una somma.

c(ontinue)

Continua l'esecuzione, si arresta solo quando si incontra un punto di interruzione.

n(ext)

Continua l'esecuzione fino al raggiungimento della riga successiva nella funzione corrrente o ritorna. (La differenza tra next e step è che step si arresta all'interno di una funzione chiamata mentre next esegue le funzioni chiamate a (quasi) velocità piena, arrestandosi solo nella riga successiva nella funzione corrente.)

s(tep)

Esegue la riga corrente, si arresta alla prima occasione possibile (in una funzione chiamata o alla riga successiva nella funzione corrente).

u(ntil)

Continua l'esecuzione fino alla riga con il numero maggiore di quella corrente raggiunta o quando torna dal frame corrente.

r(eturn)

Continua l'esecuzione fino al ritorno della funzione corrente.

w(here)

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.

q(uit)

Esce dal debugger. Il programma in esecuzione viene interrotto.

Esempio di debug con pdb

Esempio di script Python per cui eseguire il debug:

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