Adr_Of_VarOffs

Devuelve la dirección de la entrada o salida con offset

Esta función devuelve la dirección de una variable con un offset a la entrada o a la salida de una función básica.

Parámetros

Entrada

Adr (ANY)

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

Proporciona la dirección de offset de 16 bits de las variables de entrada/salida

Offs (INT)

Variable de entrada/salida para la que se necesita la dirección de offset

Salida

Var (ANY_IN_UNITS_OF_WORDS)

Variable de salida para la que se necesita la dirección final

Observaciones

  • A partir de la variable de entrada/salida Var, se muestra en la entrada/salida Offs, la dirección de 16 bits, que alcanza el valor dado en la entrada/salida Adr, Esta entrada o salida tiene que estar directamente conectada a la entrada o la salida de 16 bits de una función básica. Esta función solo se puede utilizar para trabajar con los datos de una cadena de caracteres, es decir, con los caracteres sin la cabecera.

  • 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.

Ejemplo

Variables Globales

En la Lista de Variables Globales, se definen las variables a las que pueden acceder todas las POUs del proyecto.

Cabecera de la POU

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_EXTERNAL
		ReceiveBuffer: ARRAY [0..15] OF WORD:=[16(0)];
	END_VAR
	VAR 
		Receive: BOOL:=FALSE;
		ReceiveString: STRING[30]:='';
	END_VAR
	VAR CONSTANT 
		StringTotLenPos: INT:=0;
		StringActLenPos: INT:=1;
		StringHeaderSize: INT:=2;
	END_VAR
	VAR 
		@'': @'';
	END_VAR

Cuerpo LD

Cuando se activa Receive y se recibe el carácter de fin de recepción, es decir, se activa R9038, los caracteres recibidos en el buffer ReceiveBuffer a través del interfaz serie, se copian en el área de datos ReceiveString. El número de caracteres recibidos se almacena en ReceiveBuffer[0]; y a continuación, los caracteres de la cadena recibida. Por lo tanto, ReceiveBuffer se puede copiar directamente en este área a partir de esta posición.(Consultar tipo de Datos STRING). En la lista de variables globales se tiene que asignar la posición del buffer ReceiveBuffer según la configuración de los registros del sistema 417 y 418 (para obtener información más detallada, consultar Configuración del buffer de recepción de la CPU).

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 10 ;
        NETWORK_BODY
B(B_COIL,,sys_bIsComPort1ReceptionDone,7,1,9,3,);
B(B_CONTACT,,Receive,16,1,18,3,);
B(B_F,F10_BKMV!,Instance,20,0,28,5,,?DEN?Ds1_Start?Ds2_End?AENO?Cd_Start);
B(B_VARIN,,ReceiveBuffer[0],18,2,20,4,);
B(B_VARIN,,ReceiveBuffer[15],18,3,20,5,);
B(B_F,Adr_Of_VarOffs_I!,Instance,20,6,29,10,,?D@'Var'?DOffs?CAdr);
B(B_VARIN,,StringActLenPos,18,8,20,10,);
B(B_VAROUT,,ReceiveString,29,7,31,9,);
L(1,2,7,2);
L(9,2,16,2);
L(18,2,20,2);
L(28,3,28,6);
L(20,6,28,6);
L(20,6,20,8);
L(1,0,1,10);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Modificado el: 2021-07-14Comentarios sobre esta páginaLínea directa de Panasonic