Benvenuto in questo tutorial dedicato all’automazione industriale con Python, oggi vedremo come con questo linguaggio possiamo facilmente creare un Soft Plc, ovvero un plc software, che gira sul computer, e svolge le funzioni che solitamente vengono svolte da apparecchiature hardware dedicate.
Allegato a questa pagina trovi (in fondo) il video con la dimostrazione di tutto ciò che viene descritto nei prossimi paragrafi.
Nel mondo dell’automazione industriale, la maggior parte delle funzioni di controllo di processo vengono svolte dai hardware dedicato (PLC o DCS). Nell’ultimo periodo tuttavia, stiamo assistendo alla nascita e alla diffusione di plc software, soprattutto per quanto riguarda la piattaforma Codesys.
Oggi qualsiasi computer con il sistema operativo Windows, oppure Linux, può eseguire un runtime che interpreta il programma scritto in uno dei linguaggi per PLC, facendo in modo che il computer esegui ciò che normalmente fa un plc vero.
Questo è vero per i soft plc Codesys che girano per esempio su Raspberry, ma è altrettanto vero per altri software, o come vedremo a breve, semplicemente per alcuni linguaggi di programmazione.
Con il linguaggio Python abbiamo a disposizione diverse librerie, tra le quali la PyModbusTCP; questa libreria contiene un modulo client e uno server, i quali ci permettono rispettivamente di leggere e scrivere dati da e verso apparecchiature modbus, oppure di mettere a disposizione i dati verso dei clients, ad esempio pannelli operatore HMI o sistemi di supervisione SCADA.
Oggi mostriamo come utilizzando il modulo client della libreria modbus, siamo in grado di controllare apparecchi I/O modbus, eseguendo la logica PLC all’interno del computer su cui Python è installato.
Nella prossima figura troviamo lo schema logico di funzionamento di un soft PLC.
Come vediamo nella figura sopra, il programma deve leggere gli ingressi dal campo (in questo caso da moduli I/O modbus), elaborare la logica di programma, e infine scrivere le uscite sui moduli in campo.
Oltre alle operazioni descritte sopra ci sono naturalmente anche altre operazioni necessarie a far funzionare il programma, come per la gestione dei timers e dei contatori; per il momento ci focalizziamo sulle macro funzioni.
Ecco nella prossima figura l’importazione della libreria modbus per Python, e la creazione della connessione modbus client con l’apparecchiatura in campo.
Nel programma d’esempio abbiamo creato una semplice logica booleana che attiva un’uscita a fronte di un AND di due ingressi, e il controllo di un ingresso analogico, con attivazione di altre due uscite: la prima immediatamente quando questo supera il valore di 800, e la seconda quando supera 400 e contemporaneamente è presente un ingresso digitale.
Nella figura che segue vediamo la parte di programma, in linguaggio Python, che gestisce un’uscita digitale, quella con l’AND dei due ingressi.