Questa è una vecchia versione del documento!
Indice
Compito PLC: Semaforo pedonale
Specifiche
Si vuole gestire un semaforo pedonale per l'attraversamento di una strada. Sono presenti:
- un semaforo per le auto (luci rossa, gialla e verde)
- un semaforo per i pedoni con insegna luminosa “ALT” (rossa) e “AVANTI” (verde)
- due pulsanti ai lati della strada per la chiamata pedoni
Partendo da semaforo verde per le auto e ALT per i pedoni il funzionamento è questo:
- la pressione di uno dei due pulsanti prenota l'attraversamento pedonale
- dopo 10 secondi si spegne il verde e si accende il giallo
- trascorsi 5 secondi si spegne il giallo e si accende il rosso, per i pedoni si accende AVANTI e si spegne ALT
- trascorsi 10 secondi si spegne il rosso e si accende il verde, per i pedoni si spegne AVANTI e si accende ALT
Diagramma temporale
Tabella variabili
nome | indirizzo | commento |
---|---|---|
SB1 | %I0.0 | chiamata pedonale lato strada 1 |
SB2 | %I0.1 | chiamata pedonale lato strada 2 |
HR | %Q0.0 | luce rossa semaforo auto |
HG | %Q0.1 | luce gialla semaforo auto |
HV | %Q0.2 | luce verde semaforo auto |
HALT | %Q0.3 | luce ALT semaforo pedoni |
HAVANTI | %Q0.4 | luce AVANTI semaforo pedoni |
Tutto il resto (merker, temporizzatori, ecc.) altro a piacere.
Cosa fare
Lo studente deve:
- disegnare il diagramma SFC dell'automatismo
- scrivere e collaudare un programma in ladder che realizzi le specifiche
Extra:
- fare lampeggiare l'insegna AVANTI nel semaforo dei pedoni negli ultimi 5 secondi
- inserire una fase in cui il semaforo delle auto è rosso e quello dei pedoni è ALT della durata di 3 secondi prima di accendere AVANTI
- disegnare il diagramma SFC dell'automatismo con l'applicazione web draw.io ed esportare il risultato in formato .PNG (immagine)
- visualizzare su pannello HMI i due semafori e aggiungere un terzo pulsante sul pannello per prenotare l'attraversamento pedonale
Visualizzazione HMI
Per costruire un'interfaccia HMI si può procedere in questo modo:
- disegnare un rettangolo che sarà la sagoma del semaforo
- disegnare tre cerchi (rosso, giallo e verde scuri)
- disegnare tre cerchi (rosso, giallo e verde chiari)
- selezionare uno alla volta i sei cerchi scuri e dalla scheda Animazioni dinamizzare la visibilità in modo che il cerchio sia visibile solo se una variabile del PLC vale 0 (scegliere un campo di valori da 0 a 0)
- fare lo stesso per i cerchi chiari abbinando la visibilità alle rispettive variabili del PLC (stavolta scegliere un campo da 1 a 1)
- sovrapporre i cerchi dello stesso colore e posizionarli nel rettangolo, che deve essere sullo sfondo (usare l'opzione Ordine)
- selezionare rettangolo e cerchi, raggrupparli e dargli il nome semaforo_auto
- creare una nuova biblioteca e salvare l'oggetto semaforo nella biblioteca trascinandolo
SFC
Variante con un solo timer
E' possibile soddisfare le specifiche usando un solo timer al posto dei tre della soluzione proposta (timer chiamata, timer giallo e timer rosso). Per farlo occorre utilizzare la variabile ET
(Elapsed Time) del blocco dati del timer, che memorizza il tempo trascorso da quando il timer è stato avviato. La variabile è selezionabile dai menu a tendina dopo aver cliccando sul blocco dati DB del timer e contiene un valore, continuamente aggiornato, nel tipo di dati Time
del PLC. La parte di programma che gestisce il passaggio da uno stato all'altro deve essere modificata, sostituendo il contatto NA comandato dall'uscita Q
del timer (che passa a 1 trascorso il tempo impostato con PV
) con l'operatore di confronto >=
disponibile tra le istruzioni.
Qualche osservazione:
- l'operatore di confronto usa due operandi che devono avere lo stesso tipo di dati (
Time
, nel nostro caso) - i tempi da confrontare con la variabile
ET
devono essere 10, 15 e 25 secondi (per i tre timer erano 10, 5 e 10 secondi) - bisogna usare l'operatore maggiore o uguale (
>=
) e non uguale (==
) perché il PLC, il cui tempo di ciclo può arrivare a decine di millisecondi, potrebbe “saltare” l'istante in cui i due valori sono uguali (ad esempio passare da 9s e 800ms a 10s e 100ms) - l'unico timer presente deve continuare a funzionare passando dallo stato P1 a P2 e P3 quindi i tre merker di passo vanno messi in parallelo in ingresso al timer
Una possibile soluzione è riportata di seguito.
Funzione che gestisce la sequenza dei passi:
Funzione che gestisce le uscite (incompleta, alcune lampade e timer globale):