F119_LRSR

左/右移位寄存器

将16位数据范围的1位向左或向右迁移。

参数

输入

LeftDirection (BOOL)

左/右触发器;指定移出的方向:

  • TRUE:向左移出
  • FALSE:向右移出
DataInput (BOOL)

指定新移入数据。

  • 新移入数据= TRUE = 1:当数据输入处于TRUE状态时。

  • 新移入数据= FALSE = 0:当数据输入处于FALSE状态时。
ShiftTrigger (BOOL)

激活迁移

当检测到触发器的上升沿时,向左或向右迁移1位(FALSE®TRUE)。

Reset (BOOL)

如果触发器处于TRUE状态,将d1_Startd2_End指定的数据范围的所有位变为0。

d1_Startd2_End指定区域内的数据复位至0

d2_End (WORD, INT, UINT)

结束16位区域

d1_Start (WORD, INT, UINT)

起始16位区域

输出

Carry (BOOL)

移出的位

示例

  1.  (1) 左移位操作
  2.  (2) 移出的位被传输到R9009(进位标志)
  3.  (3) LeftDirection:ON;移位触发器:OFF, ON
  4.  (4) 当DataInput打开时,“1”被移入位位置0。
  5.  (5) 当DataInput关闭时,“0”被移入位位置0。
  6.  (6) 右移位操作
  7.  (7) LeftDirection:OFF;ShiftTrigger:OFF, ON
  8.  (8) 移出的位被传输到R9009(进位标志)。
  9.  (9) 当DataInput打开时,“1”被移入位位置15。
  10. (10) 当DataInput关闭时,“0”被移入位位置15。

标注

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

  • 此函数不需要输出Carry处的变量。

  • 左/右移位是移位寄存器,可将指定数据区域的1位向左迁移(至较高位位置)或向右迁移(至较低位位置)。

示例

POU头

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

	VAR
		data_array: ARRAY [0..2] OF INT:=[2#0000000000000001,2#0011111111111111,2#0011111111111110];
		enable_leftShift: BOOL:=FALSE;
			(*function shifts left if TRUE,
else it shifts right*)
		reset: BOOL:=FALSE;
			(*if TRUE, the whole array
will be set to zero*)
		input: BOOL:=TRUE;
			(*specifies the new shift-in data*)
		shift_trigger: BOOL:=FALSE;
			(*activates the function at a 0->1
leading edge*)
		carry_out_value: BOOL:=FALSE;
			(*result after a 0->1 leading edge
from shift_trigger: 1.
After the next cycle the value will be
set back to zero.*)
	END_VAR

POU本体

当变量enable_leftShift设置为TRUE时,此函数向左迁移,否则向右迁移。

LD本体

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 9 ;
        NETWORK_BODY
B(B_F,F119_LRSR!,Instanz,12,1,22,9,,?DLeftDirection?DDataInput?DShiftTrigger?DReset?Dd1_Start?Dd2_End?ACarry);
B(B_CONTACT,,enable_leftShift,7,2,9,4,);
B(B_VARIN,,input,9,3,11,5,);
B(B_VARIN,,shift_trigger,9,4,11,6,);
B(B_VARIN,,reset,9,5,11,7,);
B(B_VARIN,,data_array[0],9,6,11,8,);
B(B_VARIN,,data_array[2],9,7,11,9,);
B(B_VAROUT,,carry_out_value,22,2,24,4,);
L(1,3,7,3);
L(9,3,12,3);
L(11,4,12,4);
L(11,5,12,5);
L(11,6,12,6);
L(11,7,12,7);
L(11,8,12,8);
L(1,0,1,9);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST本体

carry_out_value:=F119_LRSR( LeftDirection:= enable_leftShift,
         DataInput:= input,
         ShiftTrigger:= shift_trigger,
         Reset:= reset,
         d1_Start:= data_array[0],
         d1_End:= data_array[2]);

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