欢迎访问文稿网!

移位和循环指令

范文之家 分享 时间: 加入收藏 我要投稿 点赞

移位和循环指令

    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

221381
领取福利

微信扫码领取福利

微信扫码分享