Skip to content

Introduzione ai PLC

Un PLC è un dispositivo digitale elettronico contenente uno o piÚ processori operanti in logica binaria.

Gli acronimi utilizzati per nominare questo oggetto hardware sono diversi:

  • PLC: Programmable Logic Controller,
  • API: Automate Programmable Industriel,
  • SPS: Speicherprogrammierbare Steuerung.

Un PLC è un oggetto hardware componibile. È in grado di ricevere in ingresso dati da sensori, elaborare dati e programmi al proprio interno, scambiare dati attraverso reti di comunicazione e produrre uscite che comandano attuatori (o dispositivi di segnalazione).

plc-intro-sensori-flow

Il PLC viene usato in contesti in cui si deve comandare un numero elevato di attuatori con la possibilitĂ  di avere comandi differenziati e complessi e poter variare in modo facile il funzionamento del sistema (tramite riprogrammazione software). Il PLC viene usato in ambito industriale per il controllo di macchine automatiche, impianti e processi complessi.


È importante fare chiarezza sulla terminologia utilizzata. Le grandezze fisiche piÚ discusse in questi articoli sono:

  • corrente: quantitĂ  di carica che attraversa una sezione di filo conduttore nell’unitĂ  di tempo,
  • tensione: differenza di potenziale presente tra due punti di un circuito,
  • resistenza: tendenza del conduttore ad impedire il passaggio della corrente.

Ecco una tabella, ripresa dall’articolo Analisi per Fisica II che riassume le proprietà di queste (ed altre) grandezze fisiche.

GrandezzaNome*UnitĂ  di MisuraSimboloSI#
tempotsecondo[s]
massamchilogrammo[kg]
energia,
lavoro,
calore
L (lavoro)
W (work)
joule[J]N⋅m=W⋅s\rm N \cdot m = W \cdot s
resistenza elettricaRohm[Ί\Omega]V/A\rm V/A
tensione elettrica
(o potenziale elettrico)
V (continua)
v (alternata)
volt[V]J/C=W/A\rm J/C = W/A
intensitĂ  di correnteI (continua)
i (alternata)
ampere[A]C/s=V/Ί\rm C/s = V/ \Omega
potenzaPwatt[W]V⋅A=J/s\rm V \cdot A = J / s

* la colonna Nome indica la lettera con cui viene comunemente indicato un valore corrispondente a tale grandezza fisica. Al nome si possono aggiungere valori in pedice o in apice. Ad esempio, tutte e tre le variabili seguenti sono relative alla misura di una intensitĂ  di corrente:

iout=10  [A];IIN=3⋅106  [A]i_{out} = 10 \; [\text{A}] \quad ; \quad I_{IN} = 3\cdot 10^6 \; [\text{A}]

# la colonna SI esprime la formula (o le formule) per ricavare tale unitĂ  di misura grazie alle altre unitĂ  di misura del Sistema Internazionale. Ovviamente, da tali formule, se ne possono ricavare molte altre a seconda della necessitĂ . #

Le grandezze non sono poste in tabella in ordine di importanza. Non esiste un ordine giusto per tali colonne perchĂŠ tutte le formule sono legate tra loro.


I regimi di funzionamento sono:

  • DC: direct current (corrente continua),
  • AC: alternating current (corrente alternata).

La tipologia di segnali trattati prevede due grandi famiglie:

  • segnali periodici, caratterizzati dai seguenti parametri:
    • Valore di picco: massimo valore positivo del segnale,
    • Valore di picco-picco: ampiezza del segnale: dal picco maggiore a quello minore,
    • Valore efficace: valore di picco fratto radice di due,
    • Periodo: durata della forma del segnale che si ripete,
    • Fase: ritardo relativo all’attraversamento dello zero
  • segnali non periodici: caratterizzati da un valore costante nel tempo.

Per i segnali periodici, la frequenza f è l’inverso del periodo e si misura in hertz (simbolo Hz).

Il relè è un dispositivo elettronico che utilizza variazioni di corrente (in ingresso) per influenzare le condizioni di un altro circuito. Il relè è un interruttore azionato da un elettromagnete.

