En este capítulo se proporciona información sobre los tipos de variables siguientes:
oVAR_INPUTvariables de entrada
oVAR_OUTPUTvariables de salida
oVAR_IN_OUTvariables de entrada y salida
oVAR_GLOBAL variables globales
oVAR_TEMPvariables temporales
oVAR_STATvariables estáticas
oVAR_EXTERNAL variables externas
ovariables de instancia VAR_INST
Entre las palabras clave VARyEND_VAR todas las variables locales de unPOU, se declaran No tienen conexión externa; esto es, no pueden escribirse desde el exterior.
Considere la posibilidad de añadir un atributo a VAR.
Ejemplo
VAR
iLoc1:INT; (* 1. Local Variable*)
END_VAR
Variables de entrada - VAR_INPUT
Entre las palabras clave VAR_INPUT y END_VAR, se declaran todas las variables que sirven como variables de entrada para un POU. Es decir, en la posición de llamada, el valor de las variables se puede proporcionar con una llamada.
Considere la posibilidad de añadir un atributo.
Ejemplo
VAR_INPUT
iIn1:INT (* 1. Inputvariable*)
END_VAR
Variables de salida - VAR_OUTPUT
Entre las palabras clave VAR_OUTPUT y END_VAR, se declaran todas las variables que sirven como variables de salida de un POU. Es decir, estos valores se devuelven al POU que hace la llamada.
Considere la posibilidad de añadir un atributo a VAR_OUTPUT.
Ejemplo
VAR_OUTPUT
iOut1:INT; (* 1. Outputvariable*)
END_VAR
Variables de salida en funciones y métodos:
Conforme al borrador 2 de la IEC 61131-3, las funciones (y los métodos) pueden tener salidas adicionales. Puede asignarlas en la llamada de la función como se muestra en el ejemplo siguiente.
Ejemplo
fun(iIn1 := 1, iIn2 := 2, iOut1 => iLoc1, iOut2 => iLoc2);
Variables de entrada y salida - VAR_IN_OUT
Entre las palabras clave VAR_IN_OUT y END_VAR, se declaran todas las variables que sirven como variables de entrada y salida para un POU.
NOTA: Con variables de tipo IN_OUT, se cambia el valor de la variable transferida (transferida como puntero, llamar-por-referencia). Esto es, el valor de entrada para esas variables no puede ser una constante. Por este motivo, incluso las variables VAR_IN_OUT de un bloque de funciones no se pueden leer o escribir directamente desde el exterior a través de <FBinstance>.<InOutVariable>
NOTA: No asigne símbolos de tipo bit (tales como variables %MXaa.b o BOOL que están situadas en una dirección de dicho tipo bit) a parámetros BOOL de tipo VAR_IN_OUT de bloques de funciones. Si se detecta cualquiera de esas asignaciones, se comunica como un error de compilación detectado en la vista Mensajes.
Ejemplo
VAR_IN_OUT
iInOut1:INT; (* 1. Inputoutputvariable *)
END_VAR
Variables globales - VAR_GLOBAL
Puede declarar variables normales, constantes, externas o variables remanentes que se conozcan a través del proyecto como variables globales. Para declarar variables globales, utilice las listas de variables globales (GVL). Puede añadir un GVL ejecutando el comando Añadir objeto (de forma predeterminada en el menú Proyecto).
Declare las variables localmente entre las palabras clave VAR_GLOBAL y END_VAR
Considere la posibilidad de añadir un atributo a VAR_GLOBAL.
Se reconoce una variable como variable global porque va precedida de un punto; por ejemplo, .iGlobVar1.
Para obtener más información sobre el uso múltiple de nombres de variables, el operador de ámbito global dot (.) y los espacios de nombres, consulte el capítulo Operador de ámbito global.
Las variables globales solo se pueden declarar en las listas de variables globales (GVL). Sirven para gestionar variables globales dentro de un proyecto. Puede añadir un GVL ejecutando el comando Añadir objeto (de forma predeterminada en el menú Proyecto).
NOTA: Una variable definida localmente en un POU con el mismo nombre que una variable global tendrá prioridad dentro del POU.
NOTA: Las variables globales se inicializan antes de las variables locales de los POU.
Variables temporales - VAR_TEMP
Esta función es una extensión de la norma IEC 61131-3.
Las variables temporales se (re)inicializan en cada llamada del POU. Las declaraciones VAR_TEMP solo son posibles dentro de programas y bloques de funciones. Estas variables son también solo accesibles dentro del cuerpo del POU del programa o el bloque de funciones.
Declare las variables localmente entre las palabras clave VAR_TEMP y END_VAR
NOTA: Puede utilizar VAR_TEMP en lugar de VAR para reducir el espacio en memoria que requiere un POU (por ejemplo, dentro de un bloque de funciones si la variable solo se utiliza temporalmente).
Variables estáticas - VAR_STAT
Esta función es una extensión de la norma IEC 61131-3.
Las variables estáticas se pueden usar en bloques de funciones, métodos y funciones. Declárelas localmente entre las palabras clave VAR_STAT y END_VAR. Se inicializan en la primera llamada del POU correspondiente.
Al igual que las variables globales, las variables estáticas no pierden su valor tras dejar el POU en que se declaran. Se comparten entre los POU en que se declaran (por ejemplo, varios métodos, funciones e instancias de los bloques de funciones comparten la misma variable estática). Por ejemplo, se pueden utilizar en una función como contador del número de llamadas de función.
Considere la posibilidad de añadir un atributo a VAR_STAT.
Variables externas - VAR_EXTERNAL
Son variables globales que se importan al POU.
Declárelas localmente entre las palabras clave VAR_EXTERNAL y END_VAR y en la lista de variables globales (GVL). La declaración y la declaración global deben ser idénticas. Si la variable global no existe, se mostrará un mensaje.
NOTA: No es necesario definir las variables como externas. Estas palabras clave se proporcionan para mantener la compatibilidad con IEC 61131-3.
Ejemplo
VAR_EXTERNAL
iVarExt1:INT; (* 1st external variable *)
END_VAR
Variables de instancia - VAR_INST
Si declara una variable de un método como una variable de instancia mediante el atributo VAR_INST, esta variable no se guardará en la pila del método, sino en la pila de la instancia del bloque de funciones. Por lo tanto, se comporta como otras variables de la instancia del bloque de funciones y no se reinicializa al llamar el método.
Las variables VAR_INST solo se permiten en métodos. Solo podrá acceder a este tipo de variables desde dentro del método. Los atributos como CONST o RETAIN no se permiten en la declaración. Los valores de las variables pueden supervisarse en la parte de declaración del método.
Ejemplo
METHOD meth_last : INT
VAR_INPUT
iVar : INT;
END_VAR
VAR_INST
iLast : INT := 0;
END_VAR
meth_last := iLast;
iLast := iVar;