La norma IEC 61131-3 fissa lo standard per le tipiche funzioni del PLC
Oltre ad aver standardizzato la sintassi dei linguaggi di programmazione, la norma IEC 61131-3 ha segnato un importante passo avanti verso una implementazione unificata delle tipiche funzioni del PLC, come ad esempio timer, contatori o operazioni aritmetiche speciali.
Questo è stato fatto definendo le tipiche funzioni del PLC e i blocchi funzionali e descrivendo con precisione il loro comportamento. Questi elementi vengono detti, rispettivamente, funzioni standard e blocchi funzionali standard e i loro nomi risultano keyword riservate.
Una panoramica delle novità generali introdotte dalla norma in questo pdf dal sito PLCopen.
Se alle funzioni e ai blocchi funzione nei sistemi di programmazione dei diversi produttori vengono dati i nomi specificati nella norma, essi devono rispettare le regole stabilite. I produttori possono anche offrire funzioni PLC aggiuntive a supporto di particolari proprietà hardware o di altre caratteristiche di un sistema PLC.
Si può ben comprendere che La definizione di uno standard per le funzioni del PLC è un requisito essenziale per poter avere una formazione, una programmazione e una documentazione indipendente dal produttore.
Funzioni standard
1) Funzioni standard (std. FUN)
– Interfaccia chiamante
– Estensibilità
– Overloading
– Esempi
Le funzioni standard corrispondono agli operatori logici di base utilizzati nei sistemi PLC convenzionali (addizione, spostamento di bit, confronto ecc.), mentre i blocchi funzionali standard sono responsabili delle funzioni del PLC con informazioni sullo stato, come ad esempio timer, contatori, flip-flop R/S e rilevatori di picco.
Le funzioni standard
IEC 61131-3 definisce i seguenti otto gruppi di funzioni standard:
- Funzioni di conversione del tipo di dati;
- Funzioni numeriche;
- Funzioni aritmetiche;
- Funzioni per le stringhe di bit (funzioni booleane di bit-shift e bitwise);
- Funzioni di selezione e confronto;
- Funzioni per le stringhe di caratteri;
- Funzioni per tipi di dati temporali;
- Funzioni per tipi di dati enumerati.
La Tabella 1 riassume tutte le funzioni standard previste dalla norma. Le funzioni speciali per tipi di dati temporali (ADD, SUB, MUL, DIV, CONCAT) e tipi di dati enumerati (SEL, MUX, EQ, NE) sono raggruppate insieme alle altre funzioni nelle categorie Aritmetica, Confronto, Selezione e Stringa di caratteri.
La tabella fornisce il nome della funzione, il tipo di dati dei valori della funzione e una
breve descrizione della funzione. Insieme alla Tabella 2, fornisce anche i nomi e il tipo di dati delle variabili di input.
Ad eccezione dei tipi di dati generici, le abbreviazioni per i tipi di dati delle variabili di input e dei valori delle funzioni nella Tabella 1 sono elencati nella Tabella 2. Queste abbreviazioni corrispondono ai nomi delle variabili di input utilizzate da IEC 61131-3 per le rispettive funzioni standard. ENUM è un’abbreviazione aggiuntiva utilizzata per rendere più chiara la tabella 1.
Tabella 1 delle funzioni standard IEC 61131-3
I nomi delle funzioni sono elencati sul lato sinistro della colonna 1 nella Tabella 1. Il significato degli asterischi (*) nei nomi delle funzioni del gruppo “Conversione del tipo” sono i seguenti:
- * Tipo di dati della variabile di input (lato destro della colonna 1);
- ** Tipo di dati del valore della funzione (colonna 2);
Alcune note alla tabella 1
I nomi delle variabili di input di una funzione, se presenti, sono indicati in corsivo nella intestazione del gruppo, se si applicano all’intero gruppo. Ad esempio, le variabili di input per le funzioni aritmetiche sono denominate IN1, IN2 e, se estese, IN3,IN4, ecc. Se una funzione ha solo una singola variabile di input, a questa non viene dato un nome.
Se una funzione con più ingressi ha un solo ingresso dello stesso tipo di dati (overload), il nome della sua variabile è “IN” (senza numero). Questo vale per LIMIT, LEFT, RIGHT, MID e DELETE. Nell’ambito di IEC 61131-3, SEL rappresenta un’eccezione a questa uniformità. Gli input di questa funzione sono chiamati G, IN0 e IN1 (anziché IN1, IN2).
Alcune funzioni standard hanno un nome di funzione alternativo costituito da simboli nella loro rappresentazione grafica, come mostrato tra parentesi graffe subito dopo il nome della funzione nella Tabella 1. Ad esempio, la funzione di addizione può essere chiamata ADD (operatore in IL) o come “+” (simbolo grafico in LD / FBD o all’interno di espressioni ST ).
Funzioni Overloaded ed Estensibili nella IEC 61131-3
I tipi di dati delle variabili di input sono indicati tra parentesi tonde accanto ai nomi delle funzioni nella Tabella 1. Ogni funzione la cui variabile di input è descritta da un tipo di dati generico è chiamata Overloaded e ha un “sì” nella colonna corrispondente di Tabella 1. Questo significa semplicemente che la funzione non è limitata a un singolo tipo di dati per le sue variabili di input, ma può essere applicata a diversi tipi di dati.
Il tipo di dati del valore della funzione (seconda colonna) è normalmente lo stesso tipo dei dati
di input. Le eccezioni sono funzioni come LEN, che prevede una stringa di caratteri come input ma restituisce INT come valore della sua funzione.
Se una funzione standard può avere un numero variabile di ingressi (2, 3, 4, …), viene detta Estensibile. Tali funzioni hanno un “sì” nella colonna corrispondente della Tabella 1. Non è necessario immettere parametri formali quando si chiamano funzioni estensibili. Nei linguaggi testuali vengono chiamate semplicemente usando i parametri effettivi separati da virgole mentre nella rappresentazione grafica vengono omessi i nomi dei parametri all’interno delle caselle.
In IEC 61131-3 queste proprietà non sono applicate alle funzioni definite dall’utente, ma possono essere estese anche a queste funzioni (e ad altri tipi di POU) come supplemento allo standard, a seconda del sistema di programmazione utilizzato.
Funzioni overloaded come definite dalla IEC 61131-3
Le funzioni overloaded possono essere applicate per l’elaborazione di diversi tipi di dati utilizzando un unico nome di funzione. Tuttavia una funzione overloaded non supporta sempre tutti i tipi di dati di un generico tipo di dati. Ad esempio, se un sistema di programmazione PLC riconosce i tipi di dato interi INT, DINT e SINT, solo questi tre tipi di dati saranno accettati per la funzione overloaded ADD che supporta il tipo di dati generico ANY_INT.
Se una funzione standard non è overloaded, ma limitata a un determinato tipo di dati elementare, dovrà essere aggiunto al suo nome un carattere di sottolineatura e il relativo tipo di dati: ad es. ADD_SINT è una funzione di ADD limitata al tipo di dati SINT. Queste funzioni sono chiamate tipizzate (typed).
Quando si utilizzano funzioni overloaded, il sistema di programmazione automaticamente sceglie la funzione tipizzata appropriata. Ad esempio, se viene la funzione ADD della figura 3 viene chiamata con parametri effettivi del tipo DINT, la funzione ADD_DINT verrà automaticamente selezionata e chiamata (in modo trasparente all’utente).
Quando si chiamano le funzioni standard, ogni input overloaded e, in alcuni casi, il valore di ritorno della funzione, deve essere dello stesso tipo, ovvero non è consentito l’uso contemporaneo di variabili di tipo diverso come parametri effettivi.
Se gli ingressi sono di tipo diverso, il programmatore del PLC dovrà usare esplicitamente funzioni di conversione del tipo per gli ingressi corrispondenti e per il valore di ritorno della funzione rispettivamente, come mostrato nella figura 4 per ADD_DINT e ADD_INT. In tali casi, anziché la funzione overloaded ADD, dovrebbe essere usata la sua variante tipizzata (ad esempio ADD_DINT).
Funzioni estensibili
Le funzioni standard estensibili possono avere un numero variabile di ingressi, tra due e un limite superiore imposto dal sistema PLC. Nella rappresentazione grafica, l’altezza delle loro caselle dipende dal numero di input.
L’estensione del numero di ingressi di una funzione standard ha lo stesso scopo che si raggiungerebbe utilizzando chiamate in cascata alla stessa funzione, e questo sia nei linguaggi di programmazione IEC 61131-3 testuali che grafici. Soprattutto nei linguaggi grafici LD e FBD, la quantità di spazio richiesta per scrivere la funzione può essere così notevolmente ridotto.
Nella figura 5 la tripla chiamata alla funzione standard ADD viene rimpiazzata da una singola chiamata alla funzione con input estesi. La semplificazione è utile anche nei linguaggi testuali IL e ST.