Il relè elettromagnetico è costituito da una bobina di filo la quale, se percorsa da corrente, attrae verso di sé una struttura di metallo chiamata “ancora” (anchor) che a sua volte apre o chiude un contatto. Dati i terminali A, B e C. Se non passa corrente nel relè, i terminali A e B sono in contatto. Al passaggio di corrente, la bobina si carica e attrae a sé l’ancora che apre il contatto tra A e B e lo chiude tra B e C.

Il relè consente di avere bobina e terminali anche su circuiti differenti, con sorgenti di potenza diverse. Dal punto di vista circuitale, il simbolo del relè comprende il simbolo della sua bobina e il simbolo del suo contatto.

rele-simboli

L’utilizzo diffuso dei relè negli impianti industriali ha diversi inconvenienti:

  1. manutenzioni lunghe e complicate,
  2. ingombro e consumo di corrente elevati,
  3. ridotta affidabilitĂ ,
  4. limitato numero di terminali: utilizzo di relè in parallelo.

Il motivo principale per il quale nasce l’esigenza del PLC come oggetto hardware è proprio la sua capacità di rimpiazzare diverse centinaia di relè nei sistemi di controllo industriali.

I vantaggi del PLC rispetto alla logica cablata a relè sono:

  1. semplificazione del cablaggio,
  2. semplificazione del controllo di anomalie e rilevamento di guasti,
  3. possibilità di programmazione di relè ausiliari, temporizzatori e contatori senza aumentare lo spazio occupato del quadro elettrico,
  4. possibilità di modificare il funzionamento dell’automatismo anche durante il suo funzionamento,
  5. alta affidabilitĂ  del prodotto.

Come già detto, il PLC è un oggetto hardware componibile, dunque modulare. Si compone dei moduli di: alimentazione, I/O, comunicazione, CPU.

Fornisce alimentazione a tutti i moduli collegati. Alimentazione tipica di un PLC: 24 Vdc. Il modulo di alimentazione viene a sua volta alimentato dalla tensione di rete 230 Vac.

I moduli di ingresso consentono al PLC di leggere lo stato dei sensori e dei comandi ad esso collegati.

Gli ingressi collegabili ai moduli di ingresso di un PLC possono fornire informazioni di tipo digitale o analogico.

L’optoisolatore (chiamato anche fotoaccoppiatore) è un componente elettronico che permette di trasferire un segnale fra due circuiti, mantenendo l’isolamento galvanico fra gli stessi. L’isolamento galvanico è una tecnica di condizionamento (del segnale) che impedisce uno spostamento diretto dei portatori di carica (gli elettroni) tra circuiti, implementando però un protocollo di comunicazione che consente lo scambio di informazioni.

I circuiti si isolano in questo modo perché operano a regimi di funzionamento molto diversi tra loro. Ad esempio, il primo opera a 24 Vdc e il secondo a 230 Vac. L’informazione viaggia sul mezzo ottico in modo da permettere la comunicazione e mantenere allo stesso tempo una netta separazione elettrica tra i circuiti.

A livello circuitale, il fotoaccoppiatore è formato da un diodo LED ed un foto-transistor.

optoisolatore

L’optoisolatore protegge il circuito interno del PLC (principalmente il processore montato sul modulo CPU) da possibili sovraccarichi della rete veicolati dai moduli di ingresso.

Il modulo CPU è il modulo che governa tutto il PLC, su cui gira il programma. Può avere memoria interna e/o esterna.

Le parti piĂš importanti di questo modulo sono:

  • unitĂ  di gestione: informazioni di gestione del PLC,
  • archivio di temporizzatori e contatori funzionali all’operativitĂ  del PLC,
  • memorie immagine del processo: informazioni in ingresso e comandi in uscita del processo,
  • memoria utente: in cui vengono scritti i programmi che il PLC deve eseguire,
  • interfaccia per il dispositivo di programmazione: comunica con gli strumenti di programmazione,
  • bus dati, comando, indirizzi per la veicolazione dei dati tra le varie componenti e con l’esterno della CPU.

A bordo della scheda madre del PLC è situato il processore (modulo CPU) con dei blocchi di memoria.

