Indice
Simulazione ministeriale seconda prova 2018
Risorse
Operazioni preliminari
Per prima cosa occorre leggere attentamente il testo e individuare le specifiche:
- comandi dell'operatore: start, stop, emergenza, ecc.
- ingressi: sensori impiegati e relative caratteristiche (analogici/digitali)
- uscite: attuatori impiegati e relativo pilotaggio
- sequenza delle operazioni
- allarmi, emergenze e condizioni anomale di funzionamento
- leggere con la massima attenzione le consegne indicate per punti
- stabilire eventuali ipotesi aggiuntive o semplificative
Consideriamo il testo proposto e proviamo a ricavare le specifiche.
Comando:
- assente perché il sistema è completamente automatico (non è previsto l'intervento dell'operatore)
Ingressi:
- sensore di umidità
- funzionamento a soglia e campo di valori intorno al 40%
- può avere un'uscita analogica (proporzionale al tasso di umidità) ma si può pensare ad un condizionamento che produca un valore digitale che segnali il superamento o meno di una soglia (più semplice)
- sensore di temperatura:
- campo di temperatura 0-50°C
- uscita analogica
- tre soglie: 18°C, 20°C e 22°C
- finecorsa guida vaporizzatore
Uscite:
- vaporizzatore con
- pompa azionata da motore
- movimento avanti/indietro con un altro motore e finecorsa ai due estremi della guida
- piastre riscaldanti elettriche
- due ventole di aerazione
- 6 lampade (accese a gruppi di due)
Ipotesi aggiuntive:
- controllo tramite PLC
- visto che un funzionamento è a soglia su userà un sensore di umidità analogico e un circuito di condizionamento con comparatore per aver un'uscita digitale
- date le ridotte dimensioni della serra si ritengono sufficienti un solo sensore di temperatura e uno di umidità (eventualmente più sensori dello stesso tipo e valore medio ricavato con un sommatore non invertente con operazionale)
- due ventole di areazione ai due estremi della serra azionate da due motori comandati dallo stesso segnale
- considerata la bassa potenza in gioco si utilizzeranno motori e attuatori alimentati con tensione di rete monofase sicuramente disponibile; il comando avverrà tramite contattori o relè azionati dal PLC
Punto 1
Schema a blocchi del sistema acquisizione dati e sua descrizione.
Considerato il funzionamento a soglia verrà utilizzato un sensore di umidità analogico1) con un circuito di condizionamento a comparatore per segnalare il superamento della soglia del 40% con un segnale digitale (livello alto o basso di tensione).
Considerato il campo di temperatura ridotto, la facilità di utilizzo e la linearità si decide di impiegare il sensore di temperatura integrato LM35 con un circuito di condizionamento che adatti il segnale al range di tensione in ingresso del PLC (0-10 Volt).
I due finecorsa meccanici aprono un contatto normalmente chiuso quando attivati.
Le uscite sono tutte digitali:
- due per il comando avanti/indietro del motore del vaporizzatore
- una per la pompa del vaporizzatore
- una per il comando dei due motori delle ventole
- una per azionare le piastre riscaldanti
- tre per accendere i tre gruppi di lampade
Punto 2
Caratteristiche dei sensori e loro condizionamento.
L'LM35 ha un'uscita in tensione e fornisce 10mV per ogni grado centigrado. Il segnale può essere condizionato con un circuito con amplificatore non invertente per avere 0V a 0°C e 10V a 50°C (si ipotizza che la precisione sia sufficiente). Il guadagno richiesto è 20 ed è ottenibile con due resistenze da 1k e 19k.
In mancanza di un catalogo da cui scegliere il sensore analogico di umidità si ipotizza di avere un segnale in tensione tra 0 e 10 Volt. Un circuito con comparatore con una tensione di soglia di 4 Volt nell'ingresso non invertente produce un livello alto di tensione quando il tasso di umidità scende sotto il 40%. L'uso di un comparatore con uscita a collettore aperto (ad esempio l'LM311 2) ) permette di fissare il livello alto di tensione al valore richiesto dal PLC (24V producono il valore logico 1).
Usare un operazionale al posto del comparatore complica le cose perché bisogna sceglierne uno che funzioni con alimentazione singola (per motivi pratici e per avere il livello basso a 0V invece che a -Vcc) e adattare il segnale in uscita con un traslatore di livello che porti la tensione a 24V (si può fare con un BJT ma il comportamento è invertente, con un inverter oper-collector, con un comparatore tipo l'LM339… ma a quel punto tanto valeva usarlo subito).
Finecorsa meccanici con contatti normalmente chiusi (in mancanza di corrente comandano l'arresto del motore) da collegare direttamente agli ingressi del PLC.
Punto 3
Algoritmo di gestione dell'impianto.
Si individuano tre comandi indipendenti per lampade, vaporizzatore e riscaldamento/areazione. Il sistema di automazione non è propriamente sequenziale e si può pensare di gestire separatamente, con tre funzioni del programma, lampade, temperatura e umidità.
Per le lampade, usando la variabile che contiene l'ora dell'orologio di sistema, si comandano le uscite con delle istruzioni di comparazione:
- 00 ≤ ora < 5: tre uscite attive
- 5 ≤ ora < 8: due uscite attive
- 8 ≤ ora < 18: una uscita attiva
- 18 ≤ ora < 00: due uscite attive
Si usa la variabile che contiene il valore della temperatura, ottenuta tramite l'ingresso analogico, con delle istruzioni di comparazione:
- comparatore con isteresi con soglie 18°C e 20°: attivazione piastre riscaldanti
- comparatore con isteresi con soglie 20°C e 22°: attivazione ventole areazione
La gestione dell'umidità prevede un ciclo più complesso con un contatore all'indietro e dei consensi. Si può fare a stati o con un contatore. Con contatore all'indietro un possibile algoritmo è questo:
- se l'umidità scende sotto il 40%, il conteggio è terminato e il vaporizzatore è a inizio guida si comincia il conteggio all'indietro (da 2 a 0)
- ogni volta che il vaporizzatore arriva in fondo alla guida si decrementa il conteggio (dopo due corse avanti-indietro il conteggio è zero)
- se il conteggio non è terminato e il vaporizzatore è a inizio guida si setta la marcia avanti (con memoria)
- se il vaporizzatore è in fondo alla guida si setta la marcia indietro (con memoria)
- i due finecorsa resettano la marcia avanti e la marcia indietro indietro
- il motore della pompa si avvia durante la marcia avanti o indietro
L'inversione del motore monofase si fa con due teleruttori come mostrato qui.
Punto 4
In una prova scritta non è possibile ricordare tutte le funzioni, le istruzioni e le impostazioni di un PLC. Probabilmente è preferibile una soluzione generica che consideri le istruzioni comuni a tutti i PLC (contatti, bobine, temporizzatori, ecc.). Per funzionalità particolari (orologio hardware, ingressi analogici, ecc.) si faranno ipotesi aggiuntive che permettano di scrivere una soluzione generica.
Una possibile tabella di indirizzamento per ingressi e uscite è la seguente (questa va certamente indicata, se non altro come legenda per interpretare un eventuale programma in ladder dove si riporteranno solo i nomi simbolici o solo gli indirizzi).
nome | indirizzo | commento |
---|---|---|
FC1 | I0.0 | finecorsa NC inizio guida vaporizzatore |
FC2 | I0.1 | finecorsa NC fine guida vaporizzatore |
B1 | I0.2 | umidità minore del 40% |
TEMP | IW64 | segnale analogico temperatura (int tra o e 24678) |
KM1 | Q0.0 | contattore marcia avanti motore vaporizzatore |
KM2 | Q0.1 | contattore marcia indietro motore vaporizzatore |
KM3 | Q0.2 | contattore motore pompa vaporizzatore |
KM4 | Q0.3 | contattore piastre riscaldanti |
KM5 | Q0.4 | contattore motore ventole |
EL1 | Q0.5 | lampade 1 e 2 |
EL2 | Q0.6 | lampade 3 e 4 |
EL3 | Q0.7 | lampade 5 e 6 |
Questa tabella va completata aggiungendo i merker utilizzati nella propria soluzione. Ad esempio:
nome | indirizzo | commento |
---|---|---|
VENTOLE | M2.0 | attivazione ventole con isteresi |
PIASTRE | M2.1 | attivazione piastre con isteresi |
CNT_EN | M2.2 | merker che abilita il conteggio da 2 a 0 |
CNT_OUT | M2.3 | merker conteggio terminato |
ERR_TIME | MW3 | codice errore lettura orologio HW (int) |
T_NORM | MD5 | temperatura normalizzata 0-1 (real) |
T_GRADI | MD9 | temperatura in gradi (real) |
Si può pensare di affidare il comando dei tre tipi di attuatori a tre funzioni distinte: una per le lampade, una per il vaporizzatore e una per ventole e piastre.
Programma per PLC:
- non esiste il blocco che realizzi un comparatore con isteresi, ma basta usare un blocco SR (set-reset con reset dominante) e delle istruzioni di confronto per ottenere il comportamento desiderato (superata una soglia si setta l'uscita, scendendo sotto l'altra soglia si resetta)
- in alternativa si può implementare l'isteresi nel circuito di condizionamento con un trigger di Shmitt e usare 2 segnali digitali (uno per le piastre e uno per le ventole) al posto di un unico segnale analogico per la temperatura
Una possibile soluzione è contenuta in questo file zip.
Variante con contatore 2019
Una possibile soluzione per la gestione del sistema di umidificazione con un contatore (diversa da quella del progetto zippato) è mostrata in figura:
La logica è questa (in questo esempio i finecorsa sono normalmente aperti per semplicità):
- quando l'umidità è meno del 40% (UMID alto) e se il conteggio è a zero si setta la pompa del vaporizzatore (M_VAP)
- il vaporizzatore si spegne e il conteggio si azzera dopo che il carrello è tornato due volte al punto di partenza (FC1)
- il finecorsa alla partenza arresta il movimento all'indietro (M_IND) e fa ripartire in avanti il carrello (M_AV) se il vaporizzatore è attivo
- il finecorsa in fondo arresta il movimento in avanti (M_AV) e fa tornare indietro il carrello (M_IND)
Variante SFC
Per la gestione delle lampade e di ventole/piastre non serve usare la programmazione per passi - non c'è una vera e propria sequenzialità nel controllo - ma per la gestione del vaporizzatore potrebbe essere conveniente. Una possibile soluzione con diagramma SFC è la seguente (vedi appunti su SFC):
La codifica in ladder potrebbe non essere nemmeno richiesta; SFC infatti non è solo un formalismo per descrivere automi sequenziali ma anche un vero e proprio linguaggio di programmazione per PLC (per Siemens solo nei modelli S7-1500). Volendo tradurre da SFC a ladder si procede come indicato negli appunti:
- il merker firstscan imposta lo stato iniziale e resetta tutti gli altri
- cinque merker di passo, attivi uno alla volta, individuano la sequenza degli stati
- le transizioni da uno stato al successivo dipendono dallo stato dei finecorsa (la prima anche dal segnale del sensore di umidità)
- ad ogni transizione si resetta lo stato corrente e si attiva il successivo
- la gestione delle uscite si fa a parte con un segmento per uscita, attivata dai merker di passo (in OR se attiva in più di uno stato) con una bobina semplice
Si ricorda che la programmazione per passi, oltre ad essere più robusta, è anche più semplice da implementare.
Osservazioni su quanto consegnato
In ordine sparso:
- LA LEGGIBILITÀ PRIMA DI TUTTO! Quindi non risparmiare sulla carta, andare a capo, la lettura non deve essere una caccia al tesoro per capire qual è il passaggio successivo
- la tabella con nomi simbolici e loro descrizione deve essere presente, preferibilmente all'inizio
- non indicare blocchi e funzioni particolari del programma in TIA Portal (NORM_X, SCALE_X, orologio, ecc.) perché non è possibile ricordarle a memoria durante la prova scritta; al loro posto:
- una spiegazione in due righe (ad esempio “il valore numerico generato dal convertitore ADC del PLC viene convertito in un valore reale compreso tra 0 e 50 contenuto nella variabile TEMP_GRADI”, oppure “il PLC contiene un orologio hardware che viene letto con un'istruzione; i dati riferiti all'orario sono disponibili come variabili in una struttura dati; utilizzeremo la variabile di tipo intero che contiene l'ora”)
- oppure un blocco generico (ad esempio un blocco “lettura orologio” con in uscita una variabile “ora” o un blocco “ingresso analogico” con in uscita una variabile “temp_gradi”)
- il diagramma SFC deve essere comprensibile; se si usano dei passi indicare a quale stato dell'automatismo corrispondono (breve descrizione… una riga al massimo); l'SFC potrebbe essere parte del punto 3, che chiede di descrivere l'algoritmo
- non usare bobine S e R se non serve (lampade)
- spiegare cos'è firstscan se lo si usa (“contatto che si chiude solo quando la CPU passa da STOP a RUN”)
Voti e osservazioni sul compito
Navigazione
Torna all'indice.