Introduzione ai Controllori Logico Programmabili (PLC)

Gli automatismi industriali possono essere realizzati utilizzando due diverse tecniche: la logica cablata o quella programmata.

La prima tecnica a logica cablata consiste nel realizzare l’automatismo collegando elettricamente, secondo uno schema funzionale, gli elementi costituenti l’automatismo stesso cioè bobine, relé, teleruttori, elettrovalvole e temporizzatori, nonché  pulsanti, finecorsa e contatti ausiliari. Con la  logica cablata una qualsiasi modifica della sequenza logica richiede una modifica dei collegamenti con un conseguente impegno temporale ed economico non indifferente.

La tecnica a logica programmata consente la realizzazione degli automatismi mediante programmi invece che con circuiti cablati. Utilizzando tale tecnica il lavoro di cablaggio è ridotto unicamente al collegamento degli ingressi (pulsanti, finecorsa, fotocellule,ecc) e delle uscite (bobine di relé, teleruttori, elettrovalvole ecc). I dispositivi fisici che realizzano la funzione specifica sono sostituiti da un programma immagazzinato nella memoria del PLC. Ogni modifica della sequenza logica può essere fatto in modo semplice e veloce agendo sulle istruzioni del programma senza modificare i collegamenti.

La logica cablata dei sistemi elettromeccanici può quindi essere sostituita con una logica programmata da scrivere di volta in volta in base alle specifiche esigenze che si presentano nel ciclo di vita di un sistema.

I PLC vengono sempre più utilizzati per la realizzazione del blocco di comando elettronico da affiancare alla parte di potenza delle macchine, indipendentemente dalla sua tipologia costruttiva (elettrica, pneumatica, oleodinamica). Questi versatili dispositivi, sono stati ideati per eliminare gli inconvenienti caratteristici della logica a relè. Sfruttando le grandi potenzialità offerte dalla tecnologia elettronica e in particolare dai microprocessori, si hanno a disposizione prestazioni impensabili per qualsiasi apparecchiatura elettromeccanica: elaborazione di segnali analogici, esecuzione di operazioni matematiche, memorizzazione di dati, visualizzazione dei dati mediante unità periferiche   (monitor e stampanti),  trasferimento di dati mediante rete ad altri PLC o ad entità elettroniche di livello superiore, come server o PC supervisori.

Costituzione

Schematicamente il PLC è un sistema composto di due parti tra loro profondamente e concettualmente diverse:

L’insieme materiale dei circuiti elettronici delle apparecchiature (hardware), ossia  la parte “pesante, materiale”; l’hardware rappresenta tutto ciò che di fisico vi è nel PLC e nelle apparecchiature ad esso collegate.

L’insieme  immateriale delle istruzioni che formano il programma dell’utente sulla base delle esigenze specifiche (software) ossia “la parte leggera e immateriale”; il software rappresenta tutto ciò che riguarda la programmazione e tutto ciò che non è hardware.

L’hardware di un controllore programmabile è costituito da alcune componenti fondamentali:

Alimentatore

Questo modulo permette di generare le tensioni di alimentazione per tutte le schede che compongono il PLC (in genere +5VDC, +15VDC e -15VDC) partendo da una sorgente di alimentazione ausiliaria (24VDC, 115VAC oppure 230VAC) che spesso alimenta anche altri carichi.Nella figura sottostante appare la foto dell’unità di alimentazione utilizzata in laboratorio.

Tra le caratteristiche principali possiamo ricordare
Tensione di ingresso     220 V alternata
Tensione di uscita        24 V continua
Corrente erogata          5 A
Ondulazione residua     150 mV

 

Unità centrale CPU

La CPU è una scheda basata su processore, memorie, interfacce di generazione e gestione del bus verso i moduli periferici. E’ fornita di un sistema operativo residente che si occupa di fornire un ambiente real-time strutturato, robusto e affidabile per l’esecuzione del programma applicativo. La CPU inoltre si occupa della gestione di particolari funzioni di diagnostica (stato batteria tampone, check sum iniziale delle memorie, …), della gestione dei temporizzatori interni e di implementare il protocollo per mezzo del quale, tramite l’apposito pacchetto di sviluppo, è possibile trasferire e testare i programmi.

