首页 百科知识 移位与循环指令

移位与循环指令

时间:2022-10-16 百科知识 版权反馈
【摘要】:SMl.1始终存放最后一次被移出的位,移位次数与移位数据的长度有关,如果所需移位次数大于移位数据的位数,则超出次数无效。如果移位操作使数据变为0,则零存储器标志位自动置位。循环移位指令包括循环左移和循环右移,循环移位位数的长度分别为字节、字或双字。SMl.1始终存放最后一次被移出的位。移位寄存器指令影响的特殊继电器:SMl.0(零),当移位操作结果为0时置位;SMl.1(溢出)的状态由每次移出位的状态决定。

5.1.3 移位与循环指令

移位指令在PLC控制中是比较常用的,根据移位的数据长度可分为字节型移位,字型移位和双字型移位;根据移位的方向可分为左移和右移,还可进行循环移位。

1.位移指令

该指令有左移和右移两种。根据所移位数的长度不同可分为字节型、字型和双字型。移位数据存储单元的移出端与SM1.1(溢出)相连,所以最后被移出的位被放到SM1.1位存储单元。移位时,移出位进入SM1.1,另一端自动补0。

例如,在右移时,移位数据的最右端的位移入SMl.1,则左端补0。SMl.1始终存放最后一次被移出的位,移位次数与移位数据的长度有关,如果所需移位次数大于移位数据的位数,则超出次数无效。如字左移时,若移位次数设定为20,则指令实际执行结果只能移位16次,而不是设定值20次。如果移位操作使数据变为0,则零存储器标志位(SMl.0)自动置位。

(1)左移指令,如表5-6所示。

功能描述:把字节型(字型或双字型)输入数据IN左移N位后,再将结果输出到OUT所指的字节(字或双字)存储单元,最后一次移出位保存在SM1.1中。最大实际可移位次数为8位(16位或32位)。

表5-6 左移指令

img146

注:表中指令标注“????”为操作数。

(2)右移指令,如表5-7所示。

表5-7 右移指令

img147

注:表中指令标注“????”为操作数。

功能描述:把字节型(字型或双字型)输入数据IN右移N位后,再将结果输出到OUT所指的字节(字或双字)存储单元,最后一次移出位保存在SM1.1中。最大实际可移位次数为8位(16位或32位)。

【例5-3】分析执行下列程序后的结果。如图5-3所示。

img148

图5-3 例5-3

img149

执行过程:先将16#E2AD送入VW200,然后再左移3位。

执行后的结果:(VW200)=16#1568

2.循环移位指令(Rotate)

循环移位指令包括循环左移和循环右移,循环移位位数的长度分别为字节、字或双字。循环数据存储单元的移出端与另一端相连,同时又与SMl.1(溢出)相连,所以最后被移出的位移到另一端的同时,也被放到SMl.1位存储单元。例如在循环右移时,移位数据的最右端位移入最左端,同时又进入SMl.1。SMl.1始终存放最后一次被移出的位。移位次数N与移位数据的长度有关,如N小于实际的数据长度,则执行N次移位。如N大于数据长度,则执行移位的次数为N除以实际数相比度的余数。

(1)循环右移指令,如表5-8所示。

表5-8 循环右移指令

img150

注:表中指令标注“????”为操作数。

(2)循环左移指令,如表5-9所示。

循环移位指令影响的特殊继电器:SMl.0(零),当移位操作结果为0时,SMl.0自动置位;SMl.1(溢出)的状态由每次移出位的状态决定。

影响允许输出ENO正常工作的出错条件为:SM4.3(运行时间),0006(间接寻址错误)。

表5-9 循环左移指令

img151

注:表中指令标注“????”为操作数。

【例5-4】分析执行下列程序后的结果,如图5-4所示。

img152

图5-4 例5-4

img153

执行后的结果:(VW200)=16#156F

执行过程:

(3)寄存器移位指令,如表5-10所示。

在顺序控制或步进控制中,应用移位寄存器编程是很方便的。

移位寄存器的数据类型无字节型、字型、双字型之分,移位寄存器的长度N(≤64)程序指定。

①移位寄存器的组成:

最低位为S-BIT;

最高位的计算方法为MSB=(|N|−1+(S-BIT的位号))/8;

img154

表5-10 寄存器移位指令

img155

注:表中指令标注“????”为操作数。

最高位的字节号:MSB的商+S-BIT的字节号;

最高位的位号:MSB的余数。

例如:如果S-BIT是V33.4,N为14,则MSB=(14−l+4)/8=2余1

最高位的字节号:33+2=35,最高位的位号:1,最高位为:V35.1

则移位寄存器的组成:V33.4~V33.7,V34.0~V34.7,V35.0,V35.1

②移位寄存器指令的功能

N>0时,为正向移位,即从最低位向最高位移位。

N<0时,为反向移位,即从最高位向最低位移位。

当允许输入端EN有效时,如果N>0,则在每个EN的前沿,将数据输入DATA的状态移入移位寄存器的最低位S-BIT;如果N<0,则在每个EN的前沿,将数据输入DATA的状态移入移位寄存器的最高位,移位寄存器的其他位按照N指定的方向(正向或反向),依次串行移位。

③移位寄存器的输出端与SMl.1(溢出)连接。

移位寄存器指令影响的特殊继电器:SMl.0(零),当移位操作结果为0时置位;SMl.1(溢出)的状态由每次移出位的状态决定。

影响允许输出ENO正常工作的出错条件为:SM4.3(运行时间),006(间接寻址错误),0091(操作数超界),0092(计数区错误)。

img156

图5-5 例5-5

【例5-5】移位寄存器指令的应用。

img157

MSB=(3-1+0)/8=0余2

最高位为V100.2;移位寄存器组成:V100.0,V100.1,V100.2

N=3>0,则为正向移位,即从最低位向最高位移位。

下面分析执行该程序段后的结果:

时序图

img158

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