EcoStruxure Machine Expert fornisce una API Python utilizzabile negli script EcoStruxure Machine Expert.
L'API Python contiene due categorie:
API Python standard e moduli/pacchetti Python
API EcoStruxure Machine Expert Python
L'API Python standard (per operare con stringhe, array, file e così via) fa parte dell'installazione di EcoStruxure Machine Expert. Per una guida dettagliata, consultare Internet (ad esempio, https://docs.python.org/3/). È possibile estendere l'installazione di EcoStruxure Machine Expert con moduli e pacchetti Python disponibili su Internet.
Per automatizzare EcoStruxure Machine Expert, un’API EcoStruxure Machine Expert Python è anche inclusa nell’installazione di EcoStruxure Machine Expert. Consente, ad esempio, di aprire o chiudere un progetto, di cambiare il contenuto del progetto o di compilare un progetto e scaricarlo nel controller.
Il concetto che sottende l'API EcoStruxure Machine Expert Python è descritto in questo capitolo. Consultare anche gli esempi del motore di script. Per analizzare l'API EcoStruxure Machine Expert Python, consultare il capitolo Analisi dell'API EcoStruxure Machine Expert.
Per ulteriori informazioni sulle descrizioni di metodi/funzioni o dei relativi parametri, vedere la sezione Scripting Engine .
Per trovare i metodi dell'API adatti per gli script Python, è necessario conoscere il concetto che sottende l'API EcoStruxure Machine Expert Python e come l'API è integrata nel motore di script (esecuzione script). Il concetto principale che sottende l'API EcoStruxure Machine Expert Python è un approccio dell'API orientato agli oggetti. La programmazione orientata agli oggetti (OOP) è un paradigma di programmazione basato su due concetti: oggetti e codice. Gli oggetti sono strutture di dati contenenti dati, sotto forma di campi, denominati anche attributi. Il codice è disponibile sotto forma di procedure, denominate metodi. Le procedure di un oggetto possono accedere e modificare i campi dati dell'oggetto a cui sono associate. I programmi informatici progettati in base a OOP consistono di oggetti che interagiscono tra loro.
Il fine della scrittura degli script è la mappatura della documentazione dettagliata dell'API EcoStruxure Machine Expert Python sugli oggetti corretti per richiamare le procedure.
Quando si esegue uno script o si utilizza REPL (in LogicBuilderShell.exe o nella vista ) è presente un ambito dello script principale con variabili predefinite (e tipi). È possibile utilizzarle nello script come immissione nell'API EcoStruxure Machine Expert Python. Per elencare le variabili predefinite disponibili nell'ambito dello script principale, avviare LogicBuilderShell.exe ed eseguire dir()
.
Elenco delle variabili predefinite tramite esecuzione di dir()
>>> dir()
['AccessRight', 'ApplicationState', 'ArchiveCategories', 'ChannelType', 'Compile
rMessage', 'ConflictResolve', 'ConnectorRole', 'CredentialSourceKind', 'DeviceID
', 'DeviceUserManagementFlags', 'DiagType', 'ExportReporter', 'Guid', 'Implement
ationLanguage', 'ImportReporter', 'MultipleChoiceSelector', 'NativeExportReporte
r', 'NativeImportFilter', 'NativeImportHandler', 'NativeImportResolve', 'NativeI
mportResult', 'ObjectPermissionKind', 'OnlineChangeOption', 'OperatingState', 'P
ermissionState', 'ProjectType', 'PromptChoice', 'PromptChoiceFilter', 'PromptHan
dling', 'PromptResult', 'ResetOption', 'SV_DEV', 'SV_POU', 'Severity', 'TimeoutE
xception', 'ValuesFailedException', 'Version', '__SoMachine__', '__builtins__',
'__doc__', '__file__', '__name__', 'communication_settings', 'compiler_settings'
, 'etest_test_provider', 'feature_settings_manager', 'librarymanager', 'libraryp
ackage_service', 'new_project', 'online', 'projects', 'system', 'visualization_s
ettings']
Le voci predefinite di questo elenco scritte in minuscolo sono variabili che fanno riferimento a un oggetto che fornisce metodi o campi. Si tratta di una specie di API globale che funziona con o senza un progetto di EcoStruxure Machine Expert caricato.
Ad esempio system
o projects
o online
.
system
: Funzionalità per l'integrazione in EcoStruxure Machine Expert. Questo oggetto fornisce le funzioni documentate in ISystemInterface
, come l'accesso alla vista da EcoStruxure Machine Expert o l'utilizzo di ui_present per verificare se il programma è in esecuzione in modalità --noUI
.
projects
: funzionalità per la gestione del progetto. Questo oggetto fornisce le funzioni documentate in IScriptProjects Interface
, come il caricamento dei progetti e degli archivi di progetto. Inoltre, è il punto di ingresso per i singoli progetti.
online
: funzionalità per l'accesso online al controller. È possibile utilizzare il metodo create_online_application
per recuperare un oggetto online specifico (documentato in IScriptOnlineApplication
) per un oggetto applicazione. Questo oggetto consente di accedere a un controller, avviare l'applicazione e leggere i valori delle variabili.
Per ulteriori informazioni, consultare la parte Riferimento API plugin Script Engine della Guida in linea EcoStruxure Machine Expert.
Le voci predefinite di questo elenco che iniziano con una lettera maiuscola sono enumerazioni o tipi/classi che è possibile utilizzare o istanziare nello script Python. Ad esempio, DeviceID
(classe) o Guid
(classe) o PromptChoice
(enumerazione).
Un progetto EcoStruxure Machine Expert è costituito da dispositivi POU, DUT, GVL e così via, organizzati in una struttura ad albero di oggetti (vedere, ad esempio, in Logic Builder). Questa struttura di oggetti (la struttura del progetto) è collegata a projects.primary
. In projects.primary
, l'API consente di cercare gli oggetti utilizzando il metodo find(…)
. È possibile spostarsi nella struttura del progetto utilizzando, ad esempio, il metodo get_children()
per ottenere gli oggetti secondari immediati (ad esempio, i dispositivi controller). Su ogni oggetto secondario, è possibile chiamare di nuovo get_children()
per ottenerne gli oggetti secondari immediati e così via.
inspectapi.dir(…)
per vedere l'elenco di metodi API disponibili su un oggetto.
Esempio di utilizzo di una funzione API globale per aprire un progetto:
projects.open("MyProject.project")
Esempio per trovare e rinominare un oggetto della struttura del progetto (dopo aver caricato un progetto):
myObject = projects.primary.find("SERCOSIII")[0]
myObject.rename("New_SERCOSIII_Name")
L'illustrazione mostra l'oggetto della struttura del progetto nell'interfaccia utente e la struttura del progetto attraversato stampata da uno script:
Script di esempio per attraversare la struttura del progetto (stampata sopra):
def print_tree_of_obj(treeobj, depth=0, verbose=False):
name = treeobj.get_name(False)
if treeobj.is_device:
deviceid = treeobj.get_device_identification()
details = ""
if verbose == True:
details = " [Device {0}/{1}/{2}]".format(deviceid.type, deviceid.id, deviceid.version)
print("{0} * {1}{2}".format(" "*depth, name, details))
else:
print("{0} * {1}".format(" "*depth, name))
for child in treeobj.get_children(False):
print_tree_of_obj(child, depth+1, verbose)
def print_tree_of_project(pro, verbose=False):
if pro == None:
print("No project open.")
else:
for obj in pro.get_children():
print_tree_of_obj(obj, 0, verbose)
def print_tree(verbose=False):
if projects.primary != None:
print_tree_of_project(projects.primary, verbose)
else:
print("No project open.")
print_tree(True)