Configurar datos de los bloques FP-FNS
La función FNS_InitConfigNameTable crea una tabla ConfigNameTable del tipo ProcessDataTable, que puede ser un tipo simple de datos o una DUT.
Entrada
Variables de los datos de entrada y salida del proceso
Salida
La salida es un array de STRING que contiene los nombres de los miembros de la DUT aplicados en ProcessDataTable.
El tamaño del array de la variable ConfigNameTable se tiene que corresponder con el número de elementos de la variable ProcessDataTable.
La longitud de string de los elementos del array debe ser mayor o igual que la longitud máxima de los nombres de los miembros.
Comprobar que el tamaño de la variable ConfigNameTable corresponde a la estructura de la variable ProcessDataTable, p.ej., si ProcessDataTable tiene tres entradas, entonces ConfigNameTable debe ser un "Array[0..2] of WORD" con un tamaño que coincida con el número de entradas. Si ProcessDataTable tiene solo una entrada (p.ej., WORD), entonces ConfigNameTable debe ser un "Array[0..0] of WORD" (de tamaño 1).
Los tipos de datos de entrada permitidos en la tabla INT son todos de 16 bits (WORD, DINT), 32-bit (DWORD, TIME (32 bits), REAL) y variables de 64 bits o arrays de estos tipos de datos. Las variables de 64-bits se definen como arrays bidimensionales, por ejemplo, "Array[0..0,0..3] of INT" es una variable de 64-bit , mientras que "Array[0..3] of INT" representa un array con cuatro variables de 16-bits.
Los tipos de datos BOOL, STRING y los arrays de estos tipos NO están pemitidos como entrada de la función FNS_InitConfigDataTable.
La siguiente tabla muestra cómo se declaran las variables de 16-bit, 32-bit y 64-bit y sus arrays cuando se utilizan como entrada de la función ProcessDataTable.
Tipo de datos de entrada |
Tamaño de la entrada |
Comentario |
---|---|---|
INT, WORD |
16 bits |
|
DINT, WORD, REAL, TIME |
32 bits |
|
Array[0..0,0..3] of INT Array[0..0,0..3] of WORD |
64 bits |
array de 2-dimensiones; tamaño de la segunda dimensión = 4 |
Array[a ..b] of INT/Array[a ..b] of WORD |
Array de 16 bits Tamaño = b-a+1 |
array de 1-dimensión; |
Array[a ..b] of DINT/Array[a ..b] of DWORD/ Array[a ..b] of REAL/Array[a ..b] of TIME |
Array de 32 bits Tamaño = b-a+1 |
array de 1-dimensión; |
Array[0..x,0..3] of INT Array[0..x,0..3] of WORD |
Array de 64 bits Tamaño= x+1 |
array de 2-dimensiones; tamaño de la segunda dimensión = 4 |
VAR
adiDInt1: ARRAY[2..3] OF DINT:=[2(0)];
arReal1: ARRAY[0..1, 1..9] OF REAL:=[18(0.0)];
aui1: ARRAY[1..15] OF UINT:=[15(0)];
dwWord1: DWORD:=0;
iInt1: INT:=0;
udiUDInt1: UDINT:=0;
END_VAR
El tamaño de la variable configNames1 se tiene que corresponder con el número de elementos de la variable de entrada myDUT60.
Puesto que la DUT tiene tres elementos, la variable de salida configNames1 tiene que ser un array de tipo WORD con un tamaño de tres (por ejemplo: Array [0..2] of WORD).
Cuando sys_bIsFirstScan pasa a TRUE se ejecuta la función. El valor de la variable configNames1 se corresponde con la estructura de la variable de entrada myDUT60, su número y tipo de elementos.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_VARIN,,myDUT60,11,2,13,4,);
B(B_VAROUT,,configNames1,29,2,31,4,);
B(B_F,E_FNS_InitConfigNameTable!,Instance,13,0,29,4,,?DEN?dProcessNameTable?AENO?cConfigNameTable);
B(B_VARIN,,sys_bIsFirstScan,11,1,13,3,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
If sys_bIsFirstScan then
configNames1:=FNS_InitConfigNameTable(myDUT60);
end_if;