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_SECLos detalles sobre la sintaxis de los tipos de definición se describen en la sección Declaración del módulo.
La definición
Variablees una ruta de instancia de entrada relativa al bloque de funciones del módulo. El tipo de datos esPOINTER TO <ELEMTYPE>.<ELEMTYPE>puede ser cualquier tipo de datos.El objetivo de una sección
VarArraydebe identificar la matriz de variables de forma única.Var_Countdefine la ruta de la instancia de entrada de un enteroVariabledel 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 variableVar_Countde Slot_Multi o InstRef_Multi se puede utilizar para definir esta variable. Múltiples VarArrays pueden usar el mismoVar_Countvariable. 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_Namedefine 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 predeterminadoAC_ARRAY_%VariablePath%. se usaSe 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%.Pragmascontiene una lista de pragmas del compilador, que se insertarán antes de la variable de matriz generada.Var_Decl_Flagsse puede utilizar para especificar el tipo de variable de la matriz creada. Las posibles banderas sonNONE,RETAIN, yPERSISTENT. Estas banderas se agregan a la sección de variables.VAR_INPUT, en el que se crea la matriz. (ejemplo: para la banderaRETAIN,VAR_INPUT RETAIN).
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_SECEntre otras declaraciones, la parte de declaración del bloque de funciones debe contener: uiArraySize: UINT := 7; psNameList: POINTER TO STRING;.