Skip to main content

Section : Tableaux Var

Le paramètre VarArrays permet de créer des tableaux de taille 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_SEC

Les détails concernant la syntaxe des types de définition sont décrits dans la section Déclaration des modules.

. Spécification:
  • La définition Variable est un chemin d'instance d'entrée relatif au bloc fonction du module. Le type de données est POINTER TO <ELEMTYPE>. <ELEMTYPE> peut être n'importe quel type de données.

  • La cible d'une section VarArray doit identifier le tableau de variables de manière unique.

  • Var_Count définit le chemin de l'instance d'entrée d'un entier Variable du bloc fonction du module. Pour être disponible dans l'éditeur pour la configuration, cette variable doit être définie en tant que paramètre. Alternativement la variable Var_Count de Slot_Multi ou InstRef_Multi peut être utilisé pour définir cette variable. Plusieurs VarArrays peuvent utiliser le même Var_Count variable. Si la taille du tableau est 0, aucun tableau ne sera généré et le pointeur du tableau sera défini sur 0.

  • Inst_Name définit le nom de la variable tableau créée. L'espace réservé %Instancename% et %VariablePath% (l'orthographe en majuscules ou minuscules n'est pas pertinente) sera remplacé par le nom d'instance du module instance resp. le chemin d'instance de la variable de pointeur. Les points seront remplacés par des soulignements. Si la définition est omise, la valeur par défaut AC_ARRAY_%VariablePath%. est utilisé.

  • Une erreur sera créée si deux VarArrays différents d'un module ont le même Inst_Name, qui n'inclut pas l'espace réservé %VariablePath%.

  • Pragmas contient une liste de pragmas de compilateur, qui seront insérés avant la variable de tableau générée.

  • Var_Decl_Flags peut être utilisé pour spécifier le type de variable du tableau créé. Les drapeaux possibles sont NONE, RETAIN, et PERSISTENT. Ces drapeaux sont ajoutés à la section variable VAR_INPUT, dans lequel le tableau est créé. (exemple : pour le drapeau RETAIN, VAR_INPUT RETAIN).

Exemple 26. Exemple
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_SEC

Entre autres déclarations, la partie déclaration du bloc fonctionnel doit contenir : uiArraySize: UINT := 7; psNameList: POINTER TO STRING;.