FNS_InitConfigDataTable

Configurar datos de los bloques FP-FNS

La función FNS_InitConfigDataTable crea una tabla ConfigDataTable del tipo ProcessDataTable, que puede ser un tipo simple de datos o una DUT. Esta ConfigDataTable es necesaria para configurar el bloque FP-FNS utilizando el bloque de función FNS_ProfibusDP, FNS_DeviceNet, FNS_CANopen y FNS_ProfinetIO.

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

ConfigDataTable (ARRAY of WORD)

Datos de configuración de los bloques FP-FNS. El tamaño del array de la variable ConfigDataTable se tiene que corresponder con el número de elementos de la variable ProcessDataTable.

Observaciones

  • Comprobar que el tamaño de la variable ConfigDataTable corresponde a la estructura de la variable ProcessDataTable, p.ej., si ProcessDataTable tiene tres entradas, entonces ConfigDataTable 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 ConfigDataTable debe ser un "Array[0..0] of WORD" (de tamaño 1).

  • Los tipos de datos de entrada permitidos en la tabla FNS_InitConfigDataTable son todos de 16 bits (INT, WORD), 32-bit (DINT, 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 salida ConfigDataTable debe ser un array de tipo WORD.

ProcessDataTable

  • La siguiente tabla muestra cómo se declaran las variables de 16-bit, 32-bit y 64-bit y sus arrays cuando se utiliza ProcessDataTable como entrada de la función FNS_InitConfigDataTable.

    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

  • Para cada elemento de la DUT aplicado en ProcessDataTable, se genera un elemento del array WORD en ConfigDataTable de acuerdo con la siguiente fórmula:

    enum class enumFnsDataTypeCode : int
    
          {
                INVALID     = -1,
                SIGNED_16   = 0x02,
                SIGNED_32   = 0x03,
                UNSIGNED_16 = 0x05,
                UNSIGNED_32 = 0x06,
                UNSIGNED_64 = 0x11,
                REAL_32     = 0x12
          };
    • Byte de menor peso: código de tipo de datos requerido para FNS

    • Byte de mayor peso: número de elementos en el caso de un array

Ejemplo

Variables Globales

En la Lista de Variables Globales, se definen las variables a las que pueden acceder todas las POUs del proyecto.

DUT

En este ejemplo, la variable ProcessData es una DUT del tipo ProcessDataStructure con la siguiente estructura:

Puesto que la DUT tiene tres elementos, la variable de salida ConfigData tiene que ser un array de tipo WORD con un tamaño de tres (por ejemplo: Array [0..2] of WORD).

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
		ConfigData: ARRAY [0..2] OF WORD:=[3(0)];
	END_VAR
	VAR_EXTERNAL
		ProcessData: ProcessDataStructure;
	END_VAR

El tamaño de la variable ConfigDataTable se tiene que corresponder con el número de elementos de la variable de entrada ProcessData.

Cuerpo de la POU

Cuando sys_bIsFirstScan pasa a TRUE se ejecuta la función. El valor de la variable ConfigData se corresponde con la estructura de la variable de entrada ProcessData, 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,,ProcessData,11,2,13,4,);
B(B_VAROUT,,ConfigData,29,2,31,4,);
B(B_F,E_FNS_InitConfigDataTable!,,13,0,29,4,,?DEN?dProcessDataTable?AENO?cConfigDataTable);
B(B_CONTACT,,sys_bIsFirstScan,5,1,7,3,);
L(1,2,5,2);
L(7,2,13,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

If sys_bIsFirstScan then
    ConfigData:=FNS_InitConfigDataTable(ProcessData);
    end_if;

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