FNS_InitConfigDataTable

Configurer des données pour les blocs FP-FNS.

La fonction FNS_InitConfigDataTable crée une variable ConfigDataTable à partir de la variable ProcessDataTable qui peut être d’un type de données à un ou plusieurs éléments. ConfigDataTable est nécessaire pour configurer les blocs FP-FNS avec les blocs fonctions FNS_ProfibusDP, FNS_DeviceNet, FNS_CANopen et FNS_ProfinetIO.

Paramètres

Entrée

ProcessDataTable (INT, WORD, DINT, DWORD, REAL, TIME) et tableaux (arrays) de ces types de données

Variables des données d’entrée et sortie du process

Sortie

ConfigDataTable (ARRAY of WORD)

Configuration des données pour les blocs FP-FNS. La taille des tableaux de variables ConfigDataTable doit correspondre au nombre d’éléments de la variable ProcessDataTable.

Remarques

  • Veillez à ce que la taille de la variable ConfigDataTable corresponde à la structure de la variable ProcessDataTable, c.-à-d. si ProcessDataTable comporte trois entrées, ConfigDataTable doit être un tableau "Array[0..2] of WORD", dont la taille correspond au nombre d’entrées. Si ProcessDataTable n’a qu’une entrée (par ex. WORD), alors ConfigDataTable doit être un tableau "Array[0..0] of WORD" (de taille 1).

  • Les types de données autorisés pour l’entrée de FNS_InitConfigDataTable sont tous des variables 16 bits (INT, WORD), 32 bits (DINT, DWORD, TIME (32 bits), REAL) et 64 bits ou des tableaux (arrays) des mêmes types de données. Les variables 64 bits sont définies en tant que tableaux (arrays) à deux dimensions, par ex. "Array[0..0,0..3] of INT" est une variable 64 bits, tandis que "Array[0..3] of INT" représente un tableau (array) avec quatres éléments de variables de 16 bits.

  • Les types de données BOOL, STRING et les tableaux (arrays) de ces types de données NE SONT PAS autorisés en entrée de la fonction FNS_InitConfigDataTable.

  • La sortie ConfigDataTable de la fonction doit être un tableau (array) de données de type WORD.

ProcessDataTable

  • Le tableau de syntaxe suivant présente comment déclarer des variables et des tableaux de 16 bits, 32 bits et 64 bits lorsqu’ils sont utilisés en tant qu’entrées ProcessDataTable pour la fonction FNS_InitConfigDataTable.

    Type de données d’entrée

    Taille des entrées

    Commentaire

    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

    Tableau (array) à 2 dimensions ;

    Taille de la seconde dimension = 4

    Array[a ..b] of INT/Array[a ..b] of WORD

    Tableau (array) de 16 bits

    Taille = b-a+1

    Tableau (array) à 1 dimension

    Array[a ..b] of DINT/Array[a ..b] of DWORD/

    Array[a ..b] of REAL/Array[a ..b] of TIME

    Tableau (array) de 32 bits

    Taille = b-a+1

    Tableau (array) à 1 dimension

    Array[0..x,0..3] of INT

    Array[0..x,0..3] of WORD

    Tableau (array) de 64 bits

    Taille = x+1

    Tableau (array) à 2 dimensions ;

    Taille de la seconde dimension = 4

  • Pour chaque élément du DUT appliqué à ProcessDataTable, un élément du tableau WORD (array) dans ConfigDataTable est généré selon la formule suivante :

    enum class enumFnsDataTypeCode : int
    
          {
                INVALID     = -1,
                SIGNED_16   = 0x02,
                SIGNED_32   = 0x03,
                UNSIGNED_16 = 0x05,
                UNSIGNED_32 = 0x06,
                UNSIGNED_64 = 0x11,
                REAL_32     = 0x12
          };
    • Octet de poids faible : code du type de données requis pour FNS

    • Octet de poids fort : nombre d’éléments dans le cas d’un tableau (array)

Exemple

GVL

Dans la liste des variables globales, vous définissez des variables qui sont accessibles par tous les POU dans le projet.

DUT

Dans cet exemple, la variable ProcessData est un DUT de type ProcessDataStructure avec la structure suivante :

Les données de type DUT ayant trois entrées, la variable de sortie ConfigData doit être de type Array of WORD avec une taille de trois éléments (par ex. : Array [0..2] of WORD).

En-tête du POU

Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU. Le même en-tête de POU est utilisé pour tous les langages de programmation.

	VAR
		ConfigData: ARRAY [0..2] OF WORD:=[3(0)];
	END_VAR
	VAR_EXTERNAL
		ProcessData: ProcessDataStructure;
	END_VAR

La taille de la variable ConfigDataTable doit correspondre au nombre d’entrées de la variable d’entrée ProcessData.

Corps du POU

Lorsque sys_bIsFirstScan est TRUE, c.-à-d. dans le premier cycle, la fonction est exécutée. La valeur de la variable ConfigData correspond à la structure de la variable d’entrée ProcessData, à son nombre et type d’éléments.

Corps en 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

Corps en ST

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

Modifié le : 2024-10-08Commentaires sur cette pageAssistance téléphonique