Nombre d’éléments dans un tableau (ARRAY)
Cette fonction génère le nombre d’éléments de la 1e, 2e et 3e 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
Génère le nombre d’éléments de la troisième dimension
Si l’entrée Array3D est un tableau (Array) à une dimension :
Le nombre total d’éléments dans le tableau en entrée Array3D est généré en sortie NrOfElem1.
La valeur 1 est renvoyée en sortie NrOfElem2.
La valeur 1 est renvoyée en sortie NrOfElem3.
Si l’entrée Array3D 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 Array3D.
La valeur 1 est renvoyée en sortie NrOfElem3.
Si l’entrée Array3D est un tableau (Array) à trois dimensions :
Le nombre d’éléments dans la première, deuxième et troisième dimension du tableau Array en entrée Array3D est généré en sorties NrOfElem1, NrOfElem2 et NrOfElem3.
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 * NrOfElem3 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,4..25] OF INT:=[5544(0)];
NumberOfDim1: INT:=0;
NumberOfDim2: INT:=0;
NumberOfDim3: INT:=0;
END_VAR
Dans ce cas, la fonction Elem_OfArray3D 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, NumberOfDim2 = 18 et NumberOfDim3 = 22.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_VARIN,,ArrayOfInt,6,2,8,4,);
B(B_VAROUT,,NumberOfDim1,19,2,21,4,);
B(B_F,Elem_OfArray3D!,Instance,8,1,19,6,,?DArray3D?CNrOfElem1?CNrOfElem2?CNrOfElem3);
B(B_VAROUT,,,19,3,21,5,);
B(B_VAROUT,,,19,4,21,6,);
L(1,0,1,6);
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 la trace d’un tableau (Array) à trois dimensions (FB)