FNS_InitConfigNameTable

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.

Parámetros

Entrada

ProcessDataTable (INT, WORD, DINT, DWORD, REAL, TIME) y ARRAYS de estos tipos

Variables de los datos de entrada y salida del proceso

Salida

ConfigNameTable ARRAY of WORD

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.

Observaciones

  • 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.

ProcessDataTable

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

Ejemplo

Cabecera de la POU

Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU. Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.
	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).

Cuerpo de la POU

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.

Cuerpo LD

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

Cuerpo en ST

If sys_bIsFirstScan then
    configNames1:=FNS_InitConfigNameTable(myDUT60);
end_if;

Modificado el: 2024-12-18Comentarios sobre esta páginaLínea directa de Panasonic