Controllo di un PLC Beckhoff da applicazioni python e realizzazione di esempio su modulo "EL2008"

Pagina creata da Tommaso D'Ambrosio
 
CONTINUA A LEGGERE
Controllo di un PLC Beckhoff da applicazioni python e realizzazione di esempio su modulo "EL2008"
__________________________________________________________________________
                        OSSERVATORIO ASTROFISICO DI CATANIA

Controllo di un PLC Beckhoff da applicazioni python e
realizzazione di esempio su modulo “EL2008”

                          Osservatorio Astrofisico di Catania
                                           A. Giuffrida(1),
 (1)     INAF – Osservatorio Astrofisico di Catania

                             Rapporti interni e tecnici
                                               3/2018

                          INAF - Osservatorio Astrofisico di Catania
         Via Santa Sofia, 78 I-95123 Catania, Italy Tel.: +39- 095-7332 111 Fax: +39-095-330592 Sede
                    “Mario G.Fracastoro” (Etna) – Tel +39-095-911580 Fax+39-095-916184
Controllo di un PLC Beckhoff da applicazioni python e realizzazione di esempio su modulo "EL2008"
INTRODUZIONE
Lo scopo del progetto è identificare un metodo per poter controllare da uno script Python un PLC BECKHOFF.
Motivazione del progetto è l’integrazione del PLC nella nuova interfaccia telescopio/spettrografo per lo
strumento CAOS, in uso a Serra la Nave. Il software di controllo dello spettrografo è già esistente e scritto in
Python, e viene eseguito in una workstation collegata alla LAN della stazione osservativa. Volendo utilizzare
il PLC per il controllo delle movimentazioni dell’interfaccia, e in futuro di tutto il controllo dello strumento,
risulta necessario far dialogare tramite gli script Python tutto il sistema. La casa produttrice del PLC (Beckhoff
New Automation technology) non mette a disposizione librerie per python, è stata di conseguenza individuata
una soluzione di public domain (Pyads) di cui è stato studiato il funzionamento. Il progetto di funzionalità è
testato usando un modulo “EL2008”

                            IL PLC, MODULI E PROTOCOLLO ADS
Il PLC (controllore logico programmabile) è un dispositivo usato nell'automazione industriale, è l’elemento
base del sistema di controllo di macchine e processi, questo elabora segnali provenienti da sensori presenti in
un impianto e comanda attuatori che svolgono particolari lavori, si tratta di un apparato progettato e costruito
per poter operare in condizioni critiche di temperatura, umidità, sbalzi di tensioni, ambienti rumorosi e può
rimanere acceso anche per lunghi periodi.
È un vero computer e al suo interno vi è il processore, la ram e l’unità di storage, oltre a tutte le porte i/o per
comunicare con tastiera, mouse, monitor ecc. Come qualsiasi computer vi è installato un sistema operativo. Il
modulo più importante è certamente la CPU (Central Processing Unit) in esso avvengono elaborazione
matematiche e la gestione del PLC. La CPU può contenere uno o più microprocessori, una memoria che
influisce sulla velocità di elaborazione. La Ram contiene la sequenza delle istruzioni di programma e i dati da
elaborare.
In alcuni PLC sono presenti anche memorie di tipo flash che sono supporti di memorizzazione non volatile
elettronici (a stato solido) che possono essere cancellate elettricamente e riprogrammate.
L'interfaccia di I/O (analogica o digitale), serve per rilevare le condizioni operative dell'impianto (sensori,
trasduttori ecc.) e dispositivi per comandare attuatori come i motori elettrici (valvole, elettrovalvole), converte
il segnale elettrico di input in un segnale logico (bit o word) e lo riportano nell'output. Questa trasformazione
o passaggio avviene per mezzo di collegamenti elettrici che prendono il nome di bus dati.
IL PLC, generalmente è di piccole dimensioni e può essere inserito in un quadro elettrico. A questo si collegano
dei moduli che possono gestire motori, frese, sensori, impianti elettrici ed è possibile automatizzare un ciclo di
produzione industriale.

                                                                                                                 2
Controllo di un PLC Beckhoff da applicazioni python e realizzazione di esempio su modulo "EL2008"
FIG1 schema di produzione industriale con un PLC

                                                  Moduli
