Devuelve la dirección DT 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 16 bits en el área DT y la envía a la entrada/salida AdrDT. Esta entrada tiene que estar directamente conectada a la entrada o salida de 32 bits de una función básica. El valor en la entrada/salida Offs representa la dirección offset dentro del área de datos DT. 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 DT 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 DT0
Recordar que la ejecución de la función básica que usa la dirección creada en el área DT, está determinada por la asignación de la función Is_AreaDT con el valor para el área de memoria de la variable a la entrada EN.
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.
En este ejemplo se crea la función de usuario ReadFromIcCard que utiliza las funciones AdrDT_Of_Offs32_O, AdrFL_Of_Offs_O, Is_AreaDT y Is_AreaFL en diagrama de contactos (LD) o en diagrama de bloques de funciones (FBD).
Se declara una DUT cuyos elementos son variables no booleanas.
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
start: BOOL:=FALSE;
(*activation of the function*)
DutNonBoolean: @'Dut_NonBoolean';
(*structured data type*)
ActualPosition: DINT:=0;
(*beginning position from which the data should be read to 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