Una funzione è una POU che quando viene elaborata produce esattamente un elemento di dati (che può consistere di più elementi, come campi o strutture). La chiamata nei linguaggi testuali può avvenire come un operatore nelle espressioni.
Per assegnare la funzione a un'applicazione esistente, selezionare il nodo dell'applicazione nella Struttura applicazioni, fare clic sul pulsante verde con il segno più ed eseguire il comando POU.... In alternativa, fare clic con il pulsante destro del mouse sul nodo Applicazione ed eseguire il comando Aggiungi oggetto > POU dal menu contestuale. Per aggiungere un POU indipendente dall'applicazione, selezionare il nodo Globale nella Struttura applicazioni ed eseguire gli stessi comandi..
Nella finestra di dialogo Aggiungi POU, selezionare l'opzione Funzione. Immettere un Nome (<nome funzione>) e un Return Data Type (<tipo dati>) per la nuova funzione e selezionare il linguaggio di implementazione desiderato. Per scegliere il tipo di dati restituito, fare clic sul pulsante ... per aprire la finestra di dialogo dell'Accesso facilitato. Fare clic su Apri per confermare. La vista dell'editor per la nuova funzione si apre ed è possibile iniziare la modifica.
Sintassi:
FUNCTION <nome funzione> : <tipo dati>
Seguono le dichiarazioni delle variabili di ingresso e delle variabili delle funzioni.
Assegnare un risultato alla funzione. Questo significa che il nome della funzione viene utilizzato come variabile di uscita.
Non dichiarare le variabili locali come RETAIN o PERSISTENT in una funzione, perché non avrà alcun effetto..
Esempio di una funzione in ST: questa funzione richiede 3 variabili di ingresso e restituisce il prodotto delle ultime due sommato alla prima.
La chiamata di una funzione in ST può presentarsi come un operando nelle espressioni.
In IL, è possibile posizionare la chiamata di una funzione solo nelle azioni di un passo o all'interno di una transizione.
Le funzioni, a differenza di un programma o di un blocco funzione, non contengono informazioni sullo stato interno. Ciò significa che la chiamata di una funzione con gli stessi argomenti (parametri di ingresso) fornisce sempre gli stessi valori (uscita). Per questa ragione, le funzioni non possono contenere indirizzi e variabili globali.
Esempio di chiamate di funzione in IL
Chiamate di funzione in IL;
LD 5
Fct 3 ,
22
ST result
Esempio di chiamate di funzione in ST
result := fct1(5,3,22);
Esempio di chiamate di funzione in FBD
Chiamate di funzione in FBD:
Esempio:
fun(formal1 := actual1, actual2); // -> error message
fun(formal2 := actual2, formal1 := actual1); // same semantics as the following:
fun(formal1 := actual1, formal2 := actual2);
In base allo standard IEC 61131-3, le funzioni possono avere uscite aggiuntive. Possono essere assegnate nella chiamata della funzione. In ST, ad esempio, secondo la seguente sintassi:
out1 => <variabile uscita 1> | out2 => <variabile uscita 2> | ...altre variabili uscita
La funzione fun è definita con 2 variabili di ingresso in1 e in2 e due variabili di uscita out1 e out2. I valori di uscita di fun vengono scritti nelle variabili dichiarate localmente loc1 e loc2.
fun(in1 := 1, in2 := 2, out1 => loc1, out2 => loc2);