Número de elementos en un array
Esta función devuelve el número de elementos de la primera y segunda dimensión de un Array.
Entrada
Variable de entrada (array de dimensión: 1, 2 ó 3) del que se va a determinar el número de elementos
Salida
Devuelve el número de elementos de la primera dimensión
Devuelve el número de elementos de la segunda dimensión
Si la entrada Array2D es un array de una sola dimensión:
Devuelve a la salida Array2D, el número de elementos del array de entrada NrOfElem1.
La salida NrOfElem2 devuelve un 1.
Si la entrada Array2D es un array de dos dimensiones:
A partir del array en la entrada Array2D, devuelve en la salida NrOfElem1 el número de elementos de la primera dimensión y en la salida NrOfElem2 el número de elementos de la segunda dimensión.
Si la entrada Array2D es un array de tres dimensiones:
A partir del array en la entrada Array2D, devuelve en la salida NrOfElem1 el número de elementos de la primera dimensión y en la salida NrOfElem2 el producto del número de elementos de la segunda y tercera dimensión.
De esta forma, las funciones y bloques de función pueden procesar arrays de cualquier longitud (junto con las funciones:GetPointer, AreaOffs_ToVar, Var_ToAreaOffs).
El resultado del producto NrOfElem1*NrOfElem2 siempre es igual al número total de elementos en el array.
Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU. Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.
VAR
ArrayOfInt: ARRAY [2..15,3..20] OF INT:=[252(0)];
NumberOfDim1: INT:=0;
NumberOfDim2: INT:=0;
END_VAR
En este caso la función Elem_OfArray2D se ejecuta en cada ciclo de scan (sin entrada EN). Determina el número de elementos de la variable ArrayOfInt. El resultado es: NumberOfDim1 = 14 y 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
Se pueden obtener más ejemplos desde el directorio "Ejemplos" del CD de instalación del FPWIN : Cálculo del producto de arrays de dos dimensiones