使用“左移”指令,可以将参数 IN 的内容逐位向左移动,并将结果作为函数值返回。参数 N 用于指定应将特定值移位的位数。
如果参数 N 的值为“0”,则将参数 IN 的值作为结果。
如果参数 N 的值大于位数,则参数 IN 的值将向左移动该位数个位置。
结果值中因移位而空出的位将用 0 填充。
下图显示了如何将 WORD 数据类型操作数的内容向左移动 6 位:
参数
下表列出了该指令的参数:
参数 | 声明 | 数据类型 | 存储区 | 说明 | |
---|---|---|---|---|---|
S7-1200 | S7-1500 | ||||
IN | Input | 位字符串、整数 | 位字符串、整数 | I、Q、M、D、L | 要移位的值 |
N | Input | USINT、UINT, UDINT | USINT、UINT, UDINT、ULINT | I、Q、M、D、L | 对值 (IN) 进行移位的位数 |
函数值 | 位字符串、整数 | 位字符串、整数 | I、Q、M、D、L | 指令的结果 |
示例
以下示例说明了该指令的工作原理:
SCL |
---|
"Tag_Result" := SHL(IN := "Tag_Value", N := "Tag_Number"); |
下表将通过具体的操作数值对该指令的工作原理进行说明:
参数 | 操作数 | 值 |
---|---|---|
IN | Tag_Value | 0 1111 |
N | Tag_Number | 4 |
函数值 | Tag_Result | 1 0000 |
将“Tag_Value”操作数的值将向左移动 4 位。该指令的结果作为函数值在“Tag_Result”操作数中返回。