Elem_OfArray3D

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.

Paramètres

Entrée

Array3D (ANY_IN_UNITS_OF_WORDS)

Variable d’entrée (array de dimension 1, 2 ou 3) dont le nombre d’éléments doit être déterminé

Sortie

NrOfElem1 (INT, DINT, UINT, UDINT)

Génère le nombre d’éléments de la première dimension

NrOfElem2 (INT, DINT, UINT, UDINT)

Génère le nombre d’éléments de la seconde dimension

NrOfElem3 (INT, DINT, UINT, UDINT)

Génère le nombre d’éléments de la troisième dimension

Remarques

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).

NOTA

Le produit NrOfElem1 * NrOfElem2 * NrOfElem3 est toujours égal au nombre total d’éléments dans le tableau Array.

Exemple

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
		ArrayOfInt: ARRAY [2..15,3..20,4..25] OF INT:=[5544(0)];
		NumberOfDim1: INT:=0;
		NumberOfDim2: INT:=0;
		NumberOfDim3: INT:=0;
	END_VAR

Corps du POU

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.

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 := 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)

Modifié le : 2021-08-09Commentaires sur cette pageAssistance téléphonique