Skip to main content

Sección: VarArrays

El parámetro VarArrays permite crear matrices con tamaño configurable.

SEC VarArrays                                       //optional: yes, modifier: [UPDATE]]
    SEC VarArray : <slot identifier>                    //optional: yes, modifier []
            Variable := <variable name>;                //optional: no, type: InstancePath
            Var_Count := <variable count>;              //optional: no, type: InstancePath
            Inst_Name := <instance name>;               //optional: yes, type: StringLiteral
            Pragmas := [<pragma1>, <pragma2>,...];      //optional: yes, type: Pragmalist
            Var_Decl_Flags := <Flag1> | <Flag2> | ... ; //optional: yes, type: Flags
    END_SEC
END_SEC

Los detalles sobre la sintaxis de los tipos de definición se describen en la sección Declaración del módulo.

. Especificación:
  • La definición Variable es una ruta de instancia de entrada relativa al bloque de funciones del módulo. El tipo de datos es POINTER TO <ELEMTYPE>. <ELEMTYPE> puede ser cualquier tipo de datos.

  • El objetivo de una sección VarArray debe identificar la matriz de variables de forma única.

  • Var_Count define la ruta de la instancia de entrada de un entero Variable del bloque de funciones del módulo. Para estar disponible en el editor para la configuración, esta variable debe definirse como un parámetro. Alternativamente la variable Var_Count de Slot_Multi o InstRef_Multi se puede utilizar para definir esta variable. Múltiples VarArrays pueden usar el mismo Var_Count variable. Si el tamaño de la matriz es 0, no se generará ninguna matriz y el puntero de la matriz se establecerá en 0.

  • Inst_Name define el nombre de la variable de matriz creada. El marcador de posición %Instancename% y %VariablePath% (la ortografía en mayúsculas o minúsculas no es relevante) será reemplazada por el nombre de la instancia del módulo resp. la ruta de instancia de la variable de puntero. Los puntos serán reemplazados por subrayados. Si se omite la definición, el valor predeterminado AC_ARRAY_%VariablePath%. se usa

  • Se creará un error si dos VarArrays diferentes de un módulo tienen el mismo Inst_Name, que no incluye el marcador de posición %VariablePath%.

  • Pragmas contiene una lista de pragmas del compilador, que se insertarán antes de la variable de matriz generada.

  • Var_Decl_Flags se puede utilizar para especificar el tipo de variable de la matriz creada. Las posibles banderas son NONE, RETAIN, y PERSISTENT. Estas banderas se agregan a la sección de variables. VAR_INPUT, en el que se crea la matriz. (ejemplo: para la bandera RETAIN, VAR_INPUT RETAIN).

ejemplo 26. Ejemplo
SEC VAR_ARRAYS
        SEC VAR_ARRAY : NameList
                Variable  := psNameList;
                Var_Count := uiArraySize;
        END_SEC
        ...
        SEC PARAM : ArraySize
                Variable := uiArraySize;
                Name     := TL.ArraySize_Name;
                Desc     := TL.ArraySize_Desc;
        END_SEC
END_SEC

Entre otras declaraciones, la parte de declaración del bloque de funciones debe contener: uiArraySize: UINT := 7; psNameList: POINTER TO STRING;.