[西门子] 西门子 200移位/循环移位指令

[复制链接]
查看286 | 回复0 | 2024-7-10 19:47:14 | 显示全部楼层 |阅读模式
>
01
什么是移位​移位,就是将位进行移动。位是最小单位,将多个位放在一个存储单元里,再在这个存储单元里面进行移动,就是PLC的移位。


移位指令分为字节、字、双字左移、右移,以及循环左移和循环右移。


02
左移SHL和右移SHR指令字节、字、双字左移指令

数据位从右向左排布,从最右端的位置开始,"1"的数值,每次向左移动一个位,原来位置用0来代替补位。参数N指明了每次需要移位的位数。


指令参数中的N是移位的位数,是将输入操作数IN中的二进制位按N位向左进行移位,从而输出到输出端OUT中,移出的位自动丢去,低位中空出的位自动补零。


VB0:0110 0011,每次左移1位:1100  0110




字节、字、双字右移指令



右移指令SHR和左移指令SHL它们的执行的过程是一致,只是移动的方向不同,左移指令是由低位往高位移动,右移指令是由高位往低位移动。
VB0:0110 0011,每次右移1位:0011 0001

移位指令对每个移出的位进行自动补0,如果移位位数N大于或等于8(字操作16或双字操作32)时,数值最多被移位8(字操作16、双字操作32)次。移位位数大于或等于最大允许值时,相当于进行数据清零操作。03
循环左移ROL和循环右移ROR指令字节、字、双字循环左移指令


将输入操作数IN中的二进制位按N位进行循环左移,和移位指令的区别是,循环移位指令移出的位不会丢失,而是放到低位中空出的位置中去。参数N同样用于指定移动的位数。
VB0:0110 0011,循环左移2位:1000 1101


字节、字、双字循环右移指令
循环右移ROR和循环左移ROL指令它们的移动过程是一致,只是移动的方向不同,循环左移指令是由低位往高位移动,循环右移指令是由高位往低位移动。
VB0:0110 0011,循环右移2位:1101 1000
04
移位寄存器指令SHRB




DATA:需要进行保存的数据位(bit)。执行指令时将该位的值移入寄存器。



S_BIT:移位寄存器的最低位


N :移位寄存器的长度(bits)和方向(N为正值时,左移位。N为负值时,右移位),最大长度为64位。


每次使能有效时,移位寄存器移动1位。


上图指令的意思是,在使能EN端的每个上升沿,把I0.0的状态依次保存在V100.0~V100.3这四个bit地址。超过四次后V100.3的数据会溢出到SM1.1。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则