Architettura
L'architettura classica di un PLC è simile a
quella di un computer (vedi slide): c'è una CPU, degli elementi d’ingresso e
uscita, ed una memoria.
Per quanto riguarda la memoria, abbiamo:
Una parte a sola lettura,
deputata a contenere sia il sistema operativo, sia il programma di
controllo da far eseguire al PLC (ad ogni avvio il PLC va a leggere questa
memoria per sapere quale programma deve eseguire; in altre parole potremmo dire
che questa la memoria sta al PLC, pressappoco come “ROM + hard disk” stanno ad
un PC). La parte di memoria deputata a contenere il programma di controllo,
può essere fisicamente realizzata con memorie:
ROM; va sostituita ogni volta che si deve modificare il programma.
PROM; può essere facilmente programmata (con l'ausilio di un opportuno
programmatore di prom), ma si può fare una sola volta, dopodiché, se si vuole
ulteriormente modificare il programma, deve essere sostituita anche lei.
EPROM; sono delle memorie ‘rom’ che è possibile ‘riprogrammare’ per un
numero finito di volte (come le ‘eeprom’), consentendo la modifica del
programma senza imporre la sostituzione della memoria.
Per i PLC, come per tutti i sistemi basati su microprocessore, non è detto
che convenga utilizzare sempre una EPROM, perché queste hanno ovviamente un
costo leggermente superiore, non sono adatte a tutte quelle applicazioni in cui
occorre produrre, su vasta scala, un PLC standard, con un programma ben
definito, che non dovrà essere modificato per tutta la vita del componente. A
titolo di esempio, si pensi ai PLC o ai microcontrollori, che progettati per equipaggiare un particolare
modello di elettrodomestico: a livello di prototipazione sarà opportuno
utilizzare una ‘prom’, mentre per la produzione in vasta scala converrà
acquistare delle ‘rom’ già opportunamente programmate dal produttore.
Una parte anche riscrivibile:
RAM; utilizzata per memorizzare le variabili temporanee, necessarie
all'elaborazione (nei PLC queste locazioni sono normalmente fisse).
Riassumendo: principali
differenze tra un PLC ed i più comuni sistemi a microprocessore ad architettura
simile, sono:
Nella realizzazione delle parti; il PLC monta un microprocessore in genere più
“semplice” di quello di un PC, che utilizza una memoria a sola lettura in luogo
dell’hard disk, ed è equipaggiato con una minore quantità di RAM (bastano anche
500 Kb, o comunque memorie dell'ordine di un centesimo di quelle usate dai PC).
Nel linguaggio utilizzato (“naturale” e sistema operativo); nei PLC si utilizzano linguaggi
elementari, di solito simile all’Assembler dei PC.
Gestione degli I/O
I PLC sono anche
caratterizzati da una particolare gestione d’ingressi ed uscite, che possiamo
riassumere nei seguenti punti:
Gestione degli I/O completamente automatica. Il PLC è nato come strumento per l'automazione industriale, quindi
tutti quei compiti che normalmente devono essere svolti da un dispositivo di
questo genere, sono stati inclusi come “caratteristica naturale”,
perciò sia la lettura degli ingressi, sia la scrittura delle uscite,
sono state rese completamente automatiche. Questo vuol
semplicemente dire che per programmare l'attivazione di un’uscita non si
deve far altro che specificarlo attraverso un'opportuna un'istruzione di
assegnazione, del tipo: « “locazione di memoria associata all'uscita in
questione” = ‘1’ » (in LADDER avrei dovuto aggiungere un ‘piolo’) e questa
basta (non ci si deve preoccupare d'altro). Una volta
comunicato al PLC l'intenzione di attivare quella determinata uscita, sarà lui
stesso ad occuparsi di tutta la gestione necessaria per raggiungere questo
scopo, in maniera completamente autonoma ed automatica.
La gestione è affidata al sistema operativo (SO) della macchina. Ogni volta che il PLC si trova di fronte ad
un’istruzione di I/O, deve svolgere automaticamente tutta una serie
d’operazioni che, ovviamente, devono essere gestite da un SO.
All'inizio d’ogni ciclo d’esecuzione
del programma, il SO legge gli ingressi e li carica in una specifica sezione di
memoria; in modo da consentire al processore di avere un'immagine del processo
in quel momento. In altre parole la
gestione degli ingressi avviene attraverso un’acquisizione sincrona del
processo. Per riprodurre gli effetti
di un’elaborazione parallela, mediante l'utilizzo di un processore sequenziale,
il SO del PLC provvede a “fotografare” la situazione degli
ingressi all'inizio d’ogni ciclo (fa semplicemente una copia, in
memoria, di tutti i segnali che gli arrivano dall'impianto); successivamente
calcola, attraverso una esecuzione sequenziale del programma, le uscite
corrispondenti e le memorizza (fa una copia in memorie di tutte le uscite
calcolate); infine rende disponibili in contemporanea tutte le uscite
calcolate. Questo meccanismo serve ad impedire che il PLC elabori le uscite in
funzione di ingressi letti in tempi diversi, e quindi relativi a situazioni
diverse dell'impianto.
Scansione ciclica del programma
Una caratteristica fondamentale per i PLC è quella
della scansione ciclica del programma, le cui fasi fondamentali sono riportate
nella slide a fianco. I passi principali con cui il sistema operativo gestisce
l'esecuzione del programma, si succedono sempre uguali:
Lettura degli ingressi. Avviene per tutti gli ingressi contemporaneamente, prima di iniziare
l'esecuzione del programma.
Memorizzazione degli ingressi. Il SO fa una copia di tutti gli ingressi
memoria.
Elaborazione.
Ha inizio l'esecuzione del programma, sulla base del quale vengono calcolati i
valori delle uscite, in funzione degli ingressi memorizzati.
Memorizzazione delle uscite. Man mano che vengono calcolate,
anche le uscite vengono memorizzate nella RAM, esattamente come è avvenuto per gli ingressi.
“Scrittura” delle uscite. Non appena l'esecuzione del programma è terminata, e quindi tutte le
uscite sono state calcolate e memorizzate, il SO le rende disponibili tutte
assieme (prende tutta la memoria dedicata alle uscite, e la in via in
blocco alle schede di I/O, ovvero, trasferisce contemporaneamente tutti
i dati nelle celle di memoria dedicate all’output).
CPU
I primi PLC avevano un
set d’istruzioni molto ridotto (AND, OR, NOT, IN, OUT, SET, RESET), al fine di
consentire l'esecuzione di un'istruzione in un solo ciclo di clock (negli anni
'70 la velocità dei microprocessori era tale da non concedere margini di
manovra); infatti, con queste semplici istruzioni è possibile implementare
qualsiasi logica combinatoria o sequenziale. Il vantaggio di quest’approccio,
era ovviamente quello di ottenere una grande efficienza di esecuzione ed
elevate prestazioni. In questo contesto molti PLC utilizzavano CPU ad
‘1 bit, per ottenere migliori prestazioni (in termini di
velocità di elaborazione).
In realtà può capitare
ancora oggi di trovare PLC che usano microprocessori ad un bit, perché molte
delle applicazioni in cui sono impiegati questi dispositivi, non richiedono
grosse capacità elaborative (sono più che sufficienti le operazioni
booleane di base, con operandi ad un bit), mentre è spesso necessaria una
buona velocità di esecuzione.
Naturalmente, utilizzare
un set d’istruzioni ridotto comporta un'inevitabile mancanza di flessibilità,
che va a limitare il campo d’impiego di questi PLC (la ricerca di maggiore
flessibilità è stata proprio una delle ragioni che inizialmente hanno portato
all'affermazione dei PLC).
La necessità di
introdurre nuove macroistruzioni e di aumentare le capacità
d’elaborazione, ha determinato l'ingresso delle CPU ‘multi-bit’,
anche nel mondo dei PLC.
Le CPU a più bit diventano addirittura indispensabili
in tutti i casi in cui c'è la necessità di:
Elaborare operandi non binari (operazioni
aritmetiche e di confronto, per variabili non booleane).
Introdurre salti di programma.
Realizzare conteggi (i
contatori sono molto diffusi nell'automazione industriale, perché
molto utili in un gran numero d’applicazioni).
Gestire ingressi e/o uscite
di tipo puramente analogico,
nel caso in cui non sia possibile scomporre il problema in una serie di
sottoproblemi digitali (in questi casi non è più sufficiente limitarsi a
gestire comandi puramente digitali; del tipo “on – off”).
Per quanto riguarda l'ultimo
punto, vale la pena osservare che anche nei casi in cui si ha a che fare
con un problema apparentemente analogico, a ben guardare è spesso possibile
scomporre il problema originario in una serie di sottoproblemi di natura
digitale. In molti casi si può aggirare la difficoltà introdotta dalla
necessità di gestire un segnale analogico, scomponendolo in una serie di
“soglie”, sistemate in modo da individuare gli istanti fondamentali per
la gestione del controllo dell'impianto. Ad esempio, possiamo utilizzare un sensore
analogico per fare la rilevazione di una temperatura, semplicemente
scomponendo l’intervallo di variazione del segnale emesso con una serie di soglie,
sistemate in modo da consentirci di rilevare il superamento delle sole
temperature significative per la nostra applicazione. In questo modo potremmo
continuare ad utilizzare un PLC ad un solo bit, limitandoci a
verificare se la temperatura supera o meno le soglie precedentemente impostate
(alla CPU arriva solo un’informazione del tipo di tipo “on – off”:
“Soglia numero ‘n’ superata”- “Soglia numero ‘n’ non superata”). Ovviamente, in
questo caso dovremo assegnare un bit d’ingresso per ognuna delle soglie da
controllare.
In ogni caso le
architetture delle CPU, anche se multi bit, rimangono abbastanza semplici
nel complesso (non hanno pipeline o altre cose del genere).
Si evita di utilizzare
architetture più complesse, perché per questo tipo d’applicazioni non sono
necessarie! Si cerca di fare in modo che la CPU agisca in modo diretto, eseguendo istruzioni
molto semplici, e tenendo conto che si andrà ad operare in un contesto
in cui difficilmente si avrà necessità di utilizzare salti di programma, mentre
molto spesso sarà utile avere un tempo d’esecuzione dell'istruzione quanto più
vicino possibile a quello del ciclo di clock.
La necessità di
aggiungere nuove macroistruzioni, ed il conseguente ingresso delle CPU
multi-bit, ha determinato l'inizio dell'era della programmazione strutturata
anche per i PLC.
I controllori a logica
programmabile più moderni implementano:
L'uso delle “subroutine”
(blocco funzionale che realizza una funzione logica e che può essere richiamato ovunque
serva nel programma).
L'uso di linguaggi simbolici al posto di quelli assoluti
(necessario per la parametrizzazione delle subroutine).
Inoltre, l'allargamento
del set d’istruzione ha costretto i produttori di PLC ad usare una metodologia
multiprocessore, per far fronte alle stringenti necessità di
velocità tipiche di talune applicazioni.
Sezione d’ingresso/uscita
Nell'interfacciamento di
I/O vengono normalmente utilizzati degli standard ben precisi, onde ridurre al
minimo la possibilità di conflitto tra il PLC ed i vari elementi ad esso
collegati.
Tra gli elementi che
concorrono per ottenere un efficace interfacciamento con il processo
ricordiamo:
Lo stadio d’isolamento
galvanico (è l’elemento più delicato del sistema, ed è per questo motivo
che viene spesso realizzato mediante l’utilizzo di “optoisolatori”).
L'utilizzo di contatti
a vite (per velocizzare le procedure di istallazione).
L'utilizzo di ‘led’ per la visualizzazione
dello stato (allo scopo di velocizzare il debugging visuale del processo).
Interfacciamento con i sensori
attraverso tensioni standard (DC: 5, 12, 24, 48 Volt; AC: 110, 280
Volt).
Lo stadio di rettificazione
e livellamento per i segnali a tensione alternata (in generale
realizzato con il classico ponte a diodi, seguito da un filtro).
Lo stadio finale
(realizzato con dispositivi di potenza, quali: triac, relè, transitori,
ecc..
Una cosa importante da
dire sulla sezione “ingresso/uscita”, è che le schede che
consentono l'interfacciamento tra il PLC ed i vari dispositivi esterni,
sono in genere già disponibili sul mercato, per modificare o ampliare l’insieme dei
dispositivi controllati, basta semplicemente procurarsi la scheda adatta e
inserirla in uno degli slot dedicati all’I/O. Queste schede realizzano tutte
quelle operazioni che è necessario mettere in atto (conversioni
“digitale/analogico” e “analogico/digitale”, modulazione e demodulazione, amplificazione,
ecc, ecc), per garantire la corretta interazione tra il PLC e la
categoria di dispositivi esterni associati.
Tra le schede di I/O
specializzate, di solito già disponibili sul mercato, possiamo
trovare:
Scheda con regolatore PID standard. Normalmente i regolatori PID sono dispositivi autonomi,
commercializzati in contenitori separati dai PLC: con un ingresso, un’uscita,
ed alimentazione autonoma. Sono inoltre provvisti di tre manopole,
mediante le quali è possibile regolare le tre azioni fondamentali (attraverso
tutta una serie di prove e metodi), allo scopo di ottenere le migliori
regolazioni possibili per ottimizzare il controllo. In talune applicazioni
però, è conveniente inserire il regolatore PID all'interno del PLC, in
modo da modificare i parametri delle tre azioni fondamentali,
secondo le condizioni operative del sistema che si sta controllando.
Scheda per il controllo assi.
Scheda per il conteggio veloce (lettura dell'uscita di un encoder).
Scheda per la lettura ed il controllo della temperatura.
Scheda per la lettura degli estensimetri.
…ecc.
Scheda controllo assi
A titolo d’esempio
possiamo approfondire un po’ il discorso su una delle schede più utilizzate in
automazione industriale: la scheda controllo assi.
All'interno di questa scheda
c'è già, opportunamente codificata, il tipo di movimentazione che
i motori devono realizzare nel posizionamento del loro carico. Questo vuol dire
che il programmatore di PLC non si deve preoccupare di realizzare il controllo dell'accelerazione
e/o della velocità, perché sono già definiti nel firmware interno
alla scheda.
Attraverso la
programmazione del PLC bisogna soltanto comunicare alla scheda (bastano poche
istruzioni) quanto segue: “ruota di tot giri” o “vai alla posizione numero
tot”; senza preoccuparsi del tipo di motore utilizzato, del tipo di
trasmissione, del tipo di carico azionato, ecc. All'interno della scheda
quindi, ci deve essere tutto il controllo, l’asservimento, e quanto altro
necessario per gestire l'azionamento dei motori, in modo che tutte le
specifiche siano rispettate.
L'unica preoccupazione
del programmatore è quella di farsi due conti per capire di quanto si muove
il carico che vogliamo spostare, in rapporto alla rotazione
(espressa in numero di giri) dei motori che lo spingono, in modo da
poter assegnare alla posizione finale, cui si desidera arrivare, le rispettive
posizioni dei vari motori impegnati nella movimentazione.
E’ molto difficile che
capiti di dover realizzare un programma che simuli un controllo assi, perché in
genere le schede oggi in commercio contengono già tutto il necessario.
Va detto che conoscere a
fondo il funzionamento di una scheda controllo assi è, comunque, molto utile,
perché ci consente di scegliere tra le diverse schede proposte dal mercato, in
considerazione del fatto che la qualità del controllo imposto va a
determinare anche la qualità della lavorazione che è realizzata! In
generale risparmiare su una scheda di controllo assi (scegliendo una scheda
scadente o addirittura cercando di realizzare il controllo assi per proprio
conto) non è detto che voglia dire risparmiare poi sul prodotto finito.
Circuiti di isolamento
Nell'ambiente di lavoro
in cui operano i PLC, assume particolare importanza il problema dell'isolamento
tra i circuiti interni (a bassa potenza) e quelli esterni (ad alta potenza).
Per quanto riguarda gli ingressi, siamo interessati ad
evitare che eventuali condizioni di sovraccarico possano danneggiare i
componenti interni più delicati (come ad esempio la CPU).
Nella slide a fianco è mostrato un circuito d’optoisolamento,
tipicamente usato nei PLC per ottenere l'isolamento degli ingressi.
In genere, subito dopo
l'ingresso, c'è un ponte raddrizzatore che serve per raddrizzare la tensione
nel caso in cui questa sia alternata. Il segnale in uscita al ponte è poi trasmesso
per via ottica, ad un transistor che lo riporta verso il PLC. In
genere completano il circuito anche con
due diodi led, così da semplificare le operazioni di debugging o di riparazione
(ad esempio per verificare se il dispositivo d’isolamento optoelettrico
funziona ancora).
Il vantaggio di questo
circuito sta nel riuscire a trasferire un segnale dall'ingresso del PLC, alla
CPU interna, senza trasmettere tensione (in
isolamento galvanico)! Questo è un grosso vantaggio, perché,
in questo modo, si isola la CPU da eventuali sovraccarichi di corrente e/o di tensione, si realizza il
migliore isolamento possibile!

Per quanto riguarda le uscite invece, è certamente
indispensabile che le relative schede prevedano una protezione contro i
corto-circuiti.
Questa protezione può
essere ottenuta limitando la corrente d’uscita, o disconnettendo l'uscita
stessa; ma in entrambi casi è altresì importante che lo stato di sovraccarico
si è evidenziato, ad esempio con un indicatore luminoso. Nella slide a fianco è
mostrato un circuito di protezione con flessibile in uno stato d’uscita
isolato, che usa un triac come dispositivo d’amplificazione in alternata.
Memoria
La memoria di un PLC può
essere divisa in diverse aree, in base all’utilizzo che ne fa:
Area del
sistema operativo; è quella destinata alla memorizzazione
permanente dei programmi del sistema operativo.
Area di lavoro del sistema operativo (RAM); è quella dedicata alla memorizzazione delle
variabili temporanee utilizzate dai programmi del sistema operativo.
Area di I/O (RAM);
è quella nella quale sono memorizzati i valori relativi agli ingressi e i
valori da assegnare le uscite.
Area programmi utente (RAM - PROM per il programma finale), è quella utilizzata per la memorizzazione del
programma da eseguire durante la fase di controllo.
Area dati utente (RAM); è quella destinata alla memorizzazione del valore delle variabili
temporanee del programma utente.
Area funzioni di sistema (RAM); è quella utilizzata per l'accesso alle “funzioni di sistema”
definite dall'utente (timer, contatori, ecc…).
|