La CPU di un PLC può operare in due diversi modi:

- STOP (detto anche PROG o TERM)

- RUN

Nella modalità STOP la CPU non esegue il programma applicativo, ma può solo ricevere comandi da un’unità di programmazione (tipicamente un PC) per la configurazione, la memorizzazione del software applicativo e la diagnostica. Nella modalità RUN il programma applicativo, preventivamente scaricato nella CPU, viene fatto eseguire sotto il controllo del sistema operativo residente e rimane memorizzato anche a seguito di mancanza di tensione di alimentazione.

Quando si avvia la modalità RUN, il sistema operativo esegue delle procedure di inizializzazione, quindi entra in un modo di funzionamento ad architettura ciclica, detto ciclo di funzionamento della CPU.

 

 

Il programma applicativo deve essere eseguito dall’inizio alla fine senza punti di attesa.

Le immagini di processo non sono altro che variabili nelle quali viene memorizzato il valore degli ingressi logici all’inizio del ciclo o sulle quali si lavora proprio come se si trattasse delle uscite logiche ma che vengono effettivamente scaricate sulle uscite fisiche alla fine del ciclo; corrispondono quindi allo stato “congelato” dei segnali di ingresso e dei segnali di uscita. Di conseguenza, gli ingressi logici vengono letti una sola volta durante il ciclo di scansione e memorizzati in apposite variabili, dette immagini di processo di ingresso (IPI). Analogamente il programma applicativo non agisce direttamente sulle uscite, ma su variabili immagine di processo delle uscite (IPU) e solo alla fine del ciclo di scansione le uscite vengono effettivamente modificate in base al valore delle IPU: così se il programma applicativo setta e poi resetta un’uscita, in realtà è solo la IPU che viene settata e poi resettata mentre l’uscita verrà solo posta a zero alla fine del ciclo di scansione.

Grazie alle IPI e IPU gli ingressi vengono letti solo ad inizio ciclo e le uscite possono cambiare solo a fine ciclo. In questo modo si irrobustisce il sistema evitando situazioni indeterminate in cui non si sa bene cosa faccia.

Tornando al ciclo di scansione, il programma applicativo viene eseguito in sequenza e quindi le istruzioni vengono interpretate ed eseguite nell’ordine in cui sono state inserite nel programma.

La foto seguente mostra una delle CPU utilizzata dal PLC S300 utilizzato in laboratorio; si tratta della 312C. Si possono notare anche le caratteristiche tecniche.

Memorie

Il sistema operativo del PLC, risiede in memoria non volatile. Il programma applicativo, così come i dati di configurazione della CPU (Es. parametrizzazione dell’interfaccia di programmazione), deve poter essere modificato dall’utente e contemporaneamente ritenuto in assenza di alimentazione e protetto da problemi ambientali come le sovratensioni.

Per quanto riguarda i dati, questi vengono memorizzati in RAM, opportunamente sostenute da batterie tampone per preservare i dati nel caso di mancanza di alimentazione. Tuttavia molti PLC permettono di suddividere questi dati, in modo fisso o impostabile, in volatili (o non ritentivi) e non volatili (o ritentivi). Nel primo caso i dati vengono azzerati ad ogni avviamento del programma (per esempio alla accensione del PLC) mentre gli altri vengono mantenuti nello stato che avevano prima dell’arresto.

I temporizzatori o timer sono elementi che conteggiano il tempo in incrementi dt (dt=1ms/10ms/100ms). In particolare è possibile precaricare un temporizzatore (costante di tempo) e associare un evento all’istante in cui avrà valore zero; il firmware (software già residente - sistema operativo del PLC), in modo trasparente, si occuperà di decrementarlo fino a 0. Il timer può essere abilitato, riportato nella condizione di partenza, fermato,...Lo spazio RAM dedicato ad un timer è costituito da due elementi:
- valore corrente: numero intero a 16 o 32 bit che memorizza la costante di tempo residua del timer
- bit di temporizzazione: indica se il timer ha raggiunto o meno lo zero e può essere utilizzato per abilitare operazioni (“dopo che è passato questo tempo fai...).
Un contatore è invece un contatore di eventi relativi ad un segnale esterno. Vi sono contatori che contano solo in avanti, contatori che contano solo in indietro e contatori bidirezionali. I contatori possono essere testati, impostati, azzerati, attivati e bloccati dal programma. Lo spazio RAM dedicato a un contatore è anche in questo caso costituito
da due elementi:

