Le costanti sono identificatori di valori immutabili. Le costanti possono essere dichiarate
localmente all'interno di un POU o globalmente in un elenco di variabili globali.
Il segmento di dichiarazione viene esteso con la parola chiave CONSTANT.
Le costanti sono anche stringhe che rappresentano il valore di un tipo di base, come
numeri interi o a virgola mobile (ad esempio, 16#FFFF_FFFF, T#5s, o -1.234 E-5). Per distinguerle, queste costanti sono chiamate anche letterali, costanti letterali
o costanti senza nome. Esistono letterali logici (TRUE, FALSE) o numerici (3.1415, T#5s), ma anche letterali di stringa ('Hello world!', "black").
Dichiarazione di sintassi
<scope> CONSTANT
<identifier> : <data type> := <initial value> ;
END_VAR
<scope> : VAR | VAR_INPUT | VAR_STAT | VAR_GLOBAL
<data type>: <elementary data type | user defined data type | function block >
<initial value> : literal value | identifier | expression
Valori iniziali consentiti:
-
Letterale
Esempi:
TRUE,FALSE,16#FFFF_FFFF -
Costante denominata che è stata dichiarata in un'altra posizione
-
Espressione semplice composta da letterali, anche combinata con operatori semplici, come + - *
Gli ingressi o le chiamate di funzione non possono essere specificati come valore iniziale.
Esempio
VAR_GLOBAL CONSTANT
g_ciMAX_A : INT := 100;
g_ciSPECIAL : INT := g_ciMAX_A - 10;
END_VAR
Le costanti sono definite solo per la dichiarazione. È richiesta l'assegnazione di un valore iniziale. All'interno di un'implementazione, le costanti vengono solo lette e quindi appaiono sempre a destra dell'operatore di assegnazione in un'istruzione.
Le costanti vengono sostituite con il valore iniziale quando il codice viene compilato. Deve anche essere possibile calcolare il valore iniziale in tempo di compilazione.
Le costanti dei tipi strutturati o definiti dall'utente vengono calcolate solo in fase di esecuzione. Le costanti strutturate nei programmi o nelle GVL vengono calcolate una sola volta all'avvio del programma. Le costanti strutturate nelle funzioni o nei metodi vengono calcolate ogni volta che la funzione o il metodo vengono richiamati. Pertanto, l'inizializzazione delle costanti strutturate può dipendere dagli ingressi o dall'esecuzione di chiamate di funzione.