1.混合控制算法
本章第1节已介绍了基本的混合控制算法要点。此外混合控制也可有分支,而且也还可有不同的分支结构。图2-64所示为较常用的一种分支算法框图。
从图2-64可知,它在主干程序中,每次步动作完成,都要判是否进入分支程序。如进入分支程序,一旦分支步完成,则工作停止。而若未进入分支程序,如自动工作,将周而复始地执行主干程序。一般讲,这里的主干程序用于系统正常工作,而分支程序则当系统不正常时才使用。与流程图算法一样,除了条件分支,还可并行分支。
2.混合控制程序实现
根据所用PLC提供的资源,可以有多种方法用于程序实现。较常用的是:
图2-65所示的是与图2-1对应的梯形图程序。
从图2-65知,它由工作控制、集中控制器、虚拟输出及虚拟输入几部分组成。
图2-64 分支算法的框图
1)集中控制器。对图2-65a:使用一个可逆计数器(CNTR 000,减计数不用)。当“工作”ON时,每次“步进”ON,则CNT 000加1,实现步进。计数到设定值(存于符号地址“总步数”中)后,再加1,CNTR 000现值又回到0,同时,其常开触点ON,常闭触点OFF。这时,如自动工作OFF,其常闭触点将使“工作”OFF,工作停止;否则,又将从0开始计数。而“步进”什么时候ON,取决于“计算输入”通道的内容与DM998值指向的DM地址的内容进行比较的结果。当这两者相等时,即得到了应有的反馈信号,表示动作完成,则“步进”ON。
对图2-65b:使用一个增计数器(C0)。当“工作”ON时,每次“步进”ON,则C0加1,实现步进。计数到设定值(存于符号地址“总步数”中)后,C0常开触点ON,C0常闭触点OFF。前者使C0复位,现值又回到0。如自动工作OFF,后者将使“工作”OFF,工作停止;否则,又将从0开始计数。而“步进”什么时候ON,取决于“计算输入”通道的内容与VD993作指针,指向的VW的内容进行比较的结果。当这两者相等时,即得到了应有的反馈信号,表示动作完成,则“步进”ON。
对图2-65c:也是使用一个增计数器(C0)。当“工作”ON时,每次“步进”ON,则C0加1,实现步进。计数到设定值(存于变量名“总步数”中)后,C0常开触点ON,C0常闭触点OFF。前者通过程序,用复位指令(RST)使C0复位,现值又回到0。如自动工作OFF,后者将使“工作”OFF,工作停止;否则,又将从0开始计数。而“步进”什么时候ON,取决于“计算输入”的内容与D900V0(900+V0的值作D的地址)的内容进行比较的结果。当这两者相等时,即得到了应有的反馈信号,表示动作完成,则“步进”ON。
2)虚拟输入。对图2-65a:用“虚拟输入”及“反虚拟输入”两个通道。两者内容相反,其对应位,如前者为1,则后者为0;如前者为0,则后者为1。而使用其中哪一位作为虚拟输入,由∗DM998确定。∗DM998的哪一位设为1,即使用哪一位作为反馈输入。而这个反馈输入是用正(ON),还是用反(OFF)信号,则取决于∗DM996与∗DM998的对应的位是怎么设的。设为1,反馈输入用的是反虚拟输入(用OFF信号);设为0反馈输入用的是正虚拟输入(用ON信号)。
为此,在该图的程序中,要先进行∗DM996与#0比较,如相等,则使用ON信号;反之,使用OFF信号。使用ON信号时,“计算输入”为∗DM998直接与“虚拟输入”通道的内容作“与”运算;用OFF信号,“计算输入”为∗DM998与“反虚拟输入”通道的内容作“与”运算。这个“计算输入”与∗DM998比较,如相等,即收到应有的反馈,从而产生“步进”信号,并将引起计数器CTRN 000加1、步进。
DM998的值等于CNT 000现值与DM991之和,所以,DM991决定了指针DM998的初值。DM996值等于CNT 000现值与DM992之和,所以,DM992决定了指针DM996的初值。
对图2-65b:使用“虚拟输入”及“反虚拟输入”两个字。两者内容相反,其对应位,如前者为1,则后者为0;如前者为0,则后者为1。而使用其中哪一位作为虚拟输入,由∗VD993确定。∗VD993的哪一位设为1,即使用那一位作为反馈输入。而这个反馈输入是用正(ON),还是用反(OFF)信号,则取决于∗VD985与∗VD993的相对应的位是怎么设的。设为1,反馈输入用的是反虚拟输入(用OFF信号);设为0反馈输入用的是正虚拟输入(用ON信号)。
为此,在该图的程序中,要先进行∗VD985与0比较,如相等,则使用ON信号;反之,使用OFF信号。使用ON信号时,“计算输入”为∗DM993直接与“虚拟输入”通道的内容作“与”运算;用OFF信号,“计算输入”为∗DM993与“反虚拟输入”通道的内容作“与”运算。这个“计算输入”与∗DM993比较,如相等,即收到应有的反馈,从而产生“步进”信号,并将引起计数器C0加1、步进。
在程序中,先把VB500的地址赋值给VD993,VB700的地址赋值给VD985,然后与C0现值乘2(指针地址以字节计,而本程序用的是以字计)后相加。这意味着这些设定值放在V区的开始位置为VB500、VB700。
对图2-65c:用“虚拟输入”及“反虚拟输入”两个字。两者内容相反,其对应位,如前者为1,则后者为0;如前者为0,则后者为1。而使用其中哪一位作为虚拟输入,由D700V0(700+V0的值作D的地址)确定。D D700V0的哪一位设为1,即使用那一位作为反馈输入。而这个反馈输入是用正(ON),还是用反(OFF)信号,则取决于D900V0(900+V0的值作D的地址)与D700V0的相对应的位是怎么设的。设为1,反馈输入用的是反虚拟输入(用OFF信号);设为0反馈输入用的是正虚拟输入(用ON信号)。
为此,在该图的程序中,要先进行D900V0与0比较,如相等,则使用ON信号;反之,使用OFF信号。使用ON信号时,“计算输入”为D700V0直接与“虚拟输入”字的内容作“与”运算;用OFF信号,“计算输入”为D700V0与“反虚拟输入”字的内容作“与”运算。这个“计算输入”与∗DM998比较,如相等,即收到应有的反馈,从而产生“步进”信号,并将引起计数器C0加1、步进。
在程序中,V0是由C0传送来的。这说明,这些设定值放在D区的开始位置为D700、D900。
以上所用的虚拟输入用计算方法处理,虚拟输入可于书记输入完全对应。输入程序转换简单。
图2-65 混合控制逻辑梯形图程序
3)虚拟输出。对图2-65a:使用“虚拟输出”通道。其值是由以DM999值为地址DM字的内容传来的。这个DM字的内容设成什么样,“虚拟输出”就有什么样的输出。DM999的值为DM995的值加CNT 000的现值。故DM999的初值由DM990内容确定。
对图2-65b:使用“虚拟输出”字。其值是由以VD999值为指针指向的VW字的内容传来的。这个字的内容设成什么样,“虚拟输出”就有什么样的输出。在程序中,先把VB300的地址赋值给VD999,然后与C0现值乘2(指针地址以字节计,而本程序用的是以字计)后相加。这意味着这些设定值放在V区的开始位置为VB300。
对图2-65c:使用“虚拟输出”字。其值是由D800V0(800+V0的值作D的地址)的内容传来的。这个字的内容设成什么样,“虚拟输出”就有什么样的输出。在程序中,在程序中,V0是由C0传送来的。这说明,这些设定值放在D区的开始位置为D800。
4)程序工作过程。当“起动”信号ON,“工作”输出将ON,并自保持,系统进入工作状态。“虚拟输出”将从∗DM999、∗VD989活V800V0传来数据,将根据前者的内容产生虚拟输出,如要产生实际输出,可把此输出再作传递。
随着实际输出控制的推进,系统的实际输入将传递给“虚拟输入”(有关程序另附)。程序将根据∗DM998、∗DM996,或∗VD993、∗VD985,或D900V0、V700V0的设定,把“虚拟输入”进行逻辑处理,然后得到“计算输入”。再把“计算输入”与∗DM998、∗VD993或D900V0的设定进行比较。直到两者相等,说明已完成此步控制,进而产生步进信号,使CTRN 000,或C0加1计数。DM998、VD993或V0也随之赋以新值(加1),实现了步进,其虚拟输出则是新一步的设定值。
这样延续,直到CTRN 000计到“总步数”,再计入1,或C1计数到“总步数”,其输出ON,并自身复位(现值回到0)。这时,如“自动”ON,则开始新的循环,继续工作;如“自动”OFF,“工作”OFF,“虚拟输出”置0,系统工作停止。
(2)用数组寻址实现的梯形图程序
它比前者更简明。但要求PLC能设定数组,而且所设定数组能用下标变量访问。图2-66所示为与图2-1对应的梯形图程序
本程序除了用数组代替间接寻址,还用新的算法处理反馈输入。具体是把输入分为ON有效输入及OFF有效输入,分别用2个数组设定,而不是先设哪个为输入位有效位,再设所用的有效输入是ON还是OFF。
表2-17所示为上述程序定义的符号变量或标签。有的用中文,有的不能用中文则用英文。其含义见注释。
这里共同都是定义了3个数组,即sdOut(设定输出)、sdONin(设定ON输入)和sd-OFFin(设定OFF输入)。都是100(下标从0~100,实际101个字)。分别用于设定控制输出及设定ON、OFF反馈输入。其它变量与间接寻址程序雷同。
图2-66a为和利时PLC程序。它的编程软件变量名用英文。图2-66中节1为工作起、停控制。这时,“start”ON,可使“work”ON,使系统进入工作状态。
图2-66中节2为生成步进控制信号。只要控制动作完成,即生成脉冲信号。
图2-66中节3为调用增计数功能块。每完成1步控制,计数功能块加1。到100步,计数功能块复位。并使C1.Q常闭触点OFF,以实现系统工作控制。
图2-66中节4为生成虚拟输出。
图2-66 与图2-1对应的梯形图程序
表2-17 图2-66程序定义的符号变量或标签
图2-66中节5为设定ON反馈输入与ON虚拟输入先与,后再比较,以确定设定的ON输入是否完成。如完成则ON_wfchON。
图2-66中节6为设定OFF反馈输入与OFF虚拟输入先与,后再比较,以确定设定的OFF输入是否完成。如完成则OFF_wfchON。
以上两者均ON,则说明步动作完成。将在节2起动Step(步进)信号,是及技术功能块加1。步控制前进1步。
图2-66中节7为不工作时,逻辑关系复原。
其工作过程是:当系统启动,进入工作,计数功能块C1按每得到“STEP”脉冲一次,则作一次增计数。计数到设定值(total最大可设为100),C1.Q的常开触点ON,通过计数功能块的“RESET”端,使计数功能块复位,计数值恢复到0。如“Auto”OFF,其常闭触点C1.Q将使“work”线圈OFF,工作停止;否则,又从0开始,又执行第1步。
具体工作过程是分步实现的。先是第0步(对应于计数现值为0)。随着计数值的增加而一步步推进。如第0步工作,则虚拟输出取自数组“sdOut[0]”的值,ON、OFF虚拟输入取决于数组“sdONin[0]”及“sdOFFin[0]”的值。一旦“sdONin[0]”与xnONin相等及“sdOFFin[0]”与xnOFFin相等,则使“ON_wfsh”及“OFF_wfsh”ON,说明动作完0成。将在节2,生成步进信号“STEP”。进而在节3,使计数功能块增1,进入第1步。第1步的虚拟输出取自数组“sdOut[1]”的值,反馈输入的设定则取自数组“sdONin[1]”及“sdOFFin[1]”的值。一旦这两个比较又相等,说明动作1完成。有将实现步进,进入第2步。如此直到步总数完成,系统或停止工作,或从头开始,重复这个过程。
要提到的是如果用ABBPLC上述程序也完全使用。(www.xing528.com)
图2-66b为欧姆龙PLC程序。它的高档或新型机虽可设定数组,但它的梯形图语言对数组访问时,其下标不能用变量。而它的ST语言可以,但只能在功能块中才可使用这个语言。为此,本程序定义了一个用ST语言编写的功能块。用下标变量动态访问数组,以取得不同步的设定控制输出及ON、OFF设定。而这个功能块除了定义变量,只有3个语句,即
其功能就是根据下标变量转换为设定控制输出、设定ON反馈输入及设定OFF反馈输入。功能块的定义有内部、输入及输出3种变量。内部变量为AT(与地址关联)变量,直接可访问实际数组所使用的地址,见表2-18。
输入变量idd,为功能块读取的下标(inDx)值。输出变量见表2-19。用以输出设定控制输出、设定ON反馈输入及设定OFF反馈输入。
表2-18 功能块内部变量
表2-19 功能块输出变量
调用此功能块(该程序使用名称为mm)后,这里yOO、xON及xOFF实际即为sdOut[indx]、sdONin[indx]、sdOFFin[indx]。
它的梯级从0开始,而不是和利时从1开始。其它说明略。
图2-66c为ABPLC程序。它的标签名用英文。此外,它的计数功能块的计数预设值只能用即时数(immediate),这里指定100。为此,它增加了设定输出判断。如设定输出位0,说明控制完成,将使计数功能块复位,并用OfchON去取代其它程序的计数完成信号。
图2-66d为三菱PLC程序。但使用的是它的Works2编程软件。因为此软件支持数组编程。它的变量名可以用中文。
图2-66e为施耐德PLC程序。标签名为英文。因为step为其关键字只好用stp代替。
所有程序在workOFF都要复位。所不同的是,欧姆龙的只使虚拟输出复位,其它的还要使反馈完成位复位。这与各自比较指令特点有关。前者不比较,这个完成位将OFF,不必另作复位;后者不比较将保持原比较的结果值,所以需复位。
图2-67 输入输出程序
3.混合控制程序实例
[应用例1] 用的是本章第3节的例3,其要求与其完全一样。
本例用图2-65程序。并新增图2-67所示实际输入输出程序。图2-65a的“虚拟输出”实际地址设为220;“虚拟输入”实际地址设为200。实际输入、输出用符号地址。图2-65b的“虚拟输出”实际地址设为MW1(使用M2.0~M2.7及M1.0~M1.7,共16位,但实际仅用其中2位);“虚拟输入”实际地址设为MW3(使用M3.0~M3.7及M4.0~M4.7,共16位,但实际仅用其中4位)。图2-65c的“虚拟输出”实际地址设为K4M200(使用M201到M216,共16位,但实际仅用其中2位),“虚拟输入”实际地址设为K4M300(使用M301到M316,共16位,但实际仅用其中4位)。
有关数据区的设定见表2-20:
表2-20 数据区参数选择
做了以上设定后,再运行图2-65加图2-67梯形图程序,经测试证明,它完全可实现所要求的功能。
[应用例2]:用的也是本章第3节的例3,其要求与其完全一样。但本例用图2-66程序。并新增图2-68所示实际输入输出程序。
其控制逻辑使用数组设定控制输出及设定ON、OFF反馈输入,即图2-68逻辑。其转换程序很简单,以和利时、ABPLC为例,见图2-68。此程序功能只是把虚拟输出转好为实际输出,把实际输入转换为虚拟输入。
其设定数据也很简单,除了Total设为6,数组设定如表2-21所示。
有了上述数组设定,执行图2-66和2-68程序,即可实现本例控制功能。
[应用例3]:设计要求同本章第3节的例1。其I/O分配也略,并也使用相应符号地址,即XX1、XX2、XX3、QQ、TT、MM、HH、II、LL,时间继电器符号为TM、TL等。其含义同上述例1。这里的关键是,把工作过程分成“步”,每“步”对应一个输出,然后用输入对“步”作控制。本例共分5步:
2)关闭XX1,同时打开阀门XX2,直到行程开关HHON;
3)关闭XX2,接通MM,使搅拌机工作,并保持6s;
4)MM工作6s(用定时器TM)后,停止工作,并打开阀门XX3,到行程开关LL从ON到OFF。
5)再延时2s(用定时器TL),工作停止,或又重复此过程。
表2-21 应用例2数组设定
图2-68 输入输出转换程序
针对此例用图2-65梯形图程序。但也要增加实际输入、输出及定时逻辑。见图2-69。
对图2-65和图2-69有关地址设定是:
图2-65a:“虚拟输出”实际地址也设为220;“虚拟输入”实际地址设为230。
图2-65b:“虚拟输出”实际地址设为MW1(使用M2.0~M2.7及M1.0~M1.7,共16位,但实际仅用其中4位);“虚拟输入”实际地址设为MW3(使用M3.0~M3.7及M4.0~M4.7,共16位,但实际仅用其中3位)。
图2-65c:“虚拟输出”实际地址设为K4M200(使用M201~M216,共16位,但实际仅用其中4位),“虚拟输入”实际地址设为K4M300(使用M301~M316,共16位,但实际仅用其中3位)。
3种PLC的实际输入的符号地址都用HH、MM、LL、QQ、TT。实际输出的符号地址都用XX1、XX2及XX3。而QQ即为图2-29的“起动”,TT即为图2-29的“停止”。
此外,还要对有关数据区作设定。具体设定值,见表2-22。
增加了以上实际输入、输出及定时程序,再按上各表对数据区做了设定,运行图2-65及图2-69程序,完全可实现设计的要求。
图2-69 第三节设计例一新梯形图程序
表2-22 数据区参数选定
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。