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

移位和循环指令

时间:2022-10-21 百科知识 版权反馈
【摘要】:在语句表中,字循环移位指令的指令格式如下:在顺序控制或步进过程中,应用移位寄存器编程很方便。在梯形图中移位寄存器指令以功能框的形式编程,指令名称为SHRB。其中,S_BIT指定移位寄存器的最低端;N指定移位寄存器的长度。每次使能输入端EN有效时,整个移位寄存器移动1位。移位寄存器指令影响特殊继电器:SM1.0(零),当移位操作结果为0时,SM1.0自动置位;SM1.1(溢出)的状态由每次移出位的状态决定。

4.3.7 移位和循环指令

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

1)左移和右移指令

左移和右移指令的功能是将输入数据IN左移或右移N位后,把结果送到OUT。左移和右移指令的特点如下:

①被移位的数据是无符号的。

②在移位时,存放被移位数据的编程元件的移出端与特殊继电器SM1.1连接,移出位进入SM1.1(滥出),另一端自动补0。

③移位次数N与移位数据的长度有关,如所需移位次数N小于实际的数据长度,则执行N次移位。如所需移位次数N大于数据长度,则执行移位的次数等于实际数据长度的位数。

④移位次数N为字节型数据。

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

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

(1)字节左移指令SLB(Shift Left Byte)和字节右移指令SRB(Shift Right Byte)

梯形图中,字节左移指令或字节右移指令以功能框的形式编程,指令名称分别为SHL_B和SHR_B。

当使能输入端EN有效时,将输入字节(IN)左移或右移N位后,再把结果输送到OUT字节。N最大实际可移位次数为8。

在语句表中,字节左移指令SLB和字节右移指令SRB的指令格式如下:

字节左移指令:SLB OUT,N(OUT与IN为同一个存储单元

字节右移指令:SRB OUT,N(OUT与IN为同一个存储单元)

例:  SLB MB0,2

    SRB LB0,3

以第一条指令为例,指令的执行结果见表4-30所示。

表4-30 字节左移指令SLB的执行结果

img316

(2)字左移指令SLW(Shift Left Word)和字右移指令SRW(Shift Right Word)

在梯形图中,字左移指令SLW或字右移指令SRW以功能框的形式编程,指令的名称分别为SHL_W和SHR_W。

当使能输入端EN有效时,将输入字(IN)左移或右移N位后,再把结果输送到字(OUT)。N最大实际可移位次数为16。

在语句表中,字左移指令SLW和字右移指令SRW的指令格式如下:

字左移指令:SLW OUT,N(OUT与IN为同一个存储单元)

字右移指令:SRW OUT,N(OUT与IN为同一个存储单元)

例:SLW MW0,2

  SRW LW0,3

以第二条指令为例,指令的执行结果见表4-31所示。

表4-31 字右移指令SRW的执行结果

img317

(3)双字左移指令SLDW(Shift Left Double Word)和双字右移指令SRDW(Shift Right Double Word)

在梯形图中,双字左移指令SLDW和双字右移指令SRDW以功能框的形式编程,指令的名称分别为SHL_DW和SHR_DW。

当使能输入端EN有效时,将输入端(IN)的双字型数据左移或右移N位后,再将结果输出到OUT所指的双字存储单元。N最大实际可移位次数为32。

在语句表中,双字左移SLDW和双字右移指令SRDW的指令格式如下:

双字左移指令:SLDW OUT,N(OUT与IN为同一个存储单元)

双字右移指令:SRDW OUT,N(OUT与IN为同一个存储单元)

例:  SLD MD0,2

    SRD LD0,3

2)循环左移和循环右移指令

循环移位的特点如下:

①被移位的数据是无符号的。

②在移位时,存放被移位数据的编程元件移出端既与另一端连接,又与特殊继电器SM1.1连接,移出位在被移到另一端的同时,也进入SM1.1(溢出),另一端自动补0。

③移位次数N与移位数据的长度有关,如N小于实际的数据长度,则执行N次移位;如N大于数据长度,则执行移位的次数为N除以实际数据长度的余数。

