Nombre d’éléments dans un tableau (ARRAY)
Cette fonction génère le nombre d’éléments de la première et de la seconde dimension d’un tableau Array.
Entrée
Variable d’entrée (array de dimension 1, 2 ou 3) dont le nombre d’éléments doit être déterminé
Sortie
Génère le nombre d’éléments de la première dimension
Génère le nombre d’éléments de la seconde dimension
Si l’entrée Array2D est un tableau (Array) à une dimension :
Le nombre total d’éléments dans le tableau en entrée Array2D est généré en sortie NrOfElem1.
La valeur 1 est renvoyée en sortie NrOfElem2.
Si l’entrée Array2D est un tableau (Array) à deux dimensions :
Le nombre d’éléments dans la première dimension est généré en sortie NrOfElem1 et le nombre d’éléments dans la seconde dimension est généré en sortie NrOfElem2, à partir du tableau Array en entrée Array2D.
Si l’entrée Array2D est un tableau (Array) à trois dimensions :
Le nombre d’éléments dans la première dimension est généré en sortie NrOfElem1 et le produit de la deuxième et de la troisième dimension est généré en sortie NrOfElem2, à partir du tableau Array en entrée Array2D.
Il est ainsi possible d’écrire des fonctions et blocs fonctions qui traitent des tableaux Arrays de différentes dimensions (également en combinaison avec les fonctions GetPointer, AreaOffs_ToVar, Var_ToAreaOffs).
Le produit NrOfElem1*NrOfElem2 est toujours égal au nombre total d’éléments dans le tableau Array.
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
ArrayOfInt: ARRAY [2..15,3..20] OF INT:=[252(0)];
NumberOfDim1: INT:=0;
NumberOfDim2: INT:=0;
END_VAR
Dans ce cas, la fonction Elem_OfArray2D est exécutée à chaque cycle de l’unité centrale (sans entrée EN). Elle détermine le nombre d’éléments de la variable ArrayOfInt. Le résultat est le suivant : NumberOfDim1 = 14 et NumberOfDim2 = 18.
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,,ArrayOfInt,6,2,8,4,);
B(B_VAROUT,,NumberOfDim1,19,2,21,4,);
B(B_F,Elem_OfArray2D!,Instance,8,1,19,5,,?DArray2D?CNrOfElem1?CNrOfElem2);
B(B_VAROUT,,NumberOfDim2,19,3,21,5,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
Autres exemples de projets (répertoire "Samples" dans le répertoire d’installation de FPWIN Pro) : Calculer le produit de tableaux (Arrays) à deux dimensions