1 引言
步进顺序控制编程法是PLC程序编制的重要方法。因其思路清晰,导向性强,在复杂的程序编制中可以省略许多的联锁环节,因而在工控实践中应用非常广泛。
使用步进顺控设计法时,首先要根据系统的工艺过程绘制顺序功能图,然后根据顺序功能图编制步进梯形图程序。
顺序功能图(Sequential Function Chart,简称SFC图)是描述控制系统的控制过程、功能和特性的一种图形,由于SFC编程语言基于“触发-执行”句式唯一描述逻辑顺序,因此逻辑能够透彻剖析了整个控制过程的排他性逻辑控制循序关系,透明简单唯一,成为SFC语言最突出的逻辑表达优势。
但是,根据顺序功能图编制转化梯形图程序的方法,大多很繁琐,尤其在复杂的控制系统中容易写错,不能完美体现顺序功能图的功能和步进顺控编程的优点,使得许多编程人员尤其是初学者不愿意使用顺序控制法编程。本文以西门子PLC为例,在对常规编程方法进行剖析的基础上提出用移位寄存器思路和加法寄存器思路进行步进顺控编程,以期对初学者以及中小型企业的PLC技术人员有很大的帮助和推广使用意义。
2 SFC论题背景
图1是带有选择序列和并行序列的顺序功能图。激活S0.0步以后,若I0.0成立就转移到S0.1步执行Q0.0动作;否则的话成立直接跳转到M0.2步执行Q0.1动作,I0.0与不会同时成立,这就是选择序列。激活S0.2步以后,若I0.3成立将开启并行序列(同时转移到S0.3步和S1.1步)。在S0.4步和S1.2步都被激活后,若I0.6成立将结束并行序列转移到S0.0步。并行序列的结束条件是所有分支的最末步必须处于激活状态且转移条件成立。
本文以图1的顺序功能图为例,分别采用几种方式编写梯形图程序,然后进行对比分析。
3 几种指令转化方法
3.1 专用指令
一些PLC有专用的步进顺控指令。西门子PLC的步进顺控指令是SCR、SCRT和SCRE,它们必须与状态元件S配套使用且必须成套使用。SCR表示某个步的开始,SCRT表示转移到后续的目标步,SCRE表示步的结束。以图1的顺序功能图为例,用专用指令编写的步进梯形图程序如图2所示。
从图中看出,用专用指令编写选择序列的程序比较简单,如图2中在SCR S0.0的后面,直接用I0.0常开触点SCRT S0.1,用I0.0常闭触点SCRT S0.2。但专用指令编写并行序列程序时在合并处非常麻烦,初学者很不好理解。如图1中是两个分支并行,左侧分支的最末步S0.4被激活后不能单独结束,要用转移条件I0.6往后虚拟延伸到S0.5,这样S0.4步才能用SCRE结束。同样右侧分支的最末步S1.2被激活后也要用公共转移条件I0.6往后虚拟延伸到S1.3,使S1.2步得以用SCRE结束。最后用S0.5的常开触点与S1.3的常开触点串联,表示两个分支的最末步共同结束,才可以转移到初始步S0.0。
必须注意的是,因S0.5和S1.3在顺序功能图中是没有的,仅仅为了步进梯形图的完整而虚拟的,因此不能用SCR指令激活它们。
不同厂家的PLC其专用的步进编程指令不一样。步进顺控必须是前级步被激活后,相应的转移条件成立,才能转移到后续的目标步。使用专用指令编写梯形图程序的最大好处就是不用考虑后续步的复位问题。因为专用指令(如西门子的SCRE)本身含有将前级步复位的功能。
3.2 置位/复位(S/R)指令
置位/复位(S/R)指令是基本指令,无论那个厂家的PLC都有置位/复位指令。
用置位/复位指令编写步进顺控程序的基本思路是:前级步被激活后若转移条件成立就将后续步置位(S),同时将前级步复位(R)。
用置位/复位指令(S/R指令)编制梯形图程序可以不用状态器S而直接用辅助继电器M表示步,如图3所示是用辅助继电器M表示的顺序功能图。对应的用置位/复位指令编写的梯形图程序如图4所示。
图4中每个前级步的激活都是后续步接通的前提,在这个前提下若转移条件成立就把后续步接通,再把前级步复位。例如:在选择序列的起点处,当M0.0步激活后,串联I0.0常开触点即可把M0.1步接通再把M0.0复位;M0.0激活后,串联I0.0常闭触点就跳过M0.1直接把M0.2步接通再把M0.0步复位。在并行序列的起点处,当M0.2步激活后,串联I0.3的常开触点,同时把左侧序列的M0.3步和右侧序列的M1.I步接通,并且把M0.2步复位。在并行序列即将结束的合拢处,用左侧最末步M0.4的常开触点与右侧最末步M1.2的常开触点串联,再串联公共转移条件I0.6转移到初始步M0.0,然后把M0.4步和M1.2步复位。
与前面的专用指令编程相比,并行序列的合拢处不需要虚拟延伸,简单直观,方便阅读理解,而且由于省去了大量的SCR、SCRT、SCRE,使得程序简洁了许多。
3.3 左移位(SHL-B)指令
所有厂家的PLC都有移位指令。如图5所示是用西门子S7-200PLC普通的左移位(SHL-B)指令编制的步进梯形图程序,与图3的顺序功能图对应。如果工作步超过7步就需要用字左移位(SHL-W)指令。
图5中从M0.0步、M0.1步、M0.2步、M0.3步到M0.4步的转换都是第三行的SHL-B指令实现的。比如当M0.0=1后,如果I0.0常开触点闭合,就移位使M0.1=1;之后若I0.1=1就移位使M0.2=1;依次下去。在选择序列M0.0步等于1后,若I0.0=0(常闭触点成立)程序(MOV_B 2#100 MB0)就运行一次,使M0.2=1直接跳转到M0.2步。在并行序列起点M0.2步接通后,若I0.3常开触点接通,一方面第三行SHL-B指令移位使M0.3接通,另一方面在程序的第二行(MOV_B 2#10 MB1 )使M1.1=1(M1.1步激活)。随后若I0.5=1用SHL-B指令移位使M1.2=1;I0.6=1时再移位一次使M1.3接通。M0.5和M1.3的常开触点串联后转移到M0.0步,完成并行序列的合拢。
3.4 递增(INC)指令
递增指令也是所有厂家PLC都有的指令,用INC指令编制步进梯形图程序有着直观实用、简洁易学的特点。如图6所示是用辅助继电器MB的值表示的顺序功能图,是图3的另一种表现形式。图6中用MB0=1表示初始步,MB0=2----5以及MB1=1----2都表示工作步。MB0=4和5与MB1=1和2共同表示并行序列。
图7是用INC(递增)指令编制的步进梯形图程序。当初始脉冲SM0.1=1时赋给初始值MB0=1(激活初始步)。在此前提下若I0.0=1,第二行(INC_B MB0)指令运行一次,使MB0的值递增后等于2,执行Q0.O动作;若此时I0.1=1则第二行(INC_B MB0)指令再运行一次,使MB0的值等于3,执行Q0.1动作,依次往下进行。在MB0=1的前提下,若I0.0=0(常开触点断开,常闭触点闭合)则运行(MOV_B 3 MB0)指令使MB0=3,直接执行Q0.1动作,完成选择序列。在MB0=3的前提下,若I0.3=1,程序中两个INC指令都运行一次,分别使MB0=4执行Q0.2动作、MB1=1执行Q0.3动作,完成并行序列的开始。在MB0=5和MB1=2的前提下,若I0.6=1,程序中直接将M0.0置位,返回到M0.0步,完成并行序列的合拢。
必须要注意的是,使用INC指令一定要加P,即要用脉冲边缘型加法递增。
4 精简指令解析
纵观以上各种编写步进梯形图的方法,我们可以看出:专用指令每一步的编写都要有完整的SCR、SCRT和SCRE指令,特别是在并行序列中需要虚拟延伸,既繁琐又难于掌握。
S/R指令是基本指令,通俗易懂,易于理解。但S/R指令也要成套使用,每次转移到新的目标步都要将前级步复位。与专用指令相比,在编写并行序列的步进梯形图程序时较为简单。但两者的程序调试都不容易查错,且修改工作量较大,普通不受编程人员青睐。
用左移位(SHL-B)指令编制步进梯形图程序时,首先要赋初始值(如图5中程序开头的第一行),并且不能使用循环移位指令,保证在移位寄存器中只有一个“1”,这个“1”移到寄存器的哪一位就相应的激活哪一步,最后是做好循环(如图5中M0.5常开触点与M1.3常开触点串联后回到初始步M0.0)。
递增(INC)指令很好理解且易于掌握。用它编制步进梯形图同样也要正确赋初始值,以后每次转移条件满足时MB的值就递增1,当前步就会往后挪动一步。最后做好循环即可。
用左移位指令和递增指令编制步进梯形图程序有许多优点:一是不用考虑前级步的复位;二是如果中间漏掉了某步,修改非常容易,只要增加一个转移条件就行了(寄存器MB的长度会自动加1);三是并行序列程序会更加简洁。并行序列开始时用公共转移条件赋值另外一个字节的MB(如图7中的MB1)。合拢的时候将多条支路的最末步常开触点串联转移到后续的目标步。
5 结束语
综上所述,用专用指令和S/R指令可以编制简单的步进梯形图,但对于复杂的控制系统不好用,很繁琐且容易出错,调试及修改的工作量很大。用移位(SHL-B)指令和递增(INC)指令会使复杂程序变得简洁,使程序的调试、修改以及阅读变得容易。同样用移位寄存器(SHRB)指令也可以做步进梯形图。因此,透彻理解并灵活应用PLC编程指令,有助于我们优化程序设计,大幅度提高程序编制和调试的效率,缩短设计周期,值得在编程人员中推广使用。
参考文献
[1]S7-200 PLC基础教程. 廖常初主编. 机械工业出版社. 2009年2月第2版
[2]顺序控制中PLC的程序设计方法. 金芬. 苏州市职业大学学报. 2011年第2期
共0条 [查看全部] 网友评论