Quali sono i linguaggi di programmazione dei PLC utilizzati nell’automazione industriale? Perché ci sono diversi modi di scrivere il software? Esiste un linguaggio di programmazione dei controllori logici programmabili migliore degli altri?
Benvenuto nella mia scuola d’automazione industriale, ci troviamo all’interno del corso gratuito di programmazione plc e in questa lezione parleremo proprio di uno degli aspetti fondamentali da affrontare quando dobbiamo creare un sistema d’automazione: quale linguaggio adottare per produrre i programmi e le funzioni che controlleranno il nostro sistema per mezzo dei plc.
Ecco gli argomenti di questa lezione:
I linguaggi di programmazione PLC definiti nella norma IEC 61131.
Linguaggio Diagramma Ladder LD per PLC.
Linguaggio a Blocchi di funzioni FBD per PLC.
Linguaggio di testo strutturato ST per PLC.
Linguaggio di programmazione a lista d’istruzione IL per PLC.
Linguaggio di programmazione a grafico di funzioni sequenziali SFC per PLC.
Combinazione dei linguaggi nelle stesse applicazioni.
La scelta del linguaggio di programmazione più adatto.
Quando si parla di controllori programmabili, che si tratti di apparecchiature per l’industria o per l’informatica, il linguaggio usato per la programmazione assume un ruolo fondamentale.
Pensiamo a ciò che possiamo trovare nel settore dell’informatica, i linguaggi di programmazione sono tantissimi e si passa da linguaggi classici e d’utilizzo generico come il C e tutte le sue evoluzioni, a linguaggi dedicati a specifiche aree di programmazione, come quelli per il web.
Ogni linguaggio mette a disposizione funzioni che lo rendono più produttivo in certe cose e meno in altre; da questo punto di vista con i plc avviene la stessa cosa, o meglio avveniva la stessa cosa, poiché ormai oggi i linguaggi a disposizione per questi processori, pur essendo diversi offrono in pratica la stessa possibilità in termini di funzioni che possiamo far svolgere alla nostra unità centrale.
I linguaggi di programmazione PLC definiti nella norma IEC 61131-3.
Nel 1993 la IEC (commissione internazionale elettromeccanica) pubblica la prima norma che cerca di fare chiarezza e definire uno standard riguardo all’utilizzo dei plc e alle funzioni che questi possono svolgere. Questa norma è divisa in diverse parti e la sezione riguardante i linguaggi di programmazione è la parte numero tre.
Nella sezione tre della IEC 61131 troviamo tutto ciò che concerne i tipi di dati adottati nella stesura dei programmi, i tipi di variabile, la configurazione e altro; per quanto riguarda i linguaggi di programmazione ne vengono identificati cinque, vediamo in cosa consistono.
Linguaggio Diagramma Ladder per PLC (LD).
Abbreviato con la sigla LD che sta per ladder logic diagram, questo è un linguaggio la cui grafica è simile a uno schema di tipo elettrico. Le istruzioni vengono inserite su rami orizzontali e ognuno di essi può contenere funzioni elementari come contatti chiusi e aperti, bobine e bobine con auto ritenuta (latch); oppure istruzioni più complesse chiamate “box”, che possono essere per esempio operazioni matematiche, logiche, temporizzatori, contatori e molte altre.
Sui rami del linguaggio ladder possiamo inserire anche delle funzioni molto complesse che i diversi ambienti di programmazione mettono a disposizione oppure che noi stessi possiamo creare e “impacchettare” utilizzando il linguaggio che preferiamo.
Nel linguaggio ladder possiamo creare dei paralleli sui rami e commentare le istruzioni e i rami stessi per una migliore lettura e comprensione del programma.
Questo modo di programmare è molto diffuso ed è apprezzato per la semplicità in fase di debug e di gestione da parte dei manutentori delle fabbriche; spesso essi hanno competenze di elettrotecnica più che di informatica, per questo il linguaggio ladder offre loro un ambiente più familiare proprio perché somiglia a uno schema elettrico.
Ecco nella prossima immagine una schermata di diagramma a reti logiche per plc. Notiamo i paralleli sui rami, i contatti chiusi e aperti, le bobine e dei box.
Linguaggio a Blocchi di funzioni per PLC (SFB).
Questo linguaggio, il cui nome si abbrevia con la sigla FBD che sta per Function Block Diagram, utilizza blocchi di funzione che vengono inseriti in cascata nel programma. In linea di principio ogni blocco rappresenta una funzione che raccoglie uno o più input (ingressi) e genera una o più output (uscite); l’uscita di un blocco di funzione può anche diventare ingresso di un’altra funzione.
I programmi a blocchi di funzione sono generalmente più semplici da comprendere da parte dei non addetti ai lavori rispetto al linguaggio ladder, su una stessa schermata si può avere una visione molti più ampia delle operazioni svolte dal software, mentre il ladder ha una scrittura molto più prolissa e spesso in fase di ricerca malfunzionamenti. Con il ladder, per capire ciò che sta accadendo è necessario saltare in molti punti del software e ricostruire le operazioni che il programma svolge.
Detto questo, quando la logica del linguaggio FBD è complessa risulta anch’essa di difficile comprensione da parte di chi non è abituato.
Linguaggio di testo strutturato per PLC (ST).
Anche i linguaggi per programmare i plc si sono evoluti e oggi somigliano a linguaggi più classici come il pascal, il C++, il Phyton e così via.
Il linguaggio il cui nome viene abbreviato con la sigla ST (structured text) è il linguaggio per controllori logici programmabili molto apprezzato dai di chi sa programmare software per computer in altri ambiti.
Come dice la definizione stessa, il linguaggio di testo strutturato contiene parole che rappresentano variabili e istruzioni, messe insieme come in un “discorso”.
Il linguaggio ST è poco comprensibile per i non addetti ai lavori ma è probabilmente il più potente.
Ecco un esempio di software programmato con questo linguaggio, lo troviamo nella prossima immagine.
Linguaggio di programmazione a lista d’istruzione per PLC (IL).
Il linguaggio di programmazione plc a più basso livello si chiama a lista di istruzioni, la sigla inglese è IL (instruction list), e rappresenta il linguaggio per plc più simile all’assambler che veniva utilizzato per programmare i personal computer.
Questo linguaggio è molto difficile da comprendere da chi non lo conosce, eppure tantissimi programmatori di plc, soprattutto plc Siemens, hanno utilizzato e utilizzano questo modo di scrivere i software.
Nel mondo Siemens questo linguaggio si chiama AWL, così come il ladder si chiama KOP, e il linguaggio a blocchi di funzioni FUP. L’AWL rappresenta per molti programmatori l’unico linguaggio che conoscono.
In passato c’erano alcuni vantaggi a utilizzare il linguaggio IL poiché alcune funzioni erano disponibili solo con questo, oggi però gli altri linguaggi si sono talmente evoluti che in pratica tutto ciò che si può fare con un linguaggio si può ottenere anche con gli altri; la scelta di quale modo di scrivere adottare è meno vincolata.
Ecco un esempio di linguaggio a lista di istruzioni nella prossima immagine.
Linguaggio di programmazione a grafico di funzioni sequenziali per PLC (SFC).
L’SFC (sequential function chart) è un linguaggio simile ai diagrammi che vengono utilizzati per definire gli algoritmi di funzionamento dei processi e non solo.
Questo tipo di diagrammi viene impiegato non oltre che in informatica, ogni qualvolta è necessario definire una sequenza di azioni da svolgere in base a certe condizioni; vediamo un esempio di SFC program nella prossima immagine.
Il linguaggio SFC è di più semplice comprensione per i non addetti ai lavori, poiché permette di avere una visione più globale delle operazioni che vengono svolte e delle varie condizioni di test che determinano le ramificazioni e la direzione del programma.
Combinazione dei linguaggi nelle stesse applicazioni per plc.
Progettando un sistema d’automazione con plc non si è costretti a impiegare un solo linguaggio per tutte le routine incluse nel software. Oggi abbiamo la possibilità di scrivere qualcosa in un linguaggio e qualcos’altro in altri linguaggi; il plc sarà in grado di eseguire tutto tranquillamente una volta che le varie parti vengono richiamate nel programma.
Questo modo di combinare i linguaggi è molto potente poiché ci permette per esempio di sviluppare delle funzioni personalizzate in un linguaggio a noi più congeniale come quello di testo strutturato, e richiamarle durante la stesura di un diagramma ladder come se fossero un qualsiasi box aritmetico o logico. Sarà sufficiente fornire ingressi e uscite se richiesti dalla funzione e il gioco è fatto.
La scelta del linguaggio di programmazione del plc.
Come abbiamo visto in questa lezione i linguaggi di programmazione offrono una grafica e una rappresentazione delle operazioni diversa. Nella scelta di quale linguaggio impiegare occorre valutare sia la nostra esperienza che le necessità del processo.
In certi casi il programmatore potrebbe dover adattarsi alle richieste del cliente, infatti alcuni di questi impongono di avere il software scritto in un certo modo, specialmente se si tratta di clienti grossi che hanno parecchi plc nei loro stabilimenti e cercano di standardizzare oltre che le apparecchiature anche i software.
Concludiamo questa lezione sui linguaggi di programmazione per plc riproponendo l’immagine di testa che rappresenta le stesse poche istruzioni scritte nei cinque linguaggi di cui abbiamo parlato oggi; riuscite a capire che cosa esegue questo programma?