# Controllore logico programmabile

Il controllore logico programmabile (in inglese programmable logic controller, spesso in sigla, PLC) è un computer per l'industria specializzato in origine nella gestione o controllo dei processi industriali.
Esegue un programma ed elabora i segnali digitali ed analogici provenienti da sensori e diretti agli attuatori presenti in un impianto industriale, con la struttura del PLC che viene adattata in base al processo da automatizzare: durante la progettazione del sistema di controllo, vengono scelte le schede adatte alle grandezze elettriche in gioco; le varie schede vengono quindi inserite sul BUS o rack del PLC. Il primo PLC è stato creato da Dick Morley nel 1968 con il marchio Modicon, successivamente di proprietà di Schneider Electric.
Nel tempo, con la progressiva miniaturizzazione della componentistica elettronica e la diminuzione dei costi, è entrato anche nell'uso domestico; l'installazione di un PLC nel quadro elettrico di un'abitazione, a valle degli interruttori magnetotermico e differenziale (salvavita), permette la gestione automatica dei molteplici sistemi e impianti installati nella casa: impianto di riscaldamento, antifurto, irrigazione, LAN, luci, ecc. Si tratta di un oggetto hardware componibile. La caratteristica principale è la sua robustezza estrema; infatti normalmente è posto in quadri elettrici in ambienti rumorosi, con molte interferenze elettriche, con temperature elevate o con grande umidità. In certi casi il PLC è in funzione 24 ore su 24, per 365 giorni all'anno, su impianti che non possono fermarsi mai.

## Struttura

Un PLC è composto da un alimentatore, dalla CPU, da una o più memorie di tipo RAM, ROM, EPROM o EEPROM e da un certo numero di schede di ingressi digitali e uscite digitali, che possono essere sia integrate nel PLC stesso (in questo caso si dicono on board) oppure su moduli esterni (dette periferiche decentralizzate), collegati da un apposito bus di comunicazione. Nel caso in cui sia necessario gestire segnali analogici, il PLC può ospitare delle schede di ingresso o di uscita analogiche, on board o esterne.
Se il PLC opera in rete con altri PLC, sono necessarie delle schede di comunicazione adatte al protocollo di rete già implementato sugli altri PLC.
Nel caso di operazioni di movimentazione, come nel campo della robotica, il PLC ospita delle schede di controllo assi, cioè delle schede molto veloci e sofisticate che permettono di gestire spostamenti e posizionamento.
Ci possono inoltre essere altre schede con funzioni particolari, in base all'impiego specifico del PLC.

### Alimentatore

L'alimentatore è un apparato necessario per il funzionamento dei PLC. Esso è utilizzato per fornire l'energia elettrica a tutte le schede del PLC. Fornisce le tensioni a 5 V necessarie alle schede, le tensioni a + o - 12 V, le altre tensioni necessarie, sempre in corrente continua (DC). Può essere interno o esterno al PLC. Nella normalità dell'uso, in campo industriale, l'alimentazione è a 24 VDC compatibile con la maggior parte dei sensori in commercio.

### CPU

La CPU è il cervello del PLC. La CPU è una scheda complessa basata su una logica programmabile con funzionalità base di memorizzazione e accesso ad I/O (input/output), nonché bootloader, e con una zona di memoria a disposizione del programma utente, cioè del programma di automazione.
La memoria utente è spesso esterna come ad esempio nel caso di memoria EPROM. Il vantaggio derivante dall'utilizzo di una memoria esterna risiede nella possibilità di trasferire agevolmente il programma di automazione su un nuovo dispositivo in caso di malfunzionamento, nonché nella salvaguardia del codice programma in situazioni di inaccessibilità del dispositivo originario. La CPU durante il funzionamento a regime, comunica con tutte le schede connesse sul BUS del PLC, trasferendo dati e comandi da e verso l'esterno (input e output).
Una delle caratteristiche peculiari di molte CPU è la capacità di poter gestire le modifiche del programma di gestione del processo durante il normale funzionamento. Questa possibilità è estremamente utile nel caso di impianti che devono essere sempre attivi, come ad esempio nel controllo di processo e nella produzione industriale in serie.
All'interno della CPU ci sono varie parti, tra cui
* unità di gestione, ovvero informazioni di gestione del PLC stesso, impostate dal costruttore e trasparenti all'utente;
* archivio di temporizzatori e contatori funzionali all'operatività del PLC;
* memorie immagine del processo, cioè le informazioni in ingresso ed i comandi in uscita del processo;
* memoria utente, in cui vengono scritti i programmi che il PLC deve eseguire;
* interfaccia per il dispositivo di programmazione, che comunica con gli strumenti di programmazione;
* bus dati, comando, indirizzi per la veicolazione dei dati fra le varie parti e con l'esterno della CPU.