④移位次数N为字节型数据。

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

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

(1)字节循环左移指令RLB和字节循环右移指令RRB

在梯形图中,字节循环移位指令以功能框的形式编程,指令名称分别为ROL_B和ROR_B。

当使能输入端EN有效时,将输入端(IN)的字节型数据循环移位N位后,送到由OUT指定的字节。

在语句表中,字节循环移位指令的指令格式如下:

字节循环左移指令:RLB OUT,N

字节循环右移指令:RRB OUT,N

(2)字循环左移指令RLW和字循环右移指令RRW

在梯形图中,字循环移位指令以功能框的形式编程,指令名称分别为ROL_W和ROR_W。当使能输入端EN有效时,将输入端(IN)的字型数据循环移位N位后,送到由OUT指定的字。在语句表中,字循环移位指令的指令格式如下:

字循环左移指令:RLW OUT,N

字循环右移指令:RRW OUT,N

例:  RLW MW0,2

    RRW LW0,3

以第二条指令为例,指令的执行结果见表4-32所示。

表4-32 字循环右移指令RRW的执行结果

img318

(3)双字循环左移位指令RLD和双字循环右移位指令RRD

在梯形图中,双字循环移位指令名称分别为ROL_DW和ROR_DW。当使能输入端EN有效时,将输入双字(IN)循环左移或右移N位后,再把结果输送到字(OUT)。在语句表中,字循环移位指令的指令格式如下:

双字循环左移指令:RLD OUT,N

双字循环右移指令:RRD OUT,N

3)移位寄存器指令SHRB(Shift Register Bit)

在顺序控制或步进过程中,应用移位寄存器编程很方便。在梯形图中移位寄存器指令以功能框的形式编程,指令名称为SHRB。它在梯形图中有三个数据输入端:DATA为数值输入,将该位的值移入移位寄存器,而该移位寄存器是由S_BIT和N决定的。其中,S_BIT指定移位寄存器的最低端;N指定移位寄存器的长度。每次使能输入端EN有效时,整个移位寄存器移动1位。

移位寄存器的特点如下:

①移位寄存器的数据类型无字节型、字型、双字型之分,可指定的最大长度为64位,可正也可负。

②移位寄存器的组成:

最低位为S_BIT;

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

最高位的字节号:MSB的商+S_BIT的字节号;

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

例如:S_BIT=V33.4,N=14,则MSB=(14-1+4)/8=17/8=2…1

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

移位寄存器的组成:V33.4~V33.7、V34.0~V34.7、V35.0、V35.1,共14位。

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

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

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

⑤移位寄存器的移出端与SM1.1(溢出)连接。

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

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

在语句表中,移位寄存器的指令格式为:SHRB DATA,S_BIT,N

例:  SHRB I0.5,VB20,4

    指令的执行结果见表4-33所示。

表4-33 移位寄存器指令SHRB的执行结果

img319

4)先进先出指令FIFO(First Input First Output)

当使能输入端EN有效时,从TBL指明的表中移出第一个字型数据并将其输出到DATA所指定的字单元。

FIFO表取数特点:

取数时,移出的数据总是最先进入表中的数据。每次从表中移出一个数据,剩余数据依次上移一个字单元位置,同时实际填表数EC会自动减1。

指令格式:FIFO TBL,DATA

例:FIFO VW100,AC0

  指令的执行结果见表4-34所示。

表4-34 先进先出指令FIFO的执行结果

img320

5)后进先出指令LIFO(Last Input First Output)

在梯形图中,LIFO以功能框的形式编程,指令名称为LIFO。当使能输入端EN有效时,从TAB指定的表中,取出最后进入表中的数据,送到DATA指定的单元,剩余数据位置不变,实际填表数EC会自动减1。LIFO指令影响的特殊继电器为SM1.5(表空)。不要从一个空表中取数据,否则SM1.5为ON。

指令格式:LIFO TBL,DATA

例:   LIFO VW100,AC0

指令执行结果见表4-35所示。

表4-35 后进先出指令LIFO的执行结果

img321

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

我要反馈