Numero di elementi in un array
Questa funzione restituisce il numero di elementi della 1a e 2a 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
Se l'ingresso Array2D è un array monodimensionale:
Il numero di elementi nell'array all'ingresso Array2D viene restituito all'uscita NrOfElem1.
Il valore 1 viene restituito all'uscita NrOfElem2.
Se l'ingresso Array2D è un array bidimensionale:
Dall'array all'ingresso Array2D, il numero di elementi nella prima dimensione viene restituito all'uscita NrOfElem1 e il numero di elementi nella seconda dimensione all'uscita NrOfElem2.
Se l'ingresso Array2D è un array tridimensionale:
Dall'array all'ingresso Array2D, il numero di elementi nella prima dimensione viene restituito all'uscita NrOfElem1 e il prodotto della seconda e terza dimensione dell'array all'uscita NrOfElem2.
È 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 è 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] OF INT:=[252(0)];
NumberOfDim1: INT:=0;
NumberOfDim2: INT:=0;
END_VAR
In questo caso la funzione Elem_OfArray2D viene eseguita in ogni ciclo della CPU (nessun ingresso EN). Determina il numero di elementi della variabile ArrayOfInt. Il risultato qui è: NumberOfDim1 = 14 e 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
Altri progetti d'esempio (directory "Esempi" dell'installazione di FPWIN Pro): Calcolare il prodotto di array bidimensionali