### Memorie

I PLC possono essere dotati di una o più memorie, sia in base alla specifica applicazione sia in base alle diverse case costruttrici. In generale, nella maggior parte delle configurazioni si possono distinguere:
* memoria di caricamento: è una memoria non volatile, che contiene il programma, i dati e le configurazioni del PLC;
* memoria di lavoro: è una memoria volatile usata per l'esecuzione del programma e per le variabili locali;
* memoria ritentiva: non volatile, è usata per memorizzare dati che devono restare salvati anche a CPU spenta;
* slot per memoria esterna (SD o simili): in alcuni PLC è presente uno slot per una memoria tampone, la cui presenza o meno non influisce sul funzionamento del PLC, ma può essere utile ad esempio per archiviare i log di processo o dei dati di lavoro che si vogliono esportare; in altri PLC, questa memoria tampone è necessaria per il funzionamento.

### Schede di ingresso digitali

Le schede di ingresso digitali sono utilizzate per la lettura di segnali digitali, cioè di tensioni a due valori (ad esempio 0 V o 24 V, oppure 0 V 110 V). Ogni scheda può gestire da 4 a 64 ingressi digitali differenti. I segnali dal campo vengono fatti arrivare con cavi elettrici fino alla morsettiera della scheda.

### Schede di uscita digitali

Le schede di uscita digitali sono usate per i comandi di attuatori digitali. Ad esempio un relè è un attuatore digitale, in quanto può avere soltanto due stati stabili: diseccitato, o eccitato. Altro esempio di attuatore è una valvola digitale a due stati: aperta, chiusa (elettrovalvola). Anche nel caso di schede di uscita digitali, si possono gestire da un minimo di 4 ad un massimo di 64 uscite digitali differenti.

### Schede di ingresso analogiche

Questo tipo di schede di ingresso permettono il controllo di grandezze elettriche il cui valore può variare all'interno di un intervallo; si distinguono due casi: variazione della tensione e variazione della corrente. Ad esempio sono disponibili schede di ingresso analogiche in corrente, con un intervallo variabile tra 4 mA e 20 mA. Molti produttori di PLC rendono disponibili schede con ingressi analogici per sonde di temperatura (sia Pt100 che termocoppie

### Schede di uscita analogiche

Le schede di uscita analogiche permettono di controllare degli attuatori variabili. Possono essere in corrente o in tensione ed avere una determinata risoluzione esprimibile in bit. Ad esempio è possibile comandare un motore elettrico tramite un inverter variandone la velocità, tramite la frequenza, da zero alla sua massima velocità. Oltre all'esempio sopra citato servono per regolazioni di temperatura variando l'intervallo di uscita, regolazioni di luce. Un esempio che può risultare molto chiaro è quella dell'intensità luminosa di una serie di plafoniere. Tramite un potenziometro noi aumenteremo o diminuiremo l'intensità luminosa. Ad ogni aumento o diminuzione di luce corrisponde un equivalente segnale in corrente o in tensione.

### Schede di comunicazione

Il PLC durante il suo funzionamento può comunicare con computer, con altri PLC oppure con altri dispositivi come le macchine CNC (i torni e/o le frese a controllo numerico delle aziende).
La comunicazione con computer e altri dispositivi avviene tramite tipi di connessione standard come:
* RS232
* RS422/RS485
* TCP/IP
La comunicazione con altri PLC avviene tramite protocolli standard, ad esempio:
* CANopen
* CAN BUS
* Controlnet
* DeviceNet
* EGD
* ETHERCAT
* Ethernet
* Modbus
* Modbus Plus
* Modbus TCP/IP
* Profibus
* Profinet
* TCP/IP
* UDP/IP
* Wi-Fi 802.11

### Schede speciali

Molti PLC, oltre le consuete schede di ingresso/uscita, analogiche/digitali, ha a catalogo moduli dedicati a particolari compiti di automazione. Il vantaggio nell'uso di tali schede è quello di avere il controllo di un'operazione/evento indipendentemente dal ciclo del PLC, relegando il PCM alla funzione di controllo/parametrizzazione. L'offerta è veramente vasta e ogni produttore propone a catalogo le più svariate soluzioni, fra cui si segnala:

