Transferencia de dígitos
Copia un número de dígitos hexadecimales del registro fuente s en la posición deseada del registro de destino d según se especifique en n.
Entrada
Área de 16 bits fuente
Especifica la posición del dígito hexadecimal fuente y la posición del dígito destino y el número de dígitos a transferir
Salida
Área de 16 bits destino
En lugar de utilizar esta instrucción F, se recomienda utilizar la instrucción FP7 correspondiente: FP_MOVE_DIGITS
Los dígitos son unidades de 4 bits que se utilizan para manejar datos. Con esta instrucción, los datos de 16 bits se separan en unidades de 4 dígitos. Los dígitos se nombran como dígito hexadecimal 0, dígito hexadecimal 1, dígito hexadecimal 2 y dígito hexadecimal 3, comenzando por los cuatro bits menos significativos:
dato de 16 bits
bit
digito hexadecimal
n es un dato hexadecimal que especifica la posición del dígito hexadecimal fuente (3), el número de dígitos a copiar (2) y la posición del dígito hexadecimal destino (1):
0 Dígito hexadecimal 0
1 Dígito hexadecimal 1
2 Dígito hexadecimal 2
3 Dígito hexadecimal 3
0 Copia 1 digito hexadecimal (4 bits)
1 Copia 2 digitos hexadecimales (8 bits)
2 Copia 3 digitos hexadecimales (12 bits)
3 Copia 4 digitos hexadecimales (16 bits)
0 Dígito hexadecimal 0
1 Dígito hexadecimal 1
2 Dígito hexadecimal 2
3 Dígito hexadecimal 3
A continuación se muestra el valor de n para algunos patrones típicos de transferencia de dígitos:
Especificar n: 16#101 para copiar el dígito hexadecimal 1 de la fuente al dígito hexadecimal 1 del destino.
Especificar n: 16#003 (en su forma abreviada: 16#3) para copiar el dígito hexadecimal 3 de la fuente al dígito hexadecimal 0 del destino.
Especificar n: 16#212 para copiar varios dígitos (los dígitos hexadecimales 2 y 3) de la fuente en los dígitos hexadecimales 2 y 3 del destino.
Especificar n: 16#210 para copiar varios dígitos (los dígitos hexadecimales 0 y 1) de la fuente en los dígitos hexadecimales 2 y 3 del destino.
Especificar n: 16#130 para copiar 4 dígitos (los dígitos hexadecimales del 0 al 3) de la fuente en los 4 dígitos hexadecimales (del 0 al 3) del destino.
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;
source: INT:=329;
(*decimal 329 = 16#149*)
specify_n: WORD:=16#111;
(*Beginning from the end:
1: first hex. digit is digit 1, i.e. 4
1: copies 2 hex. digits, i.e. 14
1: destination is hex. digit 1*)
output: INT:=0;
(*16#140 = decimal 320*)
END_VAR
Cuando la variable start está ajustada a TRUE, se ejecuta la función. Para mostrar en hexadecimal los valores de source y de output en la ventana Monitorizar Cabecera del diagrama de contactos, activar botón Hex en la barra de herramientas.
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_F,F6_DGT!,Instance,12,0,18,5,,?DEN?D@'s'?Dn?AENO?Cd);
B(B_VARIN,,source,8,2,10,4,);
B(B_VARIN,,specify_n,8,3,10,5,);
B(B_VAROUT,,output,18,2,20,4,);
B(B_CONTACT,,start,6,1,8,3,);
L(10,3,12,3);
L(10,4,12,4);
L(8,2,12,2);
L(1,2,6,2);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF start then
F6_DGT( s:= source,
n:= specify_n,
d=> output);
END_IF;