F5_BTM

Transferencia de bits

Copia 1 bit de un registro de 16 bits o de una constante especificada en s en el registro de 16 bits especificado en d según el contenido especificado en n si la entrada de trigger EN está a TRUE. Si en s se introduce una constante, la transferencia se realiza internamente realizando una conversión binaria del dato de 16 bits.

Parámetros

Entrada

s (WORD, INT, UINT)

Área de 16 bits fuente

n (WORD, INT, UINT)

Especifica las posiciones de los bits fuente y destino

Salida

d (WORD, INT, UINT)

Área de 16 bits destino

Ejemplo

Explicación con valor fuente s=16#8888, posición del bit fuente 02 y posición del bit destino 0F definido por n=16#0F02

  1.  (1) Valor fuente 16#8888 con posición del bit fuente 02
  2.  (2) Valor objetivo 16#FFFF con posición del bit destino 15
  3.  (3) Valor resultante 16#7FFF con bit 02 transferido al bit 15

Observaciones

  • En lugar de utilizar esta instrucción F, se recomienda utilizar la instrucción FP7 correspondiente: FP_MOVE_BITS

  • Las variables s y d tienen que ser del mismo tipo de datos.

  • El operando n especifica el número de bit como se indica a continuación:

    16#

    0

    F

    0

    2

     

    Posición del bit fuente

    Posición del bit destino

    Posición del bit: del 0 al 3

    Nº del bit fuente (de 16#0 a 16#F)

    Posición del bit: del 4 al 7

    FP2/2SH y 10SH: número de bits a transferir (de 16#0 a 16#F)

    FP3: no válido

    Posición del bit: del 8 al 11

    Nº del bit de destino (de 16#0 a 16#F)

    Posición del bit: del 12 al 15

    No válido

    Por ejemplo, si se lee desde la derecha, n = 16#C01 transfiere desde la posición uno, un bit a la posición 12 (16#C).

Ejemplo

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
		start: BOOL:=FALSE;
			(*activates the function*)
		input_value: WORD:=2#1000100010001000;
		copy_operand: WORD:=16#0F02;
			(*digit no.1 and no.3 are invalid, digit no.0 locates
the position of the source bit (here: 2),
digit no.2 locates the position of the destination bit
(here: 15)*)
		output_value: WORD:=2#1111111111111111;
			(*result after a 0->1 leading
edge from start:
2#0111111111111111*)
	END_VAR

Cuerpo de la POU

Cuando la variable start está ajustada a TRUE, se ejecuta la función.

Cuerpo LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_F,F5_BTM,,12,0,19,5,,?DEN?D@'s'?Dn?AENO?Cd);
B(B_CONTACT,,start,8,1,10,3,);
B(B_VARIN,,input_value,10,2,12,4,);
B(B_VARIN,,copy_operand,10,3,12,5,);
B(B_VAROUT,,output_value,19,2,21,4,);
L(1,2,8,2);
L(10,2,12,2);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

IF start then
    F5_BTM( s:= input_value,
         n:= copy_operand,
         d=> output_value);
END_IF;

Cuerpo IL

LD

start

(* EN = start; Starting signal for the F5_BTM function. *)

F5_BTM

input_value, copy_operand, output_value

(* s = input_value (source) *)

(* n = copy_operand; e.g. Var_1 = 16#0A0B *)

(* 11 source bit (B) Þ 10 destination bit (A) *)

(* d = output_value (destination) *)

ST

out

(* option *)

Modificado el: 2024-12-18Comentarios sobre esta páginaLínea directa de Panasonic