#### Schede di conteggio veloce

Chiamate comunemente schede conta impulsi, sono in grado di accogliere il segnale di un sensore di conteggio e direzione (up/down ossia incremento/decremento) più un canale di azzeramento, sia in single ended (ossia a livelli di tensione 0÷24 V) che in differenziale (normalmente secondo lo standard RS-422); normalmente è possibile programmarle in modo che scatenino un evento (per esempio alzando un'uscita) al raggiungimento di un dato conteggio o se il conteggio è compreso fra una finestra di valori. Su tali schede sono normalmente disponibili un numero limitato di uscite programmabili.

#### Schede programmatori a camme

Compito di tali schede è emulare una o più camme meccaniche; accettano in ingresso un segnale proveniente da un encoder ed è possibile, se la posizione è entro determinate finestre, avviare un evento tramite un'uscita digitale programmabile.

#### Schede PID (Proporzionale Integrale Derivativo)

Spesso nel campo industriale è necessario controllare una variabile del processo (per esempio la potenza applicata su un elemento riscaldante), rilevando una variabile da esso dipendente (per esempio la temperatura di un ambiente). Se il processo è particolarmente critico è necessario eseguire il controllo in modo accurato, tramite moduli dedicati. In passato, prima dell'avvento dei controllori logici programmabili (PLC), esistevano moduli hardware, in qualche caso realizzati con tecnologie ibride meccaniche, pneumatiche, elettromeccaniche, in grado di svolgere la regolazione sommando le tre azioni proporzionale, integrativa e derivativa, ma al giorno d'oggi sono realizzati dalle stesse case produttrici dei PLC, non solo come blocchetti aggiuntivi hardware, ma anche come blocchi software a cui è sufficiente passare i corretti parametri.

#### Schede controllo assi

Si impiegano ove sia necessario controllare il movimento di un organo meccanico tramite un motore, sia esso brushless che passo passo. Alcune schede presentano un funzionamento particolarmente semplice permettendo di fissare una quota di consegna che l'asse deve raggiungere e un ingresso per il feedback di posizione, altre - particolarmente complesse - permettono grandissima flessibilità e permettono di emulare diversi profili. Per realizzare questi posizionamenti è necessario generalmente un modulo di potenza esterno (amplificatore di corrente) per il comando effettivo del motore.

#### Schede safety

Sono adoperate per tutti i segnali e le sequenze il cui controllo deve rispettare normative di sicurezza.

## Funzionamento

La prima azione che il PLC compie è la lettura di tutti gli ingressi, sia digitali che analogici, on board o su bus di campo (schede remote collegate al PLC o con una rete di comunicazione). Dopo aver letto gli ingressi, il loro stato viene memorizzato in una memoria che è definita "Registro immagine degli ingressi". A questo punto le istruzioni di comando vengono elaborate in sequenza dalla CPU e il risultato viene memorizzato nel "Registro immagine delle uscite". Infine, il contenuto dell'immagine delle uscite viene scritto sulle uscite fisiche, ovvero le uscite assumono lo stato predisposto dalla CPU. Poiché l'elaborazione delle istruzioni si ripete continuamente, si parla di elaborazione ciclica; il tempo che il controllore impiega per una singola elaborazione viene detto tempo di ciclo (solitamente da 10 a 100 millisecondi).
Un PLC si dice in run quando il programma è in esecuzione, mentre si dice in stop (o in arresto) quando il PLC è acceso ma non sta eseguendo il programma.

## Linguaggi di programmazione

Il PLC per ottemperare ai suoi compiti deve essere programmato. La programmazione del PLC è effettuata normalmente con un PC sul quale un software specializzato permette di creare programmi da caricare nella memoria della CPU del PLC.
Questi software di programmazione possono leggere il programma direttamente dalla memoria della CPU, e visualizzare il programma sul PC. Normalmente il programma viene scritto su PC, quindi scaricato sul PLC, e salvato sul PC stesso, per ulteriori modifiche o per sicurezza.
La normativa IEC 61131-3 del 1993 ha standardizzato 5 linguaggi di programmazione, di cui 3 grafici e 2 testuali.
La normativa è stata successivamente aggiornata con l'uscita della "CEI EN 61131-3" detta anche "CEI 65-40" Prima Edizione: 1º giugno 1996.

### Linguaggi grafici

* Ladder diagram (LD o KOP) detto Linguaggio a contatti - Era il linguaggio più usato fino a pochi anni fa, in quanto è una efficace trasposizione informatica, dei circuiti elettrici usati dagli elettrotecnici. L'automazione industriale infatti era basata su sistemi a logica cablata, il PLC (controllore di logica programmabile) ha permesso di trasportare i concetti della logica cablata nel linguaggio Ladder. Il programmatore semplicemente utilizza simboli logici corrispondenti a segnali di ingresso e di uscita per implementare la logica non più cablando i relè, ma disegnando gli schemi elettrici nel software di programmazione.
* Sequential function chart (SFC) detto Diagramma funzionale sequenziale - Viene usato anche come strumento di specifica. Tale linguaggio permette di implementare facilmente una macchina (o automa) a stati finiti.
* Function Block Diagram (FBD o FUP) detto Diagramma a blocchi funzionali - Analogo ai diagrammi circuitali usati dagli elettronici.

### Linguaggi testuali

* Instruction List (IL o AWL) detto Lista di istruzioni - Linguaggio di basso livello, diffuso nelle maggior ditte di programmazione con PLC, molto simile all'Assembly (linguaggio di basso livello). Può essere facilmente ricavato dal Ladder e permette una programmazione più strutturata rispetto a quest'ultimo, infatti molti lo preferiscono per questo fattore.
* Structured Text (ST) detto Testo strutturato - Linguaggio di alto livello simile al Pascal.

## Il PLC rispetto ad altri sistemi di controllo

I PLC si adattano bene a una serie di compiti di automazione. Questi sono in genere processi industriali nel settore manifatturiero, dove i costi di sviluppo e manutenzione del sistema di automazione sono elevati rispetto al costo totale dell'automazione, e dove sono attese modifiche al sistema durante la sua vita operativa. I PLC contengono dispositivi di input e output compatibili con i dispositivi pilota ed i controlli industriali; richiedono poca progettazione elettrica, ed il problema del progetto è focalizzato sulla sequenza desiderata di operazioni. Le applicazioni PLC sono tipicamente sistemi altamente personalizzati, per cui il costo di un PLC preconfezionato è basso rispetto a quanto costerebbe il progetto di un controllore su misura. Per contro, nel caso di prodotti di massa, sistemi di controllo personalizzati risultano economici. Ciò è dovuto al minor costo dei componenti, che possono essere scelti in modo ottimale al posto di una soluzione "generica", e dove i costi di progetto non ricorrenti sono distribuiti su migliaia o milioni di unità.
Per applicazioni in grandi numeri o nel caso di compiti di automazione fissi e molto semplici, vengono utilizzate tecniche diverse. Per esempio, una lavastoviglie casalinga potrebbe essere controllata da un temporizzatore elettromeccanico a camme, più economico se prodotto in grandi quantità.
Un progetto basato su microcontrollore sarebbe appropriato qualora vengano prodotte centinaia o migliaia di unità e quindi il costo di sviluppo (progettazione di alimentatori, hardware di ingresso/uscita e necessario test e certificazione) possa essere ripartito su molte vendite, e dove l'utente finale non necessiti di modificare il controllo. Un esempio è costituito dalle applicazioni automotive; milioni di unità sono costruite ogni anno, e molto pochi utenti finali alterano la programmazione di questi controllori. Tuttavia, alcuni veicoli speciali quali autobus di linea utilizzano i PLC invece di controlli progettati su misura, perché i volumi sono bassi e il costo di sviluppo sarebbe antieconomico.
Un controllo di processo molto complesso, come ad esempio quello utilizzato in un impianto chimico, può richiedere algoritmi e prestazioni al di là della capacità di PLC anche ad alte prestazioni. Controlli di precisione o ad elevata velocità possono anche richiedere soluzioni personalizzate; ad esempio comandi di volo degli aeromobili. Per applicazioni di controllo molto esigenti, nelle quali può essere sostenuto l'elevato costo di sviluppo e manutenzione, si possono utilizzare dei single-board computer che utilizzino hardware semi-personalizzato o completamente proprietario. I "Soft PLC" in esecuzione su computer desktop sono in grado di interfacciarsi con l'hardware di I/O industriale eseguendo programmi su una versione di sistemi operativi commerciali adattata per le esigenze di controllo di processo.