Numero di elementi in un array
Questa funzione restituisce il numero di elementi della 1a, 2a e 3a dimensione di un array.
Ingresso
Variabile di ingresso (dimensione array 1, 2 o 3) il cui numero di elementi deve essere determinato
Uscita
Restituisce il numero di elementi nella prima dimensione
Restituisce il numero di elementi nella seconda dimensione
Restituisce il numero di elementi nella terza dimensione
Se l'ingresso Array3D è un array monodimensionale:
Il numero di elementi nell'array all'ingresso Array3D viene restituito all'uscita NrOfElem1.
Il valore 1 viene restituito all'uscita NrOfElem2.
Il valore 1 viene restituito all'uscita NrOfElem3.
Se l'ingresso Array3D è un array bidimensionale:
Dall'array all'ingresso Array3D, il numero di elementi nella prima dimensione viene restituito all'uscita NrOfElem1 e il numero di elementi nella seconda dimensione all'uscita NrOfElem2.
Il valore 1 viene restituito all'uscita NrOfElem3.
Se l'ingresso Array3D è un array tridimensionale:
Alle uscite NrOfElem1, NrOfElem2 e NrOfElem3 viene restituito il numero di elementi nella prima, seconda e terza dimensione dell'array all'ingresso Array3D.
È quindi possibile scrivere funzioni e Function Block che elaborano array di varie lunghezze (anche insieme con le funzioni (GetPointer, AreaOffs_ToVar, Var_ToAreaOffs).
Il prodotto NrOfElem1 * NrOfElem2 * NrOfElem3 è sempre equivalente al numero totale degli elementi nell'array.
Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.
VAR
ArrayOfInt: ARRAY [2..15,3..20,4..25] OF INT:=[5544(0)];
NumberOfDim1: INT:=0;
NumberOfDim2: INT:=0;
NumberOfDim3: INT:=0;
END_VAR
In questo caso la funzione Elem_OfArray3D viene eseguita in ogni ciclo della CPU (nessun ingresso EN). Determina il numero di elementi della variabile ArrayOfInt. Il risultato qui è: NumberOfDim1 = 14, NumberOfDim2 = 18 e 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
Altri progetti d'esempio (directory "Esempi" dell'installazione di FPWIN Pro): Calcolare la traccia di un array tridimensionale (FB)