Lo standard IEC 61131-3
unità di organizzazione della programmazione (POU)
Lo standard del comitato elettrotecnico internazionale IEC 61131-3 definisce:
Uno degli obiettivi dello standard è quello di aumentare la portabilità di progetti di automazione tra piattaforme di diverse case produttrici.
Ad oggi tutti i grandi produttori (Rockwell, Siemens, ecc.) aderiscono solo parzialmente allo standard.
Da diversi anni, però, esistono in commercio dispositivi fully-compliant con lo standard, un esempio è rappresentato dai prodotti Beckhoff
Lo standard definisce i tipi di variabili che è possibile utilizzare nel codice andando a definire:
Esempio
Il tipo intero è identificato dalla parola chiave INT ed i valori ammissibili sono quelli compresi nell’intervallo [-32768,32767], il che implica una implementazione su 16 bit. Il valore iniziale per questo tipo è 0.
Per rappresentare valori numerici esistono i seguenti tipi:
Sono inoltre definiti il tipo booleano (BOOL), stringa (STRING), BYTE, WORD (parola a 16 bit), DWORD (parola a 32 bit), LWORD (parola a 64 bit)
Inoltre esistono tipi speciali per gestire il tempo, come
Lo standard mette a disposizione diversi modi per derivare nuovi tipi di variabili a partire dai tipi base.
In particolare un nuovo tipo può essere derivato mediante:
Tutte le variabili vanno dichiarate tra le parole chiave VAR ed END_VAR
Esempio
VAR
pippo : BOOL;
numero : INT := 3; (* è possibile inizializzare una variabile all’atto della dichiarazione *)
numero2 : INT; (* se non inizializzata una variabile assume il valore iniziale standard *)
END_VAR
Esistono parole chiave diverse per poter definire
E’ possibile definire variabili la cui visibilità è globale attaverso VAR_GLOBAL, oppure variabili che sono memorizzate su un dispositivo collegato via rete a quello che si sta programmando utilizzando VAR_ACCESS
Lo standard prevede anche i seguenti attributi che posson essere specificati all’atto della dichiarazione di una variabile
Lo standard prevede anche una sintassi per accedere direttamente alla memoria del PLC.
Il formato da seguire per specificare un indirizzo di memoria deve essere
%ABxxxxxx
dove:
Lo standard prevede 5 linguaggi di programmazione, 3 grafici e 2 testuali:
I primi tre linguaggio sono linguaggi di basso livello, consentendo il controllo del flusso di programma solo con salti, mentre gli ultimi due consentono di implementare direttamente scelte e cicli (pertanto sono considerati linguaggi di alto livello).
E’ il linguaggio di programmazione per PLC più diffuso (forse perchè uno dei primi)
Un programma Ladder è scritto all’interno di due linee che indicano l’alimentazione. Ogni istruzione (rung) è rappresentata attraverso una riga orizzontale che congiunge le linee di alimentazione.
La tipica istruzione è divisa in due parti. La parte di sinistra è detta zona di test e sono presenti le variabili di ingresso o variabili interne. La zona di destra detta zona di azione comprende le uscite esterne o interne nonché i blocchi di funzione avanzata. L’energia può fluire solo da sinistra verso destra.
Il Functional Block Diagram è un linguaggio grafico in cui il programma si ottiene collegando tra loro blocchi funzionali elementari, come:
E’ possibile utilizzare la “retroazione” di un segnale d’uscita per utilizzarne il valore al passo di campionamento precedente come ingresso di un blocco utilizzato per determinare l’uscita stessa.
L’Instruction List è un linguaggio di programmazione testuale simile all’assembler.
L’architettura di rifeirmento è basata su accumulatore, pertanto ogni operazione viene effettuata tra l’operando e il contenuto dell’accumulatore ed il risultato viene memorizzato nell’accumulatore.
La sintassi delle istruzioni è
OPERANDO[MODIFICATORE] OPERANDO
E’ un linguaggio testuale di alto livello molto simile al Pascal
L’SFC è un linguaggio grafico di alto livello derivato dalle reti di Petri, pertanto è uno strumento per modellare sistemi dinamici (in particolare sistemi ad eventi discreti)
Un programma SFC è costituito da più grafi bipartiti orientati i cui elementi base sono
dove FASI e TRANSIZIONI rappresentano le due tipologie di nodi del grafo; in particolare:
Una transizione si dice abilitata se tutte le fasi a monte sono attive
Una transizione si dice superabile se è abilitata e la condizione logica associata risulta vera
La REGOLA DI EVOLUZIONE di un SFC stabilisce come evolve dinamicamente la condizione dell’SFC (vale a dire come cambia l’insieme delle fasi attive)
La regola di evoluzione stabilisce che se una transizione è superabile essa viene superata, cioé tutte le fasi a monte vengono disattivate (spente) e quelle a valle attivate (accese)
Le uniche due regole sintattiche da rispettare nel costruire un grafo SFC sono:
Le strutture tipiche di programmazione sono:
Secondo lo standard, un progetto di automazione è l’insieme di unità di organizzazione della programmazione (POU), le quali consentono di organizzare (strutturare) il codice e di definire la configurazione del dispositivo di controllo.
Lo standard prevede le seguenti POU per poter strutturare il codice di automazione
Ognuna di queste tre POU è composta da 3 sezioni:
Le FUNZIONI
Lo standard prevede un certo numero di funzioni predefinite (funzioni di conversione di formato, funzioni per operazioni aritmetiche, funzioni di manipolazione di stringhe, ecc.)
I BLOCCHI FUNZIONALI
sono POU riutilizzabili e possono essere assimilati a classi con un solo metodo di un linguaggio di programmazione ad oggetti
il valore dell’uscita dipende sia dagli ingressi che dallo stato interno del blocco
possono essere scritti un tutti i linguaggi previsti dallo standard (incluso l’SFC)
Anche in questo caso lo standard mette a disposizione una serie di blocchi funzionali predefiniti (contatori, temporizzatori, ecc.)
I PROGRAMMI sono contenitori di funzioni e blocchi funzionali che posso essere direttamente eseguiti da una risorsa di un dispositivo di controllo.
All’interno di un programma è possibile indirizzare variabili direttamente in memoria, dichiarare variabile globali oppure definite in dispositivi collegati via rete.
Lo standard definisce i seguenti POU per la configurazione del dispositivo di controllo
COMPITI (TASK) – consente di definite una modalità di esecuzione (ciclica, periodica oppure ad eventi) ed associarvi dei programmi
RISORSE (RESOURCE) – consente di definire risorse capaci di eseguire programmi ed associarvi dei programmi
CONFIGURAZIONE (CONFIGURATION) – è il contenitore di tutto il software di un progetto di automazione (compiti, risorse, funzioni, blocchi funzionali, programmi, variabili globali, …)
2. Requisiti dei dispositivi di controllo
3. Architetture dei dispositivi di controllo
4. [MF] Dispositivi di controllo specializzati
5. Caratteristiche di un sensore
6. Amplificatori operazionali e ponte di Wheatstone - Richiami
10. Sensori di forza
12. Regolatori PID - Leggi di controllo
13. PID: taratura dei guadagni e problemi implementativi
14. [MF] PID: implementazione digitale
15. In controllori a logica programmabile (PLC)
16. Programmazione di PLC - Lo standard IEC 61131-3
17. Gli SCADA