左移、右移指令
S7-200的左、右移位指令的梯形图编程格式如图10-5.1所示。
梯形图中的SHL B为移位指令标记,其中:
SHL: SH为移位标记,L为左移(R为右移):
B:字节指令标记(W为16位字,WD为32位双字);
IN:需要移位的存储器地址;
OUT:结果存储器地址。
S7-200的移位指令具有如下特点:
①S7-200的移位分为两步执行。
——利用移位指令( MOV)将需要移位的数据移动到结果存储器中,见图10-5.1 (b)。如果仅需要对指定存储器内容移位、且执行结果仍然保存在原存储器中,则不需要执行本步骤,见图10-5.1 (a)。
——对结果存储器进行移位。
②S7-200执行移位指令时,将数据被移出后的“空位”自动补入状态“0”。
③被移出的最后一位状态被保存在系统标志寄存器SMl.1中。
④移位位数N-般不应超过移位数据本身的长度(字节操作为8,字操作为16,双字操作为32),如果超过数据本身的长度,则需要进行“取余”处理。例如:对字节数据指定移动12位时,实际移动为4位(12除以8后取余数4);当N为0时,不进行移位操作,同时系统标志寄存器SMl.0被置“1”状态。
2.循环左移、循环右移指令
S7-200的循环左、右移位指令的梯形图编程格式如图10-5.2所示。
梯形图中的ROL B为移位指令标记,其中:
ROL: RO为循环移位标记,L为左移(R为右移):
B:字节指令标记(W为16位字,WD为32位双字);
IN:需要移位的存储器地址:
OUT:结果存储器地址。
S7-200的移位指令可以将被移出的数据从另一端依次返回到移出数据后的空位上,实现数据的循环移动。其他特点与“左、右移位”指令相同。
3.移位寄存器指令
利用移位寄存器指令,可以将来自寄存器外部的二进制位信号( DATA),按照规定的方向逐步移入寄存器内。S7-200移位寄存器的梯形图编程格式如图10-5.3所示。
梯形图中的SHRB为移位指令标记,其中:
DATA:二进制位状态输入;
S__ BIT:移位寄存器的最低位地址;
N:移位寄存器的长度与移位方向,正数为左移,输入从最低位移入移位寄存器;负数为右移,输入从最高位移入移位寄存器。
为了保证数据在每次“使能”输入信号到来时只移动一位,“使能”输入应使用边沿指令。