La memoria è suddivisa in:

  1. Memoria di Sistema: sistema operativo (firmware) del PLC, costituito da:
    1. routine di autotest iniziale,
    2. dati del setup,
    3. librerie.
  2. Memoria di Programma: sequenza di istruzioni (programma utente) che verrĂ  eseguita dalla CPU:
    1. RAM: sviluppo e collaudo,
    2. EPROM: programma definitivo,
    3. EEPROM: fase di sviluppo e versione definitiva.
  3. Memoria Dati: informazioni relative alle varie aree dati interne e di I/O (memoria di tipo RAM),
  4. I/O e merker.

L’indirizzamento degli I/O è effettuato proprio da quest’ultima memoria: I/O e merker.

In questa memoria vengono mappati tutti i valori degli input e degli output digitali ed analogici: la memoria immagine dell’I/O. Inoltre, è presente una sequenza di variabili allocabili dall’utente e utilizzabili per immagazzinare dei dati temporanei: i merker.

Questa memoria è quindi divisa in:

  • Memoria Immagine dell’I/O,
    • Memoria Immagine degli Ingressi Digitali,
    • Memoria Immagine degli Ingressi Analogici,
    • Memoria Immagine delle Uscite Digitali,
    • Memoria Immagine delle Uscite Analogiche,
  • Memoria dei Merker.

Ogni memoria è limitata.: ogni PLC può collegare un numero finito di ingressi e di uscite, in quanto la memoria in cui li mappa è finita.

Ogni IN e OUT dei vari moduli digitali è un bit, associato per esempio ad un sensore ON/OFF o ad un relè. Per identificare una singola uscita (lettere O oppure Q) o un singolo ingresso (lettera I), bisogna specificare:

  • modulo: in che gruppo di 8 bit si trova (byte),
  • morsetto del modulo a cui è collegato (bit del byte).

04_digital-IO

Un ingresso digitale si identica con la seguente sintassi:

% + I + numero byte + . + numero morsetto (bit)

Ipotizzando di collegare un sensore al morsetto (evidenziato in blu) corrispondente al bit n°3 del byte n°0, il suo nome sarebbe: %I0.3.

Un uscita digitale si identica con la seguente sintassi:

% + Q (oppure O) + numero byte + . + numero morsetto (bit)

Ipotizzando di collegare un attuatore al morsetto (evidenziato in verde) corrispondente al bit n°5 del byte n°1, il suo nome sarebbe: %O1.5.

Se un modulo non esaurisce tutti e 8 i bit possibili del byte, aggiungendo un altro modulo si inizia a contare comunque dal byte successivo.


Nei PLC compatti, l’I/O può essere talmente limitato da non richiedere la differenziazione tra numero byte e numero morsetto. In tal caso gli ingressi sono chiamati %I0, %I1, … %In e stessa cosa vale per gli output.

Lo spazio di indirizzamento che occupa un modulo digitale dipende dai bit di risoluzione del convertitore Analogico-Digitale, arrotondando per eccesso al numero di byte in grado di contenere tale valore di bit.

Ad esempio, se il modulo AI (Analog Input) ha un convertitore a 10 bit, ogni dato letto da un ingresso analogico occuperebbe 10 bit. Visto che le “taglie” (size) della memoria sono solitamente organizzate in byte, 10 bit occupano comunque 2 byte (di cui non verranno utilizzati 6 bit).

N.B. risoluzione: numero di bit del convertitore AD.

Gli ingressi analogici vengono mappati nella memoria immagine degli ingressi analogici con un range di indirizzi che varia da un PLC ad un altro. La memoria può essere organizzata in bit, byte, word (2 byte) o double (4 byte).

Ad esempio, 32 bit posso essere visti come: 32 bit, 4 byte, 2 word o 1 double.

Per indirizzare un ingresso analogico bisogna sapere:

  • quanto spazio occupa,
  • a che indirizzo di partenza si trova.

Non sono più utili le informazioni di modulo (byte) e morsetto (bit) ma solo l’indirizzo con cui viene mappato in memoria immagine.

Gli indirizzi possono cambiare da costruttore a costruttore.

Tipologia di indirizzamentoStrutturaEsempio
Ingressi analogici% + I + tipo dato + indirizzo%IW40
Uscite analogiche% + Q (oppure O) + tipo dato + indirizzo%QB3
Cella di Memoria% + M + tipo dato + indirizzo%MD2

Spesso gli indirizzi degli I/O analogici non partono da 0 ma da un valore diverso perché la memoria immagine riservata agli analogici segue (a volte) quella dei digitali e quindi riprende la numerazione successiva all’ultima word occupata dagli I/O digitali.

