西门子PLC移位与循环移位指令使用

2019年1月12日17:20:46 发表评论 268 阅读

SHR(右移)和 SHL(左移)指令

表格 8- 180 SHR 和 SHL 指令

1 对于 LAD 和 FBD: 单击“???”并从下拉菜单中选择数据类型。

表格 8- 181 参数的数据类型

参数 数据类型 说明
IN 整数 要移位的位序列
N USInt, UDint 要移位的位数
OUT 整数 移位操作后的位序列

 

  • 若N=0,则不移位。将 IN 值分配给 OUT。
  • 用0填充移位操作清空的位位置。
  • 如果要移位的位数(N)超过目标值中的位数(Byte 为 8 位、Word 为 16 位、DWord 为 32 位),则所有原始位值将被移出并用 0 代替(将 0 分配给 OUT)。
  • 对于移位操作,ENO 总是为TRUE。

表格 8- 182 示例: Word 数据的 SHL

自右插入零,使 Word 的位左移 (N = 1)
IN 1110 0010 1010 1101 首次移位前的 OUT 值: 1110 0010 1010 1101
  首次左移后: 1100 0101 0101 1010
第二次左移后: 1000 1010 1011 0100
第三次左移后: 0001 0101 0110 1000

ROR(循环右移)和 ROL(循环左移)指令

表格 8- 183 ROR 和 ROL 指令

对于 LAD 和 FBD: 单击“???”并从下拉菜单中选择数据类型。

表格 8- 184 参数的数据类型

参数 数据类型 说明
IN 整数 要循环移位的位序列
N USInt, UDint 要循环移位的位数
OUT 整数 循环移位操作后的位序列

 

  • 若N=0,则不循环移位。将 IN 值分配给 OUT。
  • 从目标值一侧循环移出的位数据将循环移位到目标值的另一侧,因此原始位值不会丢 失。
  • 如果要循环移位的位数(N)超过目标值中的位数(Byte 为 8 位、Word 为 16

位、DWord 为 32 位),仍将执行循环移位。

  • 执行循环指令之后,ENO 始终为TRUE。

表格 8- 185 示例: Word 数据的 ROR

将各个位从右侧循环移出到左侧 (N = 1)
IN 0100 0000 0000 0001 首次循环移位前的 OUT 值: 0100 0000 0000 0001
  首次循环右移后: 1010 0000 0000 0000
第二次循环右移后: 0101 0000 0000 0000

 

weinxin
plc入门知识问答
每一个PLC工程师都应该关注的微信公众账号,只需输入您的问题,就会有答案

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: