Domanda più che legittima per chi non è del mestiere
Le centraline per auto, ecc. sono soluzioni embedded molto verticali e pensate per il compito assegnato, non si possono prettamente definire PLC.
I PLC (o controllori logici programmabili) sono delle apparecchiature industriali "general purpose", pensati cioè per "far funzionare" macchine industriali nei più disparati settori: manufacturing, alimentare, chimico, petrolifero, ecc. ecc.
Facciamo un excursus storico:
Una volta se aprivi un armadio elettrico qualsiasi (ad es. di una macchina per confezionare tortellini) ti trovavi di fronte ad una marea di relè cablati in modo di svolgere il compito; in seguito i relè sono stati sostituiti nell'ordine: da circuiti a transistor, da schede integrate TTL e/o CMOS, da schede gestite a microprocessore però dedicate allo scopo, programmabili il più delle volte in Assembly e con i programmi compilati memorizzati in EPROM.
Tutti i suddetti sistemi avevano il problema che ad ogni modifica di funzionamento, piccola o grande che sia, dovevi andare a modificare l'hardware (a parte le schede a microprocessore che però ti obbligavano a cancellare e reincidere le EPROM).
I PLC sono nati sull'onda della rivoluzione informatica e ti consentono di gestire delle periferiche (non intese come stampanti) ma come segnali di ingresso (pulsanti, interruttori, ecc.), segnali di uscita (elettrovalvole, motori, ecc.), e di implementare una logica di funzionamento semplicemente modificando del software.
Una grossa rivoluzione!
In realtà si tratta sempre di elaboratori che però devono rispettare imperativamente almeno i 2 requisiti seguenti:
1- Essere perfettamente a norme industriali (insensibili ad interferenze elettromagnetiche, disturbi, ecc.)
2- Ma soprattutto gestire un real-time "reale", scusa il gioco di parole...
Un PLC deve eseguire il programma in esecuzione in un intervallo di tempo ben definito e costante perchè ad es. se alla pressione di un pulsante devi azionare una valvola che apre un flusso in un tubo e la devi arrestare dopo 250 msec o nell'attimo esatto in cui interviene un livello, devi essere sicuro che ciò accada.
Per fare ciò la quasi totalità dei PLC usa hardware dedicati e sistemi operativi appositamente pensati per questo.
Ci sono anche PLC che usano particolari distribuzioni Linux con un kernel modificato per gestire il real-time ma sono pochi.
In genere, ma non è sempre così, il S.O. di un PLC ha una o più task cicliche che girano in un tempo discreto ed il programmatore installa all'interno di esse il programma utente.
Ma la cosa più "bastarda" è che nel corso degli anni ogni produttore di PLC è andato per la sua strada, per cui ad oggi non esiste uno standard "de facto" tra i vari modelli, e gli ambienti di sviluppo di conseguenza sono tipicamente proprietari.
I linguaggi di programmazione sono molteplici anche se ultimamente molti si stanno uniformando allo standard IEC 61131 (lascio a te l'onere di andarlo a consultare,soprattutto se soffri d'insonnia...) che prevede i seguenti 5 linguaggi:
- Ladder
- SFC
- IL
- Function Block Diagram
- Structured Text