Devuelve la dirección FL de la entrada o de la salida con un offset de 32 bits
A partir del valor en la entrada/salida Offs, la función genera una dirección de 32 bits en el área FL y la envía a la entrada/salida AdrFL. Esta entrada/salida tiene que estar directamente conectada a la entrada o salida de 16 bits de una función básica. El valor en la entrada/salida Offs representa la dirección offset dentro del área de datos FL. Utilizando GetPointer32 se puede transferir un valor del área de memoria a una función de usuario o a un bloque de función.
Entrada
Proporciona la dirección de offset FL de 16 bits en un área
Este pin debe estar conectado a la entrada o salida de una función básica para la que estén permitidos los tipos de datos INT, WORD
Salida
Offset de 32 bits para la dirección FL0
Recordar que la ejecución de la función básica que usa la dirección creada en el área FL, está determinada por la asignación de la función Is_AreaFL con el valor para el área de memoria de la variable a la entrada EN.
Esta función accede internamente a uno de los registros índice que también se usan para cálculos con arrays. Si el PLC utilizado no dispone de este área FL, se genera automáticamente la dirección DT0.
La función Is_AreaFL siempre devuelve FALSE y por tanto dificulta la ejecución de un comando con una dirección sin significado. De este modo, las funciones y los bloques de funciones de usuario que incorporan esta función se pueden ejecutar en PLCs que no disponen de área de memoria FL.
Solo para los editores LD y FBD: Para insertar la instrucción en la ventana de programación, seleccionar Instrucción de entrada o Instrucción de salida desde el panel Instrucciones.
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
bStart: BOOL:=FALSE;
(*Activation of the function*)
DutNonBoolean: DUT_NonBoolean;
(*structured data type*)
diActualPosition: DINT:=0;
(*Beginning position from which data should be read from the IC card*)
END_VAR
En este caso se declara la variable DutNonBoolean del tipo de dato DUT. No se asigna ningún valor a los elementos de la variable DutNonBoolean puesto que les valores de la variable DutNonBoolean se sobrescriben después de ejecutar la función ReadFromIcCard.Cuando la variable bStart pasa de FALSE a TRUE, se ejecuta la función ReadFromIcCard. La función lee los valores de la tarjeta IC a partir de la dirección diActualPosition y escribe la información en la variable DutNonBoolean. No olvidar que la tarjeta IC tiene que estar debidamente formateada a través del menú y debe contener los valores a partir de la dirección diActualPosition.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_CONTACT,,start,6,1,8,3,R);
B(B_F,ReadFromIcCard!,,18,1,27,8,,?DEN?DArea?DOffset?DSize?DPosition?AENO?C);
B(B_VARIN,,ActualPosition,16,6,18,8,);
B(B_VAROUT,,ActualPosition,27,3,29,5,);
B(B_VARIN,,Dut_NonBoolean,7,3,9,5,);
B(B_F,Size_Of_Var!,,9,5,16,7,,?D?C);
B(B_F,GetPointer!,,11,3,18,5,,?D?C);
B(B_VARIN,,2,16,4,18,6,);
L(18,2,18,3);
L(8,2,18,2);
L(1,2,6,2);
L(9,4,11,4);
L(9,4,9,6);
L(16,6,18,6);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY