Las constantes son identificadores de valores inmutables. Puede declarar constantes
localmente dentro de un POU o globalmente dentro de una lista de variables globales.
El segmento de declaración se amplía con la palabra clave CONSTANT.
Las constantes también son cadenas que representan el valor de un tipo base, como
números enteros o de coma flotante (por ejemplo, 16#FFFF_FFFF, T#5s o -1.234 E-5). Para distinguirlas, estas constantes también se denominan literales, constantes
literales o constantes sin nombre. Existen literales lógicos (TRUE, FALSE) o numéricos (3.1415, T#5s), pero también literales de cadena ('Hello world!', "black").
Declaración sintáctica
<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
Valores iniciales permitidos:
-
Literal
Ejemplos:
TRUE,FALSE,16#FFFF_FFFF -
Constante con nombre declarada en otra ubicación
-
Expresión simple compuesta de literales, también combinada con operadores simples, como + - *
No se pueden especificar entradas o llamadas a funciones como valor inicial.
Ejemplo
VAR_GLOBAL CONSTANT
g_ciMAX_A : INT := 100;
g_ciSPECIAL : INT := g_ciMAX_A - 10;
END_VAR
Las constantes sólo se definen para la declaración. Se requiere la asignación de un valor inicial. Dentro de una implementación, las constantes sólo se leen y, por lo tanto, siempre aparecen a la derecha del operador de asignación en una sentencia.
Las constantes se sustituyen por el valor inicial cuando se compila el código. También tiene que ser posible calcular el valor inicial en tiempo de compilación.
Las constantes de tipos estructurados o definidos por el usuario no se calculan hasta el tiempo de ejecución. Las constantes estructuradas en programas o GVL se calculan una vez al inicio del programa. Las constantes estructuradas en funciones o métodos se calculan cada vez que se llama a la función o método. Por lo tanto, la inicialización de constantes estructuradas puede depender de entradas o ejecutar llamadas a funciones.