FP_SHR_BLOCK

将数据块向右迁移

如果触发器ENTRUE,该FP指令将d1_Startd2_End指定的数据范围向右迁移n_Bits指定的位数(至较低位位置)。

空缺(空)位置用零填充。

  • 对于n_Bits = 0,不发生移位。

  • 对于n_Bits = 16,发生与FP_WSHR_BLOCK一样的单字移位。

参数

输入

n_Bits (WORD, INT, UINT)

位数允许范围:0-15)

输出

d1_Start (BOOL)

起始地址

d2_End (BOOL)

结束地址

错误标志

sys_bIsOperationErrorHold(变为TRUE并保持为TRUE)
  • 如果使用索引寄存器指定的区域超出限制。
  • 如果d1_Start > d2_End

  • 如果n_Bits ³ 16

sys_bIsOperationErrorNonHold(对于一次扫描变为TRUE)
  • 如果使用索引寄存器指定的区域超出限制。
  • 如果d1_Start > d2_End

  • 如果n_Bits ³ 16

示例

全局变量

在全局变量列表中,定义项目中所有POU都可以访问的变量。

POU头Copy code to clipboard

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

	VAR
		bStart: BOOL:=FALSE;
			(*activates the function*)
	END_VAR
	VAR_EXTERNAL
		bStartAddress: BOOL:=FALSE;
		bEndAddress: BOOL:=FALSE;
	END_VAR

LD本体Copy code to clipboard

当变量bStartFALSE变为TRUE时,执行此函数。

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_VARIN,,3,6,3,8,5,);
B(B_CONTACT,,bStart,3,2,5,4,R);
B(B_F,FP_SHR_BLOCK!,,8,1,17,6,,?DEN?Dn_Bits?AENO?Cd1_Start?Cd2_End);
B(B_VAROUT,,bStartAddress,17,3,19,5,);
B(B_VAROUT,,bEndAddress,17,4,19,6,);
L(1,3,3,3);
L(5,3,8,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST本体Copy code to clipboard

IF DF(start) then
    FP_SHR_BLOCK(n_Bits := 3, 
                 d1_Start => bStartAddress, 
                 d2_End => bEndAddress);
END_IF;

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