La Beckhoff Automation produce per i propri PLC dei moduli che servono a pilotare gli attuatori, questi
possono essere montati su una barretta DIN così come il PLC e possono essere di svariati usi, possono pilotare
motori, sensori, I/O ecc
Controllo di un PLC Beckhoff da applicazioni python e realizzazione di esempio su modulo "EL2008"
EtherCAT

I moduli Beckhoff sono collegati al PLC tramite un BUS superveloce denominato EtherCAT (Ethernet per
Control Automation Technology) è un sistema fieldbus basato su Ethernet, inventato da Beckhoff Automation.
Il protocollo è standardizzato in IEC 61158 che è il linguaggio usato dai sistemi Beckhoff ed è adatto sia per le
esigenze di calcolo in tempo reale sia per le tecnologie di automazione. L'obiettivo durante lo sviluppo di
EtherCAT era di applicare Ethernet per applicazioni di automazione che richiedevano tempi di aggiornamento
dei dati brevi (detti anche tempi di ciclo ≤ 100 μs) con bassa jitter di comunicazione (per scopi di
sincronizzazione precisi ≤ 1 μs) e costi hardware ridotti
EtherCAT ha le seguenti caratteristiche:
velocità di trasmissione: 2 x 100 Mbit/s (Fast Ethernet, Full-Duplex)
Tempi di aggiornamento: 256 digitali I/O in 11 μs
1000 digital I/O distribuiti su 100 nodi in 30 μs = 0.03 ms
200 analogiche I/O (16 bit) in 50 μs, 20 kHz Sampling Rate
100 Servo-Axis (ognuno 8 Byte In+Out) in 100 μs = 0.1 ms
12000 digitali I/O in 350 μs.

                                                 Il Protocollo ADS
Un computer remoto può dialogare con un singolo modulo del PLC perché l'architettura del sistema TwinCAT
consente di trattarli come dispositivi indipendenti, i messaggi tra questi oggetti vengono scambiati attraverso
una interfaccia ADS tramite il router di messaggi. Il protocollo utilizzato è ADS (Automation Device
Specification) definisce un insieme di regole che permettono lo scambio di dati tra PLC e moduli ad esso
collegati o tra moduli e moduli. ADS è un sistema di comunicazione basato su messaggi. Questo protocollo
offre la libertà di utilizzare altri strumenti per comunicare con qualsiasi punto in TwinCAT. Se è necessario
comunicare con un altro PC o dispositivo, il protocollo ADS viene utilizzato su TCP/IP. Ciò significa che in
un sistema in rete, tutti i dati sono accessibili da qualsiasi punto desiderato. Per accedere ai dati si utilizzano
delle funzioni che sono contenuti in alcuni librerie, quella utilizzabile dal linguaggio di programmazione Python
è “Pyads”.

                                               AdsAmsNetID
Ogni PC sulla rete può essere identificato in modo univoco da un indirizzo TCP / IP. Nel caso lo scambio di
dati dovesse avvenire tra un personal computer e un modulo del PLC in rete, dovranno mettersi in
comunicazione i router di messaggi TwinCAT, di entrambi, tali router vengono identificati tramite
AdsAmsNetID, questo è un numero che viene creato durante l'installazione di TwinCAT, costruiti
generalmente dall'indirizzo TCP/IP del dispositivo con L’aggiunta ".1.1" (come se fosse una "maschera di
sottorete") . Il PLC del nostro progetto ha l’Internet protocol address 192.168.1.10, il conseguente
AdsAmsNetID del router di messaggi creato ha il numero 192.168.1.10.1.1, il computer remoto che dovrà
gestirlo ha l’IP 192.168.1.151 e il suo router di messaggi costruito è 192.168.1.151.1.1 Tuttavia L'
AdsAmsNetID può essere scelto liberamente purché rispetti le regole della maschera di sottorete.

                                                                                                                 4
Controllo di un PLC Beckhoff da applicazioni python e realizzazione di esempio su modulo "EL2008"
La libreria Pyads

