西门子PLC循环左、右移位指令的使用

循环移位将移位数据存储单元的首尾相连,同时又与溢出标志SM1.1连接,SM1.1用来存放被移出的位。指令格式见表6

1)循环左移位指令(ROL

使能输入有效时,将IN输入无符号数(字节、字或双字)循环左移N位后,将结果输出到OUT所指定的存储单元中,移出的最后一位的数值送溢出标志位SM1.1。当需要移位的数值是零时,零标志位SM1.01

2)循环右移位指令(ROR

使能输入有效时,将IN输入无符号数(字节、字或双字)循环右移N位后,将结果输出到OUT所指定的存储单元中,移出的最后一位的数值送溢出标志位SM1.1。当需要移位的数值是零时,零标志位SM1.01

3)移位次数N≥数据类型(BWD)时的移位位数的处理

如果操作数是字节,当移位次数N≥8时,则在执行循环移位前,先对N进行模8操作(N除以8后取余数),其结果0-7为实际移动位数。

如果操作数是字,当移位次数N≥16时,则在执行循环移位前,先对N进行模16操作(N除以16后取余数),其结果0-15为实际移动位数。

如果操作数是双字,当移位次数N≥32时,则在执行循环移位前,先对N进行模32操作(N除以32后取余数),其结果0-31为实际移动位数。

4)使ENO = 0的错误条件:0006(间接寻址错误),SM4.3(运行时间)。

6 循环左、右移位指令格式及功能

LAD

STL

RLB OUTN

RRB OUTN

RLW OUTN

RRW OUTN

RLD OUTN

RRD OUTN

操作数及数据类型

INVB, IB, QB, MB, SB, SMB, LB, AC, 常量。

OUTVB, IB, QB, MB, SB, SMB, LB, AC

数据类型:字节

INVW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量。

OUTVW, IW, QW, MW, SW, SMW, LW, T, C, AC

数据类型:字

INVD, ID, QD, MD, SD, SMD, LD, AC, HC, 常量。

OUTVD, ID, QD, MD, SD, SMD, LD, AC

数据类型:双字

NVB, IB, QB, MB, SB, SMB, LB, AC, 常量;数据类型:字节。

功能

ROL:字节、字、双字循环左移N位;ROR:字节、字、双字循环右移N位。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

说明:在STL指令中,若INOUT指定的存储器不同,则须首先使用数据传送指令MOVIN中的数据送入OUT所指定的存储单元。如:MOVB INOUT

SLB OUTN