- valore corrente: numero intero a 16 o 32 bit che memorizza la costante di tempo residua del timer.
- bit di conteggio: indica che il valore preimpostato è stato raggiunto.
Oltre ai normali contatori vi sono i contatori veloci, che hanno la funzione di conteggiare eventi veloci rispetto al ciclo di scansione: si tratta di variabili a 32 bit.

Moduli di I/O

Questi moduli si dividono in digitali e analogici.

I moduli digitali permettono di connettere direttamente al PLC i trasduttori e gli attuatori digitali posti sul campo. Finecorsa, sensori induttivi, sensori capacitivi, pulsanti, selettori e tutto quanto fornisce un segnale digitale verrà connesso alle schede d’ingresso mentre relè, elettrovalvole, spie di segnalazione e tutto quanto viene comandato da un segnale digitale verrà connesso alle schede di uscita. Sia i moduli di ingresso che quelli di uscita possono avere un parallelismo di 8, 16, 32 o 64 punti di I/O e possono esistere moduli misti di ingresso e uscita (per esempio 16 ingressi e 16 uscite sulla stessa scheda).

I moduli analogici  permettono di connettere direttamente al PLC i trasduttori e gli attuatori analogici posti sul campo. Potenziometri, dinamo, sistemi estensimetrici, celle di carico, sensori di pressione e tutto quanto fornisce un segnale analogico verrà connesso alle schede d’ingresso mentre, indicatori da pannello e tutto quanto viene comandato da un segnale analogico verrà connesso alle schede di uscita. Sia le schede di ingresso che quelle di uscita possono avere un parallelismo di 2, 4, 8 o 16 punti di I/O e possono esistere schede miste di ingresso e uscita (per esempio 4 ingressi e 2 uscite sulla stessa scheda). Si ricorda che in ogni caso non può essere superato il massimo numero di punti di I/O analogici previsti nella dimensione delle variabili di appoggio.

Vi sono poi interfacce per il rilevamento di soglie analogiche, che permettono di sorvegliare l’andamento di una grandezza analogica in rapporto a dei limiti (o soglie), regolabili dall’utente.

Il Software

E’ fondamentale puntare sulla semplicità di programmazione dei PLC: i programmi devono risultare semplici, affidabili e ben documentati in quanto soggetti a frequenti modifiche.

I PLC di tipo compatto o espandibile vengono comunemente programmati con un linguaggio di programmazione che fa uso di tre diversi modi di rappresentazione:

- Instruction List (lista di istruzioni) - AWL
- Ladder diagram (schemi a contatti) - KOP
- Function block diagrams (schema elettrico funzionale) - FUP

La modalità da noi utilizzata è stata proprio la prima.

AWL

 

Ogni programma è costituito da una sequenza di elementari istruzioni di lavoro per la CPU del PLC. Quindi un programma è un elenco di istruzioni, la cosiddetta “lista istruzioni”, abbreviata in AWL. Quest’ultime sono strutturate nello stesso modo: la prima parte comunica al controllore l’azione da compiere (operazione), la seconda parte comunica l’oggetto dell’azione richiesta (operando).

 

Un operando è composto da una sigla come ad esempio E (indica gli ingressi digitali) oppure A (Uscite digitali) e da un parametro composto da due numeri il primo indica il numero del Byte di memoria dove l’immagine degli ingressi o delle uscite é costruita; il secondo il bit di interesse.

Ogni riga di un programma rappresentato con AWL costituisce un’istruzione.

La lista di istruzioni (AWL) rappresenta quindi le funzioni con abbreviazioni mnemoniche. Vediamone alcune:

Gli operandi  possono essere:

-E       Ingressi                Interfacce con processo

-A       Uscite                  Interfacce con processo

