Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2019
Come si fa a scrivere in un PLC le istruzioni che, sulla base dei valori letti dai sensori, vanno ad
implementare le azioni sugli attuatori?
Come abbiamo anticipato, i PLC mettono a disposizione dell’utente una serie di linguaggi di
programmazione che possono essere utilizzati per scrivere l’argoritmo di controllo. Molti di questi sono
piuttosto rudimentali, nel senso che sono “linguaggi di basso livello”, con istruzioni molto simili alle
istruzioni macchina e dipendono dal particolare PLC che viene comprato: variano in base alla marca o
all’anno di produzione: i PLC più vecchi hanno a disposizione un minor numero di linguaggi di
programmazione. Per questo motivo, visto che non siamo particolarmente interessati ad imparare un
linguaggio di programmazione di un PLC, quello che faremo sarà semplicemnte andare a vedere come
si può scrivere un algoritmo di controllo di un’applicazione domotica, utilizzando uno pseudo-linguaggio
di alto livello, cioè senza perdere tempo ad imparare comandi particolari.
Ciò che a noi interessa è capire l’architettura e la filosofia dell’algoritmo domotico.
Il linguaggio che utilizzeremo è ispirato ai così detti SEQUENTIONAL FUNCTIONAL CHART (SFC), che
in italiano si può tradurre diagramma di flusso funzionale.
E’ ispirato nel senso che noi lo semplificheremo notevolmente: quello che ci interessa è capire, a seconda
dell’applicazione domotica:
- quando c’è bisogno di implementarla utilizzando un comando “se-allora”;
- quando c’è bisogno di fare un ciclo;
- quando c’è bisogno di utilizzare i connettori logici “and”, “or”.
Nonostante sia molto semplice come linguaggio di programmazione, ha comunque delle regole.
All’interno di un passo ci possono essere scritte più azioni (es: nello stesso passo ci posso scrivere
accendi termosifoni e spegni finestre).
Come si scrive la transizione: usando linguaggi informatici definiti dalla norma. Noi non usiamo
questI
linguaggi informatici, ma scriviamo la transizione a parole.
SEQUENZE ALTERNATIVE:
Costrutto del linguaggio di programmazione che ci permette
di andare ad implementare l’operazione di “or”.
E’ possibile realizzare sequenze alternative tramite percorsi
divergenti e convergenti. Le sequenze sono eseguite in mutua
esclusione (o fai questo o fai quell’altro: non si può verificare
che si fanno entrambe).
Si riconosce la presenza di sequenze alternative perché dopo
un passo ci sono 2 transizioni.
SEQUENZE SIMULTANEE:
Operazione di “and”: faccio sia l’uno che l’altro.
Le sequenze simultanee si indicano con due linee
orizzontali parallele.
Le sequenze simultanee vengono eseguite
indipendentemente (in parallelo) fino a quando non
viene incontrata una convergenza.
Per passare al passo successivo dopo la
convergenza, è necessario che:
- tutte le sequenze simultanee abbiano raggiunto
l’ultimo passo;
- sia verificata la condizione della transizione posta
dopo la convergenza.
TRANSIZIONI
- Una transizione è rappresentata da una barra orizzontale nera.
- A ciascuna transizione è possibile associare almeno uno Step precedente ed almeno uno Step
seguente (Step precedenti e seguenti possono essere maggiori di uno).
- Le transizioni sono delle qualsiasi espressioni che forniscano un risultato booleano (TRUE, FALSE)
- La condizione associata ad una transizione è valutata solo quando tutti gli Step precedenti ad essa
sono attivi.
- Quando tutti gli Step precedenti ad una transizione sono attivi e la condizione ad essa associata è vera,
tutti gli Step precedenti si disattivano e diventano attivi gli Step seguenti.
- Se ad una transizione è associato un nome, esso è unico in tutto il programma.
AZIONI
- Ad ogni Step è possibile associare una o più azioni.
- Lo Standard IEC 113-3 prevede che qualunque azione associata ad uno step, che viene eseguita
quando lo step è attivo, venga eseguita ancora una sola volta dopo che lo step viene disattivato.
Ogni azione ha un IDENTIFICATORE: parametro (che noi non useremo) che specifica le modalità di
esecuzione dell’azione. Può assumere i valori:
- identificatore “N”: l’azione1
viene eseguita continuamente
mentre lo Step1 è attivo. Quando
lo Step1 è disattivato, l’azione è
eseguita una volta sola.
SALTO
Da Start ci sono 2 transizioni:
- se è verificata la tran1 viene eseguita una sequenza di azioni;
- se è verificata la tran2 si conclude subito.
ESEMPIO 1:
C’è un errore perché:
- All’inizio, dopo lo Step F10 ci sono 2 transizioni:
se è verificata T10 vado in F11 (e poi scendo fino a F15);
se è verificata T2 vado in F21 (e poi scendo fino a F28);
se sono verificate tutte e due, dò la precedenza a sinistra,
quindi vado in F11 (e scendo fino a F15).
- Alla fine, c’è un AND (2 linee orizzontali): non potrò mai
arrivare a valutare la transizione T20 perché posso arrivare a
F15 o a F28, ma NON posso arrivare a tutte e due
contemporaneamente.
ESEMPIO 3:
C’è un errore perché:
Ho un AND: vado ad eseguire in parallelo tutte e due le
sotto sequenze.
Quella di sinistra non ha problemi: non ci sono alternative.
In quella di destra, dopo lo Step6 ci sono due possibilità: o
faccio Step7 o Step9.
Se faccio Step7 va tutto bene, perché significa che
probabilmente arriverò allo Step8.
Se, invece, da Step6 vado Step9: non arriverò mai allo
Step8. Sequenza che non potrà mai andare avanti.