PLC S7-200 Smart SHRB 移位寄存器指令
SHRB指令:
将DATA值的值(0/1),写入S_BIT指定的寄存器,寄存器S_BIT的长度由内N指出(最大为64)。
EN使能、当N>0时,S_BIT寄存器的值向高移动1位,将DATA的值写入S_BIT寄存器的最低位,将溢出位的值保存到SM1.1中;
EN使能、当N<0时,S_BIT寄存器的值向低移动1位,将DATA的值写入S_BIT寄存器的最高位,将溢出位的值保存到SM1.1中。
效果演示:
1、N>0时,I0.1状态做DATA输入值,M0.0做寄存器(最低位),寄存器总长度为 8 bit位;I0.0上升沿做SHRB的使能。
I0.0第1次接通,M0.0-M0.7每1个位都向高位移动1位,M0.7被移出并保存到SM1.1中;然后将I0.1的状态(1)保存到M0.0中;
此时M0.0-7的Bit值为:
M0.0 | M0.1 | M0.2 | M0.3 | M0.4 | M0.5 | M0.6 | M0.7 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
I0.0第2次接通,M0.0-M0.7每1个位都向高位移动1位,M0.7被移出并保存到SM1.1中;然后将I0.1的状态(1)保存到M0.0中;
此时M0.0-7的Bit值为:
M0.0 | M0.1 | M0.2 | M0.3 | M0.4 | M0.5 | M0.6 | M0.7 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
I0.0第3次接通,M0.0-M0.7每1个位都向高位移动1位,M0.7被移出并保存到SM1.1中;然后将I0.1的状态(0)保存到M0.0中;
此时M0.0-7的Bit值为:
M0.0 | M0.1 | M0.2 | M0.3 | M0.4 | M0.5 | M0.6 | M0.7 |
0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
这里可以看出,寄存器M0使用了8个Bit位长度,因为N>0(8>0),所以SHRB每次都将M0.0-7的所有位向高地址移动1位,并将DATA的值写入M0.0。
2、N<0时,I0.1状态做DATA输入值,M0.0做寄存器(最低位),寄存器总长度为 8 bit位;I0.0上升沿做SHRB的使能。
这里仍然按照上面的操作进行,I0.0前2次按下I0.1保持接通,I0.0第3次按下I0.1断开。
I0.0第1次接通,M0.0-M0.7每1个位都向低位移动1位,M0.0被移出并保存到SM1.1中;然后将I0.1的状态(1)保存到M0.7中;
此时M0.0-7的Bit值为:
M0.0 | M0.1 | M0.2 | M0.3 | M0.4 | M0.5 | M0.6 | M0.7 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
I0.0第2次接通,M0.0-M0.7每1个位都向低位移动1位,M0.0被移出并保存到SM1.1中;然后将I0.1的状态(1)保存到M0.7中;
此时M0.0-7的Bit值为:
M0.0 | M0.1 | M0.2 | M0.3 | M0.4 | M0.5 | M0.6 | M0.7 |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
I0.0第3次接通,M0.0-M0.7每1个位都向低位移动1位,M0.0被移出并保存到SM1.1中;然后将I0.1的状态(0)保存到M0.7中;
此时M0.0-7的Bit值为:
M0.0 | M0.1 | M0.2 | M0.3 | M0.4 | M0.5 | M0.6 | M0.7 |
0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
这里可以看出,寄存器M0使用了8个Bit位长度,因为N<0(-8<0),所以SHRB每次都将M0.0-7的所有位向低地址移动1位,并将DATA的值写入M0.7。
作者:DW039
出处:http://www.cnblogs.com/dw039
本文由DW039原创并发布于博客园,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。