-M       Merker                  Memoria per risultati binari intermedi

-D       Dati                     Memoria per risultati numerici intermedi

-T       Temporizzatori       Memoria per l’implementazione di temporizzatori

-Z       Contatori              Memoria per l’implementazione di contatori

Vediamo alcuni simboli mnemonici  con il relativo significato.

U        AND

UN      NAND

O        OR

ON      NOR

S        SET (di una variabile, di un flag, di un tempo, di un contatore)

R        RESET (di una variabile, di un flag, di un tempo, di un contatore)

=        Assegnazione

L         Caricamento

T        Trasferimento

 

SI        Attivazione di un tempo come impulso(monostabile con uscita a 1 a partire dall'attivazione del segnale di ingresso per un tempo Tx, quindi uscita a zero)

 

SE       Attivazione di un tempo come ritardo all'inserzione (monostabile con uscita ancora a 0 a partire all'attivazione del segnale di ingresso per un tempo Tx, quindi se l'ingresso è ancora attivo, l'uscita va a 1)

 

SA       Attivazione di un tempo come ritardo alla disinserzione (monostabile con uscita a 1 per un tempo Tx dopo che l'ingresso è andato a 0)

ZV       Conteggio in avanti di un contatore (+1 se l'ingresso è a 1)

ZR       Conteggio all'indietro di un contatore (-1 se l'ingresso è a 1) Inoltre sono definiti i vari operatori matematici più comuni come somma sottrazione  operazioni di confronto etc.

Un esempio è la realizzazione della funzione logica

(A1.5) = (E0.2&E0.4) + (E0.1&E0.3)

U E0.2

U E0.4

O

U E0.1

U E0.3

= A1.5

Tale linguaggio è fortemente orientato alla macchina.

KOP (LADDER DIAGRAM)

 

Programmazione con simboli grafici come in uno schema funzionale. Lo schema a contatti (KOP), il più classico linguaggio per PLC, rappresenta il programma in forma grafica, utilizzando le connessioni serie e parallelo, secondo un ipotetico flusso di corrente che va da sinistra a destra (ladder). Questa modalità di rappresentazione è molto legata alla cultura degli addetti ai lavori dato che fornisce un equivalente allo schema elettromeccanico. I primi PLC si potevano programmare esclusivamente in linguaggio ladder. Il linguaggio ladder fornisce una descrizione a contatti delle funzioni logiche da implementare, in accordo a come si é soliti documentare le logiche implementate a relais (linguaggio orientato al personale di formazione elettrotecnica): il programma consta di più segmenti formati ciascuno da una fila di elementi di base (contatti, bobine,…). Per realizzare la solita semplice funzione booleana si farà:

 

FUP

 

Lo schema logico (FUP) rappresenta il programma come se venisse realizzato mediante circuiti digitali identificati secondo la simbologia standard ANSI/IEEE Std.91.

In pratica si procede a una programmazione con blocchi grafici.

Per realizzare, ad esempio, una semplice funzione booleana  

Il linguaggio FUP è un linguaggio pseudografico che in genere non viene adottato di frequente in quanto non offre le potenzialità del linguaggio a lista di istruzioni, nè l’immediatezza del linguaggio a contatti. Inoltre il linguaggio grafico rappresenta processi concorrenti e sequenziali, mentre il programma di un PLC viene sempre eseguito in modo sequenziale.

 

Quale è la migliore metodologia rappresentativa? Dipende da cosa si deve realizzare. Il Ladder (KOP) è potente nello schematizzare reti combinatori, reti sequenziali, varie combinazioni di IO Merker etc. Risulta idoneo per rappresentazioni di schemi a contatti. AWL è il tipico linguaggio simbolico, adatto a effettuare operazioni complesse sui dati (trasferimenti di blocchi..), ad implementare algoritmi, per realizzare funzioni matematiche. FUP rappresenta la classica programmazione attraverso schemi funzionali rivolta a personale di estrazione elettronica. Tutti e tre questi linguaggi sembrano comunque adatti alla rappresentazione di funzioni semplici e quindi trovano vasta applicazione nei PLC compatti e espandibili.