Quando l’impianto è distribuito in una vasta area, può essere conveniente l’installazione di moduli remoti. Ne esistono vari tipi di moduli: analogici/digitali, ingressi, uscite o moduli misti. Questi moduli richiedono un modulo master (o scanner) che deve essere installato in uno slot libero del PLC. Il modulo scanner dialoga con i moduli remoti: ne può gestire fino ad alcune decine. Con tali moduli si risparmia:

  1. spazio nel quadro del PLC,
  2. posa di un grande numero di cavi,
  3. cablaggio di numerosi fili con relativa complessitĂ  di collegamento.

Inoltre si ha una maggiore facilitĂ  di individuazione dei guasti.

I sistemi operativi a bordo dei PLC sono di tipo real time (RTOS: Real Time Operating Systems). Devono garantire il rispetto molto stretto dei tempi, senza necessariamente essere molto veloci.

I piĂš diffusi RTOS per PLC sono:

  • VxWorks,
  • QNX,
  • Windows Compact Embedded.

I moduli di comunicazione (o moduli di rete) servono al PLC per comunicare con altri PLC, con alti computer ed altri dispositivi smart (pannello operatore, telecamera, …). La comunicazione di un PLC verso un computer o altri dispositivi complessi avviene connessioni standard: RS232, RS422/RS485, USB, TCP/IP, HDMI.

La comunicazione di un PLC verso altri PLC o dispositivi del mondo industriale avviene tramite protocolli specifici, ad esempio: Profibus, DeviceNet, TCP/IP, Modbus, Controlnet, Powerlink, Ethercat, Profinet, CAN BUS, Sercos.

Un protocollo di comunicazione è un insieme di regole che definiscono come un pacchetto di dati digitali debba essere scambiato.

Il mezzo fisico è il mezzo che trasmette fisicamente le informazioni.

Il bus di campo è l’insieme costituito da protocollo e mezzo fisico. Si specifica “di campo” (field) perché nell’automazione industriale si intende lo spazio fisico occupato dalla parte della macchina dove sono alloggiati sensori e attuatori. I sensori sono spesso chiamati “sensori di campo” (field sensors).

