以下内容节选自机械工业出版社出版的西门子自动化技术丛书----《SIMATIC S7- 1500 与 TIA博途软件使用指南》, 作者崔坚。更多更详细的内容请您参考《SIMATIC S7- 1500 与 TIA博途软件使用指南》一书。
基本指令---移位和循环移位指令
6.2.10移位和循环移位指令
LAD移位指令可以将输入参数IN中的内容向左或向右逐位移动;循环指令可以将输入参数IN中的全部内容循环地逐位左移或右移,空出的位用输入IN移出位的信号状态填充。STL移位指令将累加器1的低字或全部内容向左或向右逐位移动;循环指令将累加器1的全部内容循环地逐位左移或右移,空出的位用累加器1移出位的信号状态填充。 LAD指令可以对8、16、32以及64位的字或整数进行操作,而STL指令只能对16和32位的字或整数进行操作。移位和循环指令参考表6- 11。
表6- 11 S7-1500 移位和循环移位指令
字移位指令移位的范围为0~15,双字移位指令移位的范围为0~31,长字移位指令移位的范围为0~63。对于字、双字和长字移位指令,移出的位信号丢失,移空的位使用0补足。例如将一个字左移6位,移位前后位排列次序如图6- 9所示。

带有符号位的整数移位范围为0~15;双整数移位范围为0~31;长整数移位指令移位的范围为0~63。移位方向只能向右移,移出的位信号丢失,移空的位使用符号位补足。如整数为负值,符号位为1;整数为正值,符号位为0。例如将一个整数右移4位,移位前后位排列次序如图6- 10所示。

使用STL编程时要注意固定的格式,例如一个字左移5位的程序:
L 5 //移动的位数。
L %MW120 //移位的变量。
SLW
T %MW122 //移位结果。
执行移位指令时,将累加器2中的值作为移动的位数,对累加器1中的值进行移位操作。