使用“循环右移”指令,将参数 IN 的内容逐位向右循环移位,并将结果赋值给指定的操作数。参数 N 用于指定应将特定值循环移位的位数。用移出的位填充因循环移位而空出的位。
如果参数 N 的值为“0”,则将输入 IN 的值作为结果。
如果参数 N 的值大于可用位数,则输入 IN 中的操作数值将循环移动指定位数个位。
下图显示了如何将 DWORD 数据类型操作数的内容向右循环移动 3 位:
参数
下表列出了该指令的参数:
参数 | 声明 | 数据类型 | 存储区 | 说明 | |
---|---|---|---|---|---|
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" := ROR(IN := "Tag_Value", N := "Tag_Number"); |
下表将通过具体的操作数值对该指令的工作原理进行说明:
参数 | 操作数 | 值 |
---|---|---|
IN | Tag_Value | 1 0101 |
N | Tag_Number | 5 |
函数值 | Tag_Result | 1 1100 |
将“Tag_Value”操作数的内容将向右循环移动 5 位。该指令的结果作为函数值在“Tag_Result”操作数中返回。