bus di campo={protocollomezzo fisico\text{bus di campo} = \begin{cases} \text{protocollo} \\ \text{mezzo fisico} \end{cases}

Le comunicazioni sono in gran parte ancora cablate con rame. Le trasmissioni wireless sono rare per problemi di affidabilità e sicurezza. Le trasmissioni in fibra ottica sono usate quasi solamente dove si presentano problemi di interferenze elettromagnetiche (la luce non è disturbata dai campi elettromagnetici).

Tra i piĂš diffusi bus di campo, ci sono: PROFIBUS e PROFINET (di Siemens), CAN (di Bosch), POWERLINK (di B&R), ETHERCAT (il bus di campo piĂš veloce), MODBUS (di Modicon).

bus-di-campo

Tra i moduli speciali si possono trovare:

  • Modulo controllo assi,
  • modulo PID (proportional-integral-derivative, proporzionale-integrale-derivativo),
  • schede di espansione di memoria,
  • moduli di backup,
  • web server TCP-IP,
  • porte seriali.

Eseguire il programma utente dall’inizio alla fine vuol dire effettuare un ciclo (il cosiddetto ciclo macchina).

L’elaborazione ciclica è il tempo che il controllore impiega per una singola elaborazione del blocco di tutte le istruzioni del programma. Il tempo di ciclo è il tempo necessario per esecuzione del programma utente una volta sola. Il tempo di ciclo si può calcolare sommando il tempo necessario per eseguire ogni istruzione.

Eventi molto rapidi possono essere “persi” tra un ciclo e il successivo. Il tempo di ciclo di esecuzione del PLC costituisce un limite alla rapidità di risposta del PLC ad un allarme.

Il ciclo di elaborazione non ha durata costante. Se, ad esempio, sono presenti istruzioni condizionali, allora il ciclo potrebbe durare di piĂš o di meno in base al blocco di istruzioni che vengono eseguite.

Il tempo di ciclo è costantemente controllato da un apposito sistema definito watchdog.

Funzionamento classico: ciclo sincrono in ingresso e in uscita

Il PLC esegue ciclicamente e continuativamente il software caricato su di esso. Il software si può comporre di piÚ programmi diversi, ciascuno dei quali controlla una certa porzione o funzionalità della macchina.

Si effettua una elaborazione ciclica composta dai seguenti blocchi:

  1. Lettura dello stato di tutti gli ingressi,
    • memorizzazione nel registro immagine ingressi.
  2. Elaborazione sequenziale delle istruzioni: le istruzioni di comando vengono elaborate in sequenza dalla CPU,
    • memorizzazione risultati nel registro immagine uscite.
  3. Attivazione sequenziale di tutte le uscite.
    • tornare al punto 1.

Il sistema operativo del PLC gestisce l’alternarsi delle tre fasi e provvede alla lettura degli ingressi, alla scrittura delle uscite e all’esecuzione del codice.

Il sistema operativo alloca del tempo della CPU del PLC anche allo svolgimento di operazioni di routine (verificare le tensioni di alimentazione, verificare se un modulo è stato aggiunto o tolto a caldo e cosÏ via).

Alcune parti del codice non sono eseguite ciclicamente, ma solo al verificarsi di un certo evento (solitamente critico). Queste parti sono considerate interrupt che fanno interrompere il normale funzionamento ciclico e fanno saltare il codice alla routine che gestisce il problema, per poi tornare (eventualmente) al punto da cui il ciclo si era interrotto.

Il ciclo di esecuzione del PLC basato su questo schema ha il vantaggio di “congelare” gli ingressi per tutta la durata dell’elaborazione del programma utente e quindi non si corre il rischio che alcune parti di programma eseguano elaborazioni su variabili di ingresso non omogenee.

Esempio: All’istante di “congelamento” degli ingressi, il sensore ABC fornisce un’informazione numerica pari a 5 e durante il ciclo di esecuzione il valore del sensore cambia. Il programma, per quel ciclo, leggerà sempre il valore 5. Tutte le istruzioni che fanno riferimento al sensore ABC utilizzano il valore 5 fino alla fine del ciclo. Senza il cosiddetto “congelamento”, un’istruzione all’inizio del ciclo utilizzerebbe il valore 5 e due istruzioni dopo un’altra istruzioni potrebbe utilizzare un valore di 10 a causa di una nuova lettura da parte del sensore. I dati non sarebbero omogenei.

Il “congelamento” degli ingressi e delle uscite è il modo più classico con il quale lavora un PLC.


Il PLC acquisisce tutti gli ingressi all’inizio del ciclo e li memorizza nell’immagine degli ingressi. L’immagine rimane invariata per tutto il ciclo del PLC. Se gli ingressi variano durante il ciclo, questa variazione non viene considerata. Durante l’elaborazione del programma, le uscite vengono calcolate e memorizzate nell’immagine delle uscite. Solo a fine ciclo vengono effettivamente inviate ai relativi attuatori.

Vantaggi:

  • Completamente sincrono: ingressi e uscite rimangono invariati durante il ciclo,
  • Utile per cercare guasti e collaudo: permette in ogni istante una descrizione completa dei valori delle variabili.

Svantaggi:

  • Ritardo nell’acquisizione degli ingressi e nel comando delle uscite.

Quando si fa riferimento ad un ingresso, questo viene letto direttamente dal campo. Tale lettura non comporta un aumento del tempo in quanto gli I/O sono mappati in zone di memoria: il tempo necessario rimane un tempo di lettura dalla memoria.

Durante l’elaborazione del programma, le uscite vengono calcolate e memorizzate nell’immagine delle uscite. Solo a fine ciclo vengono effettivamente inviate sul campo.

Vantaggi:

  • A paritĂ  di istruzioni del programma utente, non si spreca tempo nella memorizzazione dell’immagine degli ingressi.
  • Non si perdono eventuali variazioni dell’ingresso durante un tempo di ciclo.

Svantaggi:

  • Durante un ciclo, una qualsiasi routine software, se eseguita piĂš volte con gli stessi ingressi, può dare uscite diverse.
  • Possibile incoerenza.

Il PLC acquisisce tutti gli ingressi all’inizio del ciclo e li memorizza nell’immagine degli ingressi. L’immagine rimane invariata per tutto il ciclo del PLC. Se gli ingressi variano durante il ciclo, questa variazione non viene considerata.

Durante l’elaborazione del programma, le uscite vengono direttamente inviate sul campo, senza essere memorizzate nell’immagine delle uscite.

Vantaggi:

  • A paritĂ  di istruzioni del programma utente, non si spreca tempo nella scrittura dell’immagine delle uscite.

Svantaggi:

  • Scrivere piĂš volte valori diversi sulla stessa uscita nello stesso ciclo potrebbe portare ad oscillazioni dei dispositivi comandati.

  • L’aggiornamento delle uscite è piĂš rapido, ma possono manifestarsi dei problemi di funzionamento (per esempio, un’uscita ridiventa ingresso, condizionando a sua volta un’altra uscita).

  • Se due uscite sono settate in due istruzioni “lontane” fra loro, si attiveranno in tempi diversi.

Vantaggi:

  • A paritĂ  di istruzioni del programma utente, non si spreca tempo nella memorizzazione dell’immagine degli ingressi.

  • Non si perdono eventuali variazioni dell’ingresso durante un tempo di ciclo.

  • A paritĂ  di istruzioni del programma utente, non si spreca tempo nella scrittura dell’immagine delle uscite.

Svantaggi:

  • Durante un ciclo, una qualsiasi routine software, se eseguita piĂš volte con gli stessi ingressi, può dare uscite diverse.

  • Possibile incoerenza.

  • Scrivere piĂš volte valori diversi sulla stessa uscita nello stesso ciclo potrebbe portare ad oscillazioni dei dispositivi comandati.

  • L’aggiornamento delle uscite è piĂš rapido, ma possono manifestarsi dei problemi di funzionamento.

  • Se due uscite sono settate in due istruzioni “lontane” fra loro, si attiveranno in tempi diversi.

INPUTOUTPUT
sincronoasincronosincronoasincrono
XX
XX
XX
XX

Modalità di lettura indipendenti dall’immagine degli ingressi possono riguardare anche:

  1. ingressi veloci: letti molto di frequentemente,

  2. ingressi legati alle routine di interrupt: possono intervenire in qualsiasi momento del ciclo di scansione,

  3. I/O analogici.

Quando non si utilizzano le immagini di processo, la lettura di un ingresso viene effettuata nel momento stesso in cui viene invocata e la modifica dello stato di un’uscita si ripercuote immediatamente sull’uscita del PLC. È possibile strutturare il ciclo del programma con punti di attesa e feedback.

Gli ingressi asincroni (quelli in cui viene effettuato il refresh in modo indipendente dall’esecuzione del ciclo di programma) possono essere resi sincroni tramite istruzioni CPS (Copy Synchronous) o II (immediate Input). Alcuni PLC che gestiscono gli I/O in modo sincrono possono forzare i valori delle uscite ad essere attuati istantaneamente e non alla fine del ciclo (con istruzioni tipo IMMEDIATE OUT - IO).

Il software di un PLC descrive una regola di comportamento che relaziona i segnali dei sensori (ingresso) con i segnali per gli attuatori (uscite).

In un modello condition-driven si pianificano le azioni da eseguire sulla base di condizioni rilevate sul processo (o interne al controllore).

In un modello state-driven invece si pianificano le azioni in base allo stato di funzionamento del processo.

Il programma di controllo comanda determinate azioni sul processo in base al presentarsi di determinate condizioni:

  • Eventi segnalati da appositi sensori a bordo macchina,
  • Eventi interni al controllore (timer, contatori).

Il programma di controllo comanda determinate azioni sul processo in base allo stato di evoluzione del processo.

Lo stato di evoluzione del processo dipende dalla sequenza degli ingressi che si sono presentati fino a quel momento.

Stato: uno stato è una condizione di funzionamento del processo che persiste per un periodo di tempo significativo ed è distinguibile da ogni altra condizione di funzionamento. Una condizione di funzionamento si dice distinguibile da ogni altra se è diversa in:

  • eventi che vengono accettati nello stato,
  • transizioni che si diramano dallo stato,
  • azioni che vengono eseguite.

Transizione: risposta ad un evento che causa un cambiamento nello stato del processo.

Il sistema è costituito da una macchina che effettua fori circolari tramite una punta rotante (come quella di un’avvitatore). La macchina deve salire e scendere per effettuare i fori su cubi di legno. I cubi vengono movimentati da un rullo e fissati nella sede di lavorazione da un’altra macchina. Il segnale di “cubo presente” avvia motore verso il basso finché il sensore di presenza inferiore segnala che la punta è arrivata a fine corsa. Il motore deve invertire la sua corsa e far risalire il pistone finché non viene attivato il sensore di fine corsa superiore. A questo punto la macchina foratrice segnala che il cubo può essere sganciato e continuare il suo percorso sul rullo.

I segnali di ingresso sono: ARRIVO_CUBO, FINE_CORSA_DOWN, FINE_CORSA_UP.

Per ogni evento (o combinazione di tali), si definisce un’azione: AGGANCIAMENTO, MOTORE_RULLO, MOTORE_FORATRICE, MOTORE_FORATRICE_DIREZIONE.

Il programma relativo a questo progetto è qui scritto in pseudocode per semplicità:

IF ARRIVO_CUBO THEN
AGGANCIAMENTO := TRUE;
MOTORE_RULLO := FALSE;
MOTORE_FORATRICE := TRUE;
MOTORE_FORATRICE_DIREZIONE := TRUE;
END IF;
IF FINE_CORSA_DOWN THEN
FORATURA := TRUE;
MOTORE_FORATRICE_DIREZIONE := FALSE;
END IF;
IF FINE_CORSA_UP AND FORATURA THEN
AGGANCIAMENTO := FALSE;
FORATURA := FALSE;
MOTORE_FORATRICE := FALSE;
MOTORE_RULLO := TRUE;
END IF;

In questo caso si trascura l’agganciamento del blocco di legno al rullo durante la lavorazione.

Fase 1: analisi degli stati operativi del processo, identificati in base alla descrizione del funzionamento della macchina.

Per definire uno stato operativo bisogna rispondere alle domande:

  • quali azioni compie la macchina in un dato momento?
  • queste azioni sono diverse da quelle che esegue in altri momenti del ciclo?

Esempio:

  1. WAIT: la foratrice è in attesa dell’arrivo del cubo di legno, viene eseguito l’azionamento del motore del rullo.
  2. FORATRICE_DOWN: la foratrice scende per effettuare il foro sul cubo.
  3. FORATRICE_UP: la foratrice risale per raggiungere la posizione di riposo.

In questa fase si identifica solo la sequenza logica delle operazioni da eseguire: cosa deve fare la macchina senza implementare il come lo fa. Ad ogni stato operativo diverso, si associa uno stato.

La separazione dell’implementazione dalla progettazione suddivide il problema a blocchi e ne rende più facile sia la comprensione che la ricerca della soluzione.

Fase 2: definizione della topologia di rete. Per ogni stato si definiscono gli eventi che si devono verificare per evolvere verso il nuovo stato.

plc-intro-es-prog-state

Fase 3: determinazione delle azioni che devono essere eseguite ad ogni passo.

statoazione
WAITMOTORE_RULLO
FORATRICE_DOWNMOTORE_FORATRICE_DOWN
FORATRICE_UPMOTORE_FORATRICE_UP

A seguito della costruzione del diagramma degli stati, è importante verificare che:

  • sia stato indicato lo stato iniziale, quello da cui parte la macchina a stati quando il software di controllo viene resettato.

  • non ci sono stati non connessi da cui non parte alcun collegamento,

  • sono assenti stati non raggiungibili: tranne i soli stati iniziali, a tutti gli stati deve arrivare un collegamento.

Costruzione incrementale del diagramma degli stati: la costruzione del diagramma degli stati può avvenire in modo incrementale:

  1. individuazione dello stato iniziale (o gli stati iniziali),

  2. individuazione delle transizioni a partire dallo stato iniziale,

  3. individuazione incrementale di stati e transizioni, ripercorrendo l’evoluzione sequenziale della macchina.

La programmazione state-driven consente di:

  • avere decomposizione della complessitĂ  della macchina: in ogni stato logico di funzionamento, solo un sottoinsieme di sensori ed attuatori sono di interesse.
  • semplificare l’analisi funzionale del processo: la scomposizione in stati facilita l’analisi delle fasi operative del processo e la scrittura delle specifiche del software.
  • gestire eventuali azioni manuali.