Benvenuto in questo tutorial di programmazione per i PLC Schneider della famiglia Modicon, oggi parliamo dell’organizzazione del programma, una delle fasi più importanti della progettazione di ogni sistema d’automazione.
I PLC Schneider si programmano con il software Logic Builder di EcoStruxure Machine Expert, e all’interno del progetto possiamo scegliere tra i vari controllori, dal piccolo M241, al performante M262, comprese tutte le unità disponibili in ogni famiglia di processori.
Indipendentemente dalla taglia di PLC scelto, è possibile organizzare il software in modo che sia più semplice da scrivere, da leggere e da provare.
Architettare il software per il plc.
Cosa significa architettare il software per il plc? Prima di tutto dobbiamo osservare l’impianto che vogliamo automatizzare ed eventualmente scomporlo in diverse aree, in questo modo possiamo creare dei pezzetti di software che si occupano ognuno di un compito specifico.
In Logic Builder possiamo dividere il software in diverse sezioni, e se vogliamo possiamo anche includere nel progetto diversi programmi, per mantenere diverse versioni del software, pronte per essere utilizzate in caso di necessità.
Tornando alle sezioni, in un impianto di tipo alimentare potremmo per esempio avere una sezione per la produzione, una per la gestione generale dell’impianto, e una per la gestione dei lavaggi; più l’impianto è grande, più risulterà comodo avere pezzi di software separati e facilmente consultabili.
Nell’immagine che segue vediamo l’applicazione del plc “Application”, la quale contiene una sezione di programma di gestione generale, una per i lavaggi, una per la produzione, e una per la gestione di ingressi e uscite analogici.
Logic Builder ci mette a disposizione diversi linguaggi di programmazione per i PLC, a seconda del modello di controllore che utilizziamo, sicuramente il linguaggio Ladder LD ma anche quelli FBD (a blocchi di funzione), e tutti gli altri identificati nella IEC 61131-3 (IL e SFC compresi).
La scelta del linguaggio dipende da diversi fattori come il tipo di funzione da realizzare, e in alcune situazioni si sceglie il linguaggio in base alla richiesta del cliente; in ogni caso possiamo anche optare per utilizzare linguaggi diversi nello stesso programma del controllore.
Funzioni utente predefinite: personalizzare il programma.
Programmando in EcoStruxure Machine Expert abbiamo la possibilità di creare delle funzioni riutilizzabili, per esempio per svolgere la stessa operazione diverse volte (con più chiamate all’interno del programma), senza dover riscrivere le stesse istruzioni; queste funzioni possono essere di tipo “Funzione” o di tipo “Blocco Funzionale”.
Schneider mette a disposizione anche diverse librerie di funzione scaricabili, le funzioni possono essere costruite nel linguaggio a nostra scelta, e sono definibili con i parametri necessari che vengono di volta in volta passati alla funzione durante la chiamata alla stessa nel programma.
Le funzioni personalizzate si possono esportare e riutilizzare in diversi programmi, per mezzo del modello PlcOpen XLM, uno standard IEC61131-10 che permette lo scambio di funzioni, librerie e progetti tra ambienti di sviluppo diversi.
Nella prossima immagine vediamo una funzione utente chiamata “FB_Controllo_Stati_Valvole” che controlla lo stato di un ipotetico oggetto in campo di tipo valvola. Notiamo che nel programma “Gestione_Generale” viene richiamata tre volte la funzione personalizzata.
A ogni richiamo della funzione viene anche creata una zona di memoria chiamata “istanza” per permettere alla funzione di lavorare in maniera distinta per ogni richiamo.
La gestione delle variabili nei processori Schneider.
Per poter rappresentare il processo da automatizzare e lavorare con il programma del PLC, è necessario definire le variabili del programma, le quali possono essere interne al processore, oppure collegate a punti I/O del campo (ingressi e uscite digitali e analogici).
Per esempio, un oggetto fisico come una valvola pneumatica potrà essere rappresentato nel programma come alcuni bit di dati: un booleano per l’uscita (attivazione), un booleano per il feedback di chiusura, uno per quello di apertura, e un ulteriore dato a bit per lo stato di allarme.
Per quanto riguarda valori di processo come temperature, pressioni, livelli e così via, avremo variabili di tipo numerico (intere o reali).
Nei processori Schneider la memoria viene gestita con diverse aree collegate agli ingressi e uscite fisici da e verso il campo, troviamo l’area “I” per gli ingressi, e l’area “Q” per le uscite.
EcoStruxure ci permette di creare dei simboli e associarli agli indirizzi di memoria, in modo da poterli richiamare più facilmente utilizzando nomi che per noi hanno un significato. Possiamo definire simboli globali, i quali sono utilizzabili in comune in tutto il progetto, oppure locali, il cui valore è utilizzabile solamente all’interno del programma in cui sono dichiarati.
Nell’ambiente di programmazione Schneider possiamo definire anche variabili interne, che non sono quindi collegate a ingressi e uscite fisiche del controllore, e che vengono usate per l’elaborazione del programma, per esempio per effettuare calcoli matematici o memorizzare stati.
Nell’immagine che segue vediamo la schermata in cui sono state dichiarate alcune variabili per il funzionamento della routine “Gestione_Generale”. Nella dichiarazione scegliamo un nome per la variabile e il tipo di dato, se vogliamo possiamo anche inserire dei commenti.