当前位置:文档之家› PLC教程理论篇之PLC-的位移与步进指令及其应用一

PLC教程理论篇之PLC-的位移与步进指令及其应用一

PLC教程理论篇之PLC 的位移与步进指令及其应用一一、移位指令简介移位指令用于字或多个位(BIT)字中二进制位依次顺序左移或右移。

有多种多样的移位指令:简单左移:执行一次本指令移一次位。

移位时用0移入最低位。

原最低位的内容,移入次低位……依次类推,最高位的内容移出,或移入进位位(而原进位位的内容丢失)。

有的PLC可设为,每次可移多个位。

简单右移:与左移不同的只是它为右移,先把进位位的内容移入字的最高位,原最高位的内容移入次高位……依次类推,原最低位的内容丢失,或移入进位位(而原进位位的内容丢失)。

有的PLC可设为,每次可移多个位。

循环左移:它与简单左移不同的只是它的进位位的内容不丢失,要传给00位,以实现循环。

循环右移:与循环左移不同的是00的内容不丢失,传给进位位,原进位的值传给第15 位,以实现循环右移。

还有可设定输入值的移位,如左移,不是都用0输入给最低位,而是可设定这个输入的值。

还有可逆移位指令,由用控制字,控制左还是右移,并可实现多字移位。

除了二进制的位(bit)移位,还有数位(digit)移位,可左移,也可右移SRD。

移位的对象可以多个字。

还有字移位,以字为单位的移,执行一次本指令移一个字。

移时0000移入起始地址(最小地址),起始地址的原内容移入相邻的较高地址,……最高地址(结束地址)的内容丢失。

多次执行本指令,可对从起始到结束地址的内容清零。

等等。

图8-1示的为三家PLC左移指令梯形图符号。

图a中St是移位开始通道,Ed是移位终了通道,P是移位脉冲输入,R是复位输入,S 是移位信号输入。

当P从OFF到ON时,而R又为OFF,则从St到Ed间的各个位(BIT),依次左移一位,并把S的值(OFF或ON)赋值给St的最低(00)位,Ed的最高(15)位溢出;但如R复位输入ON,移位禁止,并St到Ed各通道清零。

图b中SHL之后加DW为双字,即4个字节移位,EN为此指令执行条件。

其输入为ON,才能执行本指令,否则,不执行。

IN是进行移位的双字,OUT是移位结果输出的双字,N是每执行一次本指令将移位的位(BIT)数。

每次移位时,除了移位双字各位值相应左移,并用0填入移入的位。

图c中S是移位源,D是移位的输出,n1为指定源及输出位(BIT)数。

n2是指定执行一次本指令将移位的位(BIT)数。

本指令的输入为ON,才能执行本指令,否则,不执行。

每次移位时,除了移位指定的各位值相应左移,并用移位源的值填入移入的位。

图8-2示的为使用PLC左移指令梯形图程序。

本程序的功能是,当0.02、I0.2及X002 OFF时,而0.01、I0.1及X001从OFF到ON,则使输出(从10通道开始到11通道、QD04双字及从Y000到Y37共32个位)左移一位。

对图b、c,为了能把I0.0及X000的值赋值给这里的“输入位”,即Q3.00及Y000,以及能对移位用的双字、或各个位清零,这里增加了两组指令。

目的是使其也具有图a的功能。

提示:西门子数据存贮格式(顺序)与OMTRON、三菱不同,是高字节存低位数,低字节存高位数。

故上述输入位用QB3.0,而不像OMRON用10.00,也不像三菱用Y000。

西门子PLC 字节间的移位,以图8-2 b为例,是:Q 3.7移给Q2.0;Q 2.7移给Q1.0;Q 1.7移给Q0.0。

各字节中的移位,则也是从低位到高位移,即Q0.6移给Q0.7,Q0.5移给Q0.6,等等。

三菱PLC的移位,以图8-2c为例,是:Y0.7移给Y1.0;Y 1.7移给Y2.0;Q 2.7移给Y3.0。

各8位中的移位,则也是从低位到高位移,即Y0.6移给Y0.7,Y0.5移给Y0.6,等等。

OMRON PLC的移位,以图8-2a为例,是:10.15移给11.00。

各字中的移位,则也是从低位到高位移,即10.06移给10.07,10.05移给10.06,等等。

二、移位指令应用移位指令是很有用的。

不仅在数据处理时,要用到它,而且在逻辑量控制时,也常用到它。

当然,以上讲的也还不是移位指令的全部,也不是所有PLC都有以上讲的这些移位指令。

具体使用此类指令,也可能还有一些细节,故使用时可参阅有关帮助。

1.广告灯程序图8-3示的为广告灯程序。

它每经一秒,使用输出通道10、QW0及Y000到Y017控制的16个广告灯,先是逐一点亮。

全亮后,又逐一变灭。

并周而复始重复着。

图a为OMRON PLC程序。

图中10是移位开始通道,10也是移位终了通道,10.15的“非”是移位输入,P-OFF是复位输入(即永远不复位),P_1S是移位脉冲信号输入。

