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
SFC
Tabella con voti e annotazioni
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):