F5_BTM

位数据移动

如果触发器EN处于ON状态,则根据n指定的内容,由s指定的16位数据或常量值的1位会复制到由d指定的16位区域的位中。当由s指定16位等效常量时,在内部执行位数据移动操作,将其转换为16位二进制表达式。

参数

输入

s (WORD, INT, UINT)

源16位区域

n (WORD, INT, UINT)

指定源和目标位位置

输出

d (WORD, INT, UINT)

目标16位区域

示例

以示例值16#8888以及位置2的位移动到位位置15的目标值进行说明

  1.  (1) 源:位位置
  2.  (2) 目标:位位置
  3.  (3) 结果:位位置

交换位置15中的位,此例中的目标值:16#7FFF

标注

  • 建议使用相应的FP7指令,来代替使用此F型指令:FP_MOVE_BITS 移动位数据

  • 变量sd必须为相同的数据类型。

  • 操作数n如下指定位编号:

    1.  (1) 源的位位置
    2.  (2) 目标的位位置

      位编号0~3

      源位编号(16#0至16#F)

      位编号4~7

      FP2/2SH和10SH:要传输的位编号(16#0至16#F)

      FP3:无效

      位编号8~11

      目标位编号(16#0至16#F)

      位编号12~15

      无效

    例如,从右读取,n = 16#C01将从位位置1,移动一位至位位置12 (16#C)

示例

POU头

所有用于编程此函数的输入和输出变量已在POU头中声明。 所有编程语言使用相同的POU头。

	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

POU本体

当变量start设置为TRUE时,执行此函数。

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

ST本体

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

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 *)

最后更新日期: 此页面上的反馈松下热线