即每隔1秒,则通道10的各个位(BIT),依次左移一位,并把10.15的“非”的值赋值给10.00。

可知,当10.15为0时,移入的都是1,可使灯逐步亮。

但当10.15为1后,即全亮后,则移入的都是0,可使灯逐步灭。

而到了全灭后,又将从头开始。

图b为西门子PLC程序。

图中SHL之后加W为字移位,即2个字节移位,EN的输入为SM0.5(为秒脉冲)加微分处理P。

这可做到每隔1秒可使QW0执行一次移位。

N为1,故每次移移1位。

每次移位时,用0填入移入的位,即使Q1.0置0。

故本程序,在使用移位指令后,还执行两组指令,把M0.0赋值给Q1.0,Q0.7赋值给M0.0。

目的是,当Q1.0为0时,移入的都是1,可使灯逐步亮。

而当Q1.0为1后,即全亮后,则移入的都是0,可使灯逐步灭。

而到了全灭后,又将从头开始。

图c中Y000是移位源,Y000到Y017是移位的输出,n1为16,指定源及输出位(BIT)数为16。

n2为1,指定执行一次本指令将移位的位(BIT)数为1位。

本指令的输入为M8013 秒脉冲信号,并为微分执行,即每隔1秒执行一次本指令。

故本程序,在使用移位指令后,还执行两组指令,把M0.0的“非”赋值给Y000,Y017赋值给M0。

目的是,当Y017为0 时,移入的都是1,可使灯逐步亮。

而当Y017为1后,即全亮后,则移入的都是0,可使灯逐步灭。

而到了全灭后,又将从头开始。

2.移位步进图8-4为“移位步进“梯形图程序,操作数也是用符号地址。

三种PLC都是用左移位指令实现。

图a用SFT,图b用SHL-W,图c用SFTLP。

从图知,此程序由四个梯级组成。

对图a:有4个梯级。

第一梯级,用以产生“移位脉冲”信号。

第二梯级,在程序初始化及步进完成时(这里设了4步,如需要,可增多),把0传给“移位通道”。

P-First-Cycle为特殊继电器,在PLC运行时ON一个扫描周期。

第三梯级,用以产生“移位通道等零”信号。

在“移位通道”字的内容为零时,“移位通道等零”为1。

第四梯级,用以实现移位步进。

这里的复位信号为“p_off”(常OFF),故只要“移位脉冲”从0转到1,则把“移位通道等零”的状态(0,或1)移入“移位通道”的第0位,而原“移位通道”的第0位状态,移给“移位通道”的第1位...依次移位,直到“移位通道“的第15位溢出。

它与第三梯级配合将是,当“移位通道“为0时,“移位脉冲”从0转到1,向“移位通道”移入1;而当“移位通道”移入1后,移入0;直到复位。

这里,只要把“移位通道”0位对应于“步1”,1位对应于“步2”...则这个移位过程,也就是步进过程。

对图b:也有4个梯级。

第一梯级,也用以产生“移位脉冲”信号。

但它由指令P产生。

第二梯级,在程序初始化及步进完成时(这里设了4步,如需要,可增多),把0传给VW0,即“移位通道”。

这里,SM0.1为特殊继电器,在PLC运行时ON一个扫描周期。

第三梯级,用以实现移位步进。

每有一个“移位脉冲”,则把0移入“移位通道”,即VW0中的VB1的第0位,而原VB1的第0位状态,移给VB1的第1位...而原VB1的第7位状态,移给VW0中的VB0的第0位,原VB0的第0位状态,移给VB0的第1位...依次移位,直到VB0的第7位溢出。

第四梯级,用以产生第一步工作信号。

在“移位通道”字的内容为零时,使VW0,即“移位通道”为1,产生第一步输出。

这里,只要把VB1的0位对应于“步1”,1位对应于“步2”...VB0的0位对应于“步8”,1位对应于“步9”...则这个移位过程,也就是步进过程。

对图c:有5个梯级。

第一梯级,也用以产生“移位脉冲”信号。

方法同图a。

第二梯级,在程序初始化及步进完成时(这里设了4步,如需要,可增多),把0传给K1M11,即移位用的M11、M12、M13及M14组成的各个位。

这里,M8002为PLC运行时ON一个扫描周期。

第三、四梯级,用以产生第一步工作信号。

当M11到M14间的内容为0时,将使“移位值”置1。

为使“开始”产生的“移位脉冲”时,把为1的“移位值”,移入M11,以产生第一步输出。

第五梯级,用以实现移位步进。

每有一个“移位脉冲”,则把“移位值”移入M11,而M11位状态,移给M12...而原M14状态溢出。

这里,只要把M11对应于“步1”,M12位对应于“步2”...则这个移位过程,也就是步进过程。

图中还有“自动工作”控制。

它ON 时,将实现自动工作,即完成最后一步时,会产生“移位脉冲”,起动第一步。

提示:西门子PLC 数据存贮器V,可按位使用。

故图b用VW0作“移位通道”。

只是,它的最低位是V1.0,而不是V0.0,最高位是V0.7,而不是V1.7。

相关主题