Pyads è un wrapper Python per la libreria ADS di TwinCAT. Ha lo scopo di fornire un modo pioneristico per
comunicare con i dispositivi TwinCAT utilizzando il linguaggio di programmazione Python. Pyads utilizza
l'API C fornita da TcAdsDll.dll su Windows e adslib.so su Linux. Pyads è una pura implementazione in Python
per il protocollo ADS Beckhoff . È possibile inviare comandi ADS tipici come lettura / scrittura su TCP / IP.
Non sono necessarie altre librerie (o TwinCAT su Windows).Twincat e ADS sono sviluppati da Beckhoff
(http://www.Beckhoff .de). Pyads non è affiliato in alcun modo alla casa costruttrice. Pyads non contiene un
router ADS: è progettato per una connessione diretta client-server.

Chiariti questi concetti, non rimane che assemblare i nostri dispositivi.

                                       PROGETTO DI ESEMPIO
Per testare il metodo di controllo del PLC tramite python e Pyads e dare un esempio di funzionamento di un
sistema generico, si vuole realizzare un programmino che da remoto gestisca l’accensione di led collegati ad
un modulo Beckhoff, ripercorriamo qui passo passo le operazioni hardware /software necessarie per installare
tale sistema. In figura 2 lo schema hardware del collegamento dei nostri dispositivi.
                                        Le operazioni da effettuare sono:
   1.   Collegare il PLC e un computer in rete tramite un router-switch e assegnare un IP statico ad entrambi.
   2.   Installare il software di gestione nel PLC.
   3.   Installare il software che configuri il PLC nel computer remoto.
   4.   Configurare il PLC dal computer remoto.
   5.   Installare nel pc remoto il linguaggio di programmazione Python e le librerie.
   6.   Creare il programma in Python, che dal pc remoto, accenda e spenga dei led collegati al modulo
        “EL2008”
Controllo di un PLC Beckhoff da applicazioni python e realizzazione di esempio su modulo "EL2008"
FIG2 progetto da realizzare

                              6
Controllo di un PLC Beckhoff da applicazioni python e realizzazione di esempio su modulo "EL2008"
Il Nostro PLC:

FIG3 Il nostro PLC

ha le seguenti caratteristiche in fig. 4
Controllo di un PLC Beckhoff da applicazioni python e realizzazione di esempio su modulo "EL2008"
FIG4 caratteristiche del nostro PLC

In Tale PLC è installato un Sistema operativo Microsoft xp Service Pack 3.

                                              Modulo “EL2008”
Al CX5020 è collegato un modulo “EL2008” (fig. 5) questo è un terminale che ha 8 canali dalle quali può
fornire una tensione continua di 24 V a carichi che assorbono un massimo 0.5 A. Lo scopo di tale modulo è
quello di poter gestire un massimo di otto dispositivi elettrici sincronizzandoli secondo le esigenze dell’utente
utilizzatore. Questo è possibile programmando il PLC tramite software applicativo o software proprietario della
casa costruttrice.
Le caratteristiche del modulo “EL2008” sono riportate nella figura 7.

                                                                                                               8
Controllo di un PLC Beckhoff da applicazioni python e realizzazione di esempio su modulo "EL2008"
FIG5 Il nostro modulo “EL2008”
Controllo di un PLC Beckhoff da applicazioni python e realizzazione di esempio su modulo "EL2008"
FIG6 Disposizione dei canali dell’“EL 2008”

                                              10
FIG7 caratteristiche tecniche del “El2008”
La configurazione di rete
Abbiamo collegato il nostro PLC tramite cavo di rete Lan Ethernet Cat 6 RJ45 ad un router di rete il quale gli
fornisce un indirizzo IP (Internet Protocol address) fisso che nel nostro caso è: 192.168.1.10. Al router di rete
abbiamo collegato anche un computer remoto a cui è stato dato un IP: 192.168.1.151 (figura 8).

FIG8 schema di rete del nostro progetto

                                    Installare il software di gestione nel PLC
La prima operazione da fare è quella di installare nel controllore logico programmabile un software fornito
dalla casa costruttrice che configuri il sistema e permetta un accesso remoto. La Beckhoff mette a disposizione
un programma chiamato TwinCAT “the Windows Control and Automation Technology”. Nel nostro progetto è
stato utilizzato TwinCat ver 3.1 buld 4020. Il software di automazione TwinCAT rappresenta la piattaforma
integrata per il controllo di funzionalità PLC. Nella versione 3 di TwinCAT, l'engineering viene notevolmente
                                                                                                                  ®
facilitato grazie all'integrazione di tutti i tool in un ambiente di sviluppo basato su Microsoft Visual Studio ,
nel quale vengono integrati i configuratori e l'ambiente di programmazione per IEC 61131. Con C e C++ sono
disponibili altri linguaggi per la programmazione.
 Il programma compresso in formato zip è costituito da 2 file: Il primo “TC31-XAR-Setup.3.1.4020.39.exe”
serve per installare TwinCat nel PLC e il secondo file “TC31-Full-Setup.3.1.4020.39.exe” nel pc gestore. E’
importante che entrambi i dispositivi abbiano installata la stessa versione poiché è stato accertato dai nostri test
che non si ha una comunicazione “perfetta” se si usano file da 2 pacchetti differenti. Il software TC31-Full-
Setup.3.1.4020.39.zip che contiene i 2 files, attualmente può essere scaricato dal seguente link:
https://www.Beckhoff .com/english.asp?download/tc3-download-xar.htm necessita però la registrazione nel
sito. TwinCat è gratuito per 7 giorni, e la licenza può essere rinnovata all’infinito.
Scaricato e posto su una chiavetta TwinCat può essere installato facendo doppio click sul file
“TC31-XAR-Setup.3.1.4020.39.exe”. Si rimanda ad altri testi l’installazione del software “TwinCat” sia nel
PLC che nel pc di gestione, poiché ampiamente documentato in internet
http://ftp.Beckhoff .com/download/software/TwinCAT/TwinCAT3/FirstSteps/TC3_Mini_Booklet_GB.PDF
                                                                                              12
il Pc di gestione
Il computer utilizzato nel nostro progetto che dovrà pilotare il PLC ha le seguenti caratteristiche:
CPU core i3 2,40 ghz
Ram 4,00 GB
Hard disk 500 GB
E vi è installato un sistema operativo Windows 7 64 bit.
Questo è stato collegato al router di rete e gli è stato dato un IP fisso pari al numero: 192.168.1.151.
Anche in questo computer viene installato il software Twincat e precisamente il secondo file del pacchetto
scaricato che ha il nome: TC31-Full-Setup.3.1.4020.39.exe. Facendo doppio click sul file anche nel pc di
gestione viene avviato il wizard.
Il file TC31-Full-Setup.3.1.4020.39.exe alla fine avrà installato sul computer i seguenti programmi:
     Microsoft Visual Studio 2013 Shell (integrated)
     Microsoft Visual Studio 2013 (Isolated)
     Beckoff TwinCat 3.1 (build 4020)
     Beckoff TwinCat 3 Scope
     Beckoff TwinCat PnP Drive

                         Uso di TwinCat del Pc di gestione per configurare il PLC

Come detto in precedenza si dovrà predisporre il controllore logico programmabile a ricevere istruzioni da un
computer o da più pc posti nella stessa rete lan. A questo scopo si utilizzerà l’ambiente di sviluppo Microsoft
Visual Studio 2013 Shell (integrated), installato nel pc di gestione, che si avvierà dopo aver cliccato sulla
relativa icona.
FIG9 New Project

Dal menu File selezionare New Project, figura 9.

                                                   14
FIG10 si sceglie la cartella dove posizionare i files di progetto

Si dà il nome che nel nostro caso è EL2008, e la directory dove saranno posizionati i file del progetto, figura
10.
FIG11 a mbiente di sviluppo

Comparirà un ambiente di sviluppo con una finestra chiamata Solution Explorer con dentro le cartelle del nostro
programma. La principale che porta il nome del progetto e le sottocartelle: SYSTEM, MOTION, PLC,
SAFETY,C++, I/O, figura 11.
Sarà necessario stabilire il collegamento con il PLC e questo si potraà fare selezionando la voce “choose target
system” dalla barra dei menu “TwinCat XAE Base”, si accede dalla freccetta in basso al lato della scritta:
 figura 12.

FIG12 si stabilisce il collega mento con il plc

                                                                                                             16
FIG13 si cerca sulla rete il PLC

Comparirà una finestra titolata “Choose Target System” e bisognerà selezionare il pulsante “Search (Ethernet)”
figura 13.
FIG14 ricerca del PLC tramite hostna me o IP address

Nel caso si conoscesse già l’hostname o l’IP address del PLC basterà inserirlo nel riquadro al lato della label
“Enter hostname/IP” altrimenti bisognerà cliccare sul pulsante “Broadcast Search” per fare una ricerca in rete,
figura 14.

                                                                                                            18
FIG15 schermata che ci conferma che il PLC è stato trovato

Se il PLC è configurato in Ethernet, comparirà la videata di figura 15 e il programma ci dirà:
 1. il nome del PLC
 2. se questo è connesso con il pc di gestione, comparirà una x
 3. L’AmsNetId che ricordiamo è l’indirizzo del router di messaggi del PLC che usualmente è composto
     dall’ indirizzo IP del PLC con l’aggiunta di ulteriori 2 bit generalmente .1.1
 4. la versione di Twincat del PLC
 5. il suo sistema operativo.
Se noi clicchiamo sul pulsante Add Route il Twincat si collegherà al PLC.
FIG16 accesso al PLC tramite username e password

Considerato che il controllore logico programmabile è protetto da un login e una password bisognerà fornire
entrambi per stabilire il collegamento. figura 16.

                                                                                                        20
FIG17 collega mento effettuato

La videata di figura 17 ci conferma che il collegamento è stato stabilito.
FIG18 messaggio di TwinCat

Il Programma si accorge che la piattaforma TwinCat del PLC è del tipo x86 e ci chiede se vogliamo commutare
a quest’ultima, clicchiamo su “si”, figura 18.

                                                                                                        22
Scansione di EtherCAT per aggiungere “El2008” al progetto

FIG19 ricerca del modulo “EL2008” collegato al PLC

Ricordando che lo scopo è quello di programmare i canali di un modulo “EL2008” collegato al PLC, come
prossimo passo è quello di poter aggiungere questo componente al nostro progetto. Questa operazione avviene
automaticamente con alcuni semplici passaggi: Da Solution Explorer nella cartella I/O selezionando con il
pulsante destro del mouse la voce Devices e di seguito scan TwinCat cercherà tutti i dispositivi collegati al
PLC, figura 19.
FIG20 avviso

La videata di figura 20 ci informa che non è sicuro che tutti i dispositivi vengono riconosciuti automaticamente.
Cliccare su Ok

                                                                                                              24
FIG21 scansione dei dispositivi collegati al PLC tramite bus EtherCAT

Il sistema trova dispositivi fieldbus EtherCAT e ci chiede in quale di questi bisognerà fare la scansione per
trovare il modulo “EL2008” collegato. Scegliamo il primo e clicchiamo su ok, figura 21.
FIG22 scansione dei dispositivi collegati

Cliccare su “si”, figura 22.

                                            26
FIG23 dispositivi trovati

La ricerca ha avuto esito positivo e sono stati trovati 2 terminali: “EL2008” che contiene tutti i canali che
vogliamo programmare e un “EL1018” che non è oggetto del nostro studio. Il twincat riconosce
automaticamente i moduli fabbricati dalla BECKHOFF e ci visualizza automaticamente i canali, figura 23.

 Creare le variabili dei canali da esportare per un linguaggio di programmazione esterno

TwinCAT usa per la programmazione il linguaggio standard IEC 61131-3 o gli ambienti di sviluppo con i
linguaggi C e C++ e si potrebbero utilizzare questi, noi per esigenze del progetto useremo il Python.
Fortunatamente TwinCat ci dà la possibilità di condividere variabili sia in lettura che scrittura, che noi gestiremo
con Pyads. Creeremo quindi 8 variabili, una per ogni canale, queste dovranno essere definite dentro un file
main.prg nella directory PLC.
FIG24 inserimento di 8 variabili nel progetto

Iniziamo cliccando con il tasto destro del mouse nella directory PLC, comparirà un menù, scegliere “Add New
Item...”, figura 24.

                                                                                                        28
FIG25 locazione dei files

All’apertura della relativa finestra, scegliere “Standard PLC Project”, inserire il nome e il direttorio dove
saranno posizionati i file. figura 25.
FIG26 creazione delle cartelle

Si creeranno automaticamente delle sotto cartelle: “External Types”, “References”, “DUTs”, “GVLs”, “POUs”
”VISUs” , “Plc Task” e “EL2008 Instance”. Dentro il direttorio “POUs” c’è il file MAIN(PRG) che è quello
dove dobbiamo dichiarare le nostre variabili. figura 26.

                                                                                                      30
FIG27 definire le variabili

Le variabili devono essere dichiarate nel formato IEC1131-3 standard e sono comprese tra le diciture VAR ed
END_VAR, ne creeremo otto una per ogni canale che chiameremo chan1, chan2, chan3, chan4, chan5, chan6,
chan7, chan8. I canali svolgono la funzione di fornire tensione continua elettrica a dei carichi quindi le variabili
fungono da interruttori e non potrebbero essere altrimenti che dei booleani. I programmi PLC operano con nomi
di variabili simbolici, evitando così il verificarsi di effetti collaterali (sovrapposizioni) quando si usano variabili.
Per accedere al livello di input / output, è necessario che il programmatore sia in grado di assegnare un indirizzo
fisso a singole variabili. Questo risultato si ottiene con la parola chiave "AT", che deve essere sempre specificata
quando si dichiara una variabile. La parola chiave "AT" è seguita da numerosi parametri che forniscono
informazioni sulla posizione dei dati (area di input / output o flag) e la larghezza dei dati (BIT, BYTE, WORD
o DWORD).
La dicitura AT %Q*: nel linguaggio IEC1131-3 sta ad indicare che il dato si trova nell’area di output.

Collegare le variabili ai canali
Le variabili cosi come sono state create non sono riferite a niente, per fare in modo che queste vengono collegate
ai canali, bisognerà eseguire una operazione di linking.
FIG28 collega mento delle variabili dichiarate con i canali fisici del modulo “EL2008”

Selezionando Channel 1 del terminale (EL2008) che si trova sotto la cartella a I/O di Solution Explorer e output,
cliccare con il tasto destro del mouse e dal menù che appare selezionare Change Link, figura 28.

                                                                                                              32
FIG29 operazione di linking

comparirà una finestra titolata “Attach Variable Output(Output)” che visualizzerà tutte le variabili dichiarate
nel file “main.prg”, ovviamene si sceglierà la variabile corrispondente al canale, figura 29.
FIG30 operazione effettuata per tutti i canali

L’operazione dovrà essere ripetuta per tutti i restanti canali e relative variabili.

                                                                                       34
FIG31 operazione di linking di tutti i canali

Se nella finestra “Attach Variable Output(Output)” viene spuntata la dicitura “Unused“ le variabili già collegate
non verranno più visualizzate.
Attivare la configurazione, run e login

Adesso il progetto è stato realizzato, affinché possa essere utilizzato bisognerà compilare il tutto.

     FIG32 attivare la configurazione creata

Per attivare la configurazione bisognerà cliccare sull’icona indicata dalla freccia in fig 32.
Ci vorrà qualche secondo e alla fine delle operazioni, apparirà un messaggio che ci chiede se vogliamo riavviare
il sistema twincat in modo running

                                                                                                             36
FIG33 riavviare il si stema

cioè riavviare il sistema locale TwinCAT con la configurazione correntemente attivata, cliccare su ok, figura
33.
FIG34 run mode

Si attiverà così l’icona che ci avverte di essere in run mode e si disattiverà quella del config mode. figura 34.
Ultima operazione è quella di collegarsi con il PLC e trasferire la configurazione del progetto.
Per far ciò bisognerà cliccare sull’icona di login e vedremo attivarsi il quadratino di colore rosso e disattivarsi
quella di colore verde, figura 35.

FIG35 trasferimento della configurazione al PLC

                                                                                                                38
Si vedranno i valori delle variabili che abbiamo creato relativi ai canali, figura 36.

FIG36 valori delle variabili
FIG37 salvataggio del progetto

Non ci resta che salvare il tutto ed uscire, figura 37. Il PLC manterrà questa configurazione finché non sarà
spento. Dopo un periodo di non utilizzo del PLC non sarà necessario rifare il progetto ma basterà accendere il
controllore logico programmabile, avviare TwinCAT ed eseguire le operazioni di attivare la configurazione,
run e login.

                                                                                                           40
Installare Python
Dopo aver configurato il PLC con Twincat e creato le variabili dei canali del modulo “EL2008”, bisognerà
gestire le tensioni di uscita di questi. Come detto precedentemente queste operazioni saranno svolte da un
programmino realizzato in Python. La versione scelta è: python-3.7.0a1-amd64 , scaricabile attualmente dal
sito: https://www.python.org/ftp/python/3.7.0/python-3.7.0a1-amd64.exe. Python soltanto non basta, necessita
un      ulteriore   libreria    chiamata   “Pyads”.    che    è   scaricabile   attualmente     dal    sito:
https://pypi.python.org/packages/ec/7e/93440de4698724f383876af39875dadf82db3a7f8d06a171de554c65a6
9c/Pyads-2.2.6.tar.gz
Il download è un file compresso chiamato: “Pyads-2.2.6.tar.gz” che contiene una cartella”Pyads-2.2.6”.
All’interno del direttorio vi è un file chiamato “setup.py”. L’installazione della libreria avviene avviando il
prompt dei comandi di windows, posizionandosi nella cartella dove è il file setup.py e digitare il seguente
comando: “python setup.py install + enter” La Libreria si installerà nella seguente cartella Python37/Lib/site-
packages/Pyads.

                                 L’ambiente di sviluppo in Python “IDLE”
Per creare un file vuoto in python posizionarsi nella cartella in cui si vuole creare il file, cliccare il tasto destro
del mouse, dal menù che compare scegliere nuovo e poi documento di testo, digitare il nome che si vuole dare
con estensione “.py.”
Python mette a disposizione sia una shell di comandi che consente di eseguire istruzione dopo istruzione, sia
un ambiente visuale che concede di modificare, eseguire, e fare il debug di programmi Python da un’unica
interfaccia: IDLE (Integrated Development and Learning Environment). Per eseguire il programma strutturato
basterà cliccare su Run > Run Module .
Il programmino in Python
Il programma realizzato in Python che ci permette di gestire le uscite del modulo “EL2008” è composto da 2
classi: La prima ”class “GestPLC” permette di collegarsi, controllare il collegamento, leggere i valori dei
canali, modificare le uscite e chiudere in collegamento con il PLC.
La seconda: “ class Mask() ” invece importa l’immagine del modulo “El2008” e su questa disegna i led e i
bottoni che ci permettono di modificare le uscite dei canali.

Questo programma chiamato EL2008.py, funziona solamente se è stata fatta la configurazione tramite
TwinCAT del PLC e se sono state create le variabili e se il sistema è attivato.
EL2008.py esegue i seguenti passi:
  1. Si collega al PLC, se risulta connesso, carica una lista e vi inserisce i valori delle tensioni dei canali in
     quell’istante, altrimenti comunica che il collegamento non è stato stabilito ed esce.
  2. Resta in attesa che venga cliccato un canale, se questo avviene, cambia il valore della tensione es: se
     l’uscita è 0 volt commuta e permette al canale di fornire 24 v o viceversa, aggiorna il valore di quel canale
     nella lista.
  3. Nel caso si dovesse cliccare il bottone di uscita, esce dal programma
Il programma riga per riga

 FIG38 si importano le librerie

 Per prima cosa si importano le librerie:

    1. “tkinter” ci permette di creare interfacce grafiche,
    2.   il modulo “functools” con la sua la classe “partial”, ci permette di impacchettare una funzione
         rimodulandola con parametri aggiuntivi secondo le nostre necessità.
    3. La libreria Pyads è fondamentale per il nostro progetto, fornisce funzioni python per comunicare con
         dispositivi TwinCAT.

 Si creano delle costanti, si crea una lista chan di 8 boolean che si settano a false.
 Si crea una variabile “ConnPlc” che contiene la connessione al PLC identificato dall’ AdsAmsNetID =
 ‘192.168.1.10.1.1’ e dalla porta ‘851’ che per default è quella che stabilisce il runtime di sistema.

Il corpo del programma è il seguente:

                                                                                                        42
FIG39 istruzioni per la connessione

Per prima cosa esegue la funzione connetti() della classe GestPLC se la connessione va a buon fine , esegue la
funzione leggi , disegna la finestra , aggiunge la foto del modulo “El2008”, altrimenti connetti() restituisce un
valore False ed il programma stampa un messaggio a video e comunica che il PLC non è disponibile o non è
stata attivata la configurazione, run-login, quindi esce, figura 40.

FIG40 messaggio di errore se la connessione non è avvenuta
La classe GestPLC :

FIG41 class GestPLC()

La classe GestPLC figura 41, contiene la funzione connetti() che è la prima funzione ad essere eseguita,
“ConnPlc” è la variabile che contiene AdsAmsNetID e la porta del runtime di sistema. “.open()” è una funzione
della libreria Pyads che serve ad aprire la connessione con il controllore logico programmabile , nel caso che il
collegamento non fosse stabilito non viene segnalato alcun errore e quindi non viene eseguita l’except, per far
ciò si usa l’istruzione ConnPlc.read_device_info(), se si riescono a leggere le informazioni del PLC , la funzione
restituisce il valore “True” ,altrimenti except restituisce “False”.
La seconda funzione chiamata “GestPLC.leggi()” scansiona i valori dei canali che attualmente ha il modulo
“EL2008” e con questi riempie una lista chiamata chan. Il riempimento avviene con un ciclo for che legge
tramite la funzione della libreria Pyads “plc.read_by_name(str(MAINchan),Pyads.PLCTYPE_BOOL)” tutti i
valori da chan1 fino a chan8 definite nel PROGRAM MAIN che noi avevamo creato tramite TwinCAT. La
dicitura Pyads.PLCTYPE_BOOL comunica che tali valori sono di tipo boolean.

                                                                                                               44
La classe Mask():

FIG42 class Mask()
Il programma con l’istruzione “win = Tk()” disegna una finestra tkinter, la assegna alla variabile win e le dà il
titolo EL2008 . L’istruzione photo1 = PhotoImage(file="El2008.gif"), carica un’immagine che si trova nella
stessa cartella del file el2008.py e lo assegna alla variabile photo1. Infine esegue la funzione maschera() che si
trova nella classe Mask e gli passa 2 parametri : la finestra e l’immagine.
La funzione maschera(window,foto) disegna sull’immagine passata, 8 bottoni e 8 label che rappresentano i led
che si accendono o si spengono e li posiziona secondo righe e colonne definite da tre liste: rigaled, rigabottoni
e colonna. Disegna inoltre un ulteriore bottone chiamato “chiudi” che se premuto esegue la funzione chiudi()
che interrompe la connessione, non visualizza più la finestra ed esce dal programma.
La chiudi() per arrestare la connessione usa la funzione della libreria “Pyads” close() questa viene richiamata
nella GestPLC.sconnetti() con l’istruzione ConnPlc.close().
Se tale tasto non viene cliccato il programma è in attesa di istruzioni.

FIG43 videata del programmino in python

Cliccando sui pulsanti “chan1-8” si illumineranno i led relativi ai bottoni premuti e le output forniranno la
tensione di 24 volt, ri-cliccando sui stessi bottoni questi si spegneranno e la tensione fornita sarà pari a 0volt.
In pratica se un pulsante viene cliccato , si esegue questa istruzione:
” command=partial(Mask.nomebottone,numero,led) )” che in python significa : esegui la funzione
nomebottone che si trova nella Class “Mask” e passa il numero del canale e il led che dovrà essere illuminato.

                                                                                                                46
FIG44 le funzioni chiudi() e no mebottone()

La funzione Mask.nomebottone controlla il valore che la lista chan ha per quel canale e ne cambia lo stato (True
o False), contemporaneamente esegue la funzione scrivi della classe GestPLC passandogli il nome del canale
e il valore.

FIG45 la funzione scrivi()

La funzione ConnPlc.write_by_name(mainc,chanx, Pyads.PLCTYPE_bool) modifica il valore della variabile
definita nel PROGRAM MAIN che noi avevamo creato tramite TwinCAT . Ricordiamo che ConnPLc
contiene la connessione al PLC e precisamente ConnPlc = Pyads.Connection('192.168.1.10.1.1 ',851).
Il parametro mainc è il nome della variabile da modificare e il suo contenuto è una stringa di cui la
composizione è la somma della stringa “chan” + in numero del canale che stiamo modificando , chanx è il
valore che bisogna assegnare a mainc e Pyads. PLCTYPE_BOOL comunica che mainc è un boolean.
IL listato completo di “El2088.py”

                                     48
FIG46 il programma completo
Puoi anche leggere