集中控制算法要点已在本章第1节做了说明。以下仅讨论它的算法程序实现及应用实例。
1.集中控制程序实现
集中控制程序可用系统时钟、定时器(或功能块)或时钟脉冲激发计数器(或功能块),再加上一系列的比较去实现。如学校的打铃控制,就可用要求打铃的时间与系统时钟的时间进行不断比较。只要比较相等,则输出一定时间的打铃操作。否则,什么也不做。再如一个十字路口交通岗上的红绿灯,可按预定的时序控制哪个方向的灯亮,哪个方向的灯不亮,而不考虑行车、行人的情况。
图2-60所示为PLC用时钟脉冲激发计数器及步进计数器的集中控制算法梯形图程序。
图2-60 集中原则梯形图程序
从图2-60知,它由工作控制、集中控制器及虚拟输出逻辑几部分组成。这里的梯形图用的是符号地址。由于4种PLC计数器使用上的差别,所以相应程序也稍有不同。
集中控制器主要由两个增计数器及相应的存储区组成。增计数器用C0、C1(欧姆龙PLC小机型没有增计数器,故用可逆计数器CNTR 000、CNTR 001,但减计数不用)。计数器C0用以步进,而C1用于计时。
当系统起动,进入工作,计数器C0按每次C1计时的情况,作增计数。对欧姆龙PLC,CNTR 000计到设定值,再计入1,其计数值自动回到0,并产生输出(CNT 000常开触点ON,常闭触点OFF);而对西门子、三菱PLC,则每计数到设定值,C0的常开触点ON,通过程序用复位指令(对三菱)或在复位端(对西门子)使其复位,回到0。这时,如自动工作OFF,则其常闭触点将使工作线圈OFF,工作停止;否则,又从0开始,又执行第一步动作。计数的设定值为间接数,取决于“总步数”的值。
提示:欧姆龙PLC的“总步数”应为实际步数减1,而其它两种PLC的“总步数”应等于实际步数。
计数器CNTR 001对100ms脉冲作增计数。处工作状态时,开始计,每100ms加1。到了设定值,再加1,即回到0,并产生输出;而对西门子、三菱PLC,则每计数到设定值,C1的常开触点ON,通过程序用复位指令使其复位,回到0。复位后,又为新的计数做准备;产生输出也就为C0计数器提供步进信号。
C1的设定值为间接地址。3种PLC使用的间接地址方法不同。具体情况是:
对图2-60a:间接地址为DM998,即以它的值为地址的DM单元的内容,作CNTR 001的设定值。而DM998的值为DM996的值加CNT 000的现值。这意味着这个设定值放在DM区的开始位置由DM996确定。
对图2-60b:间接地址为VD993,即以它的值为地址的VW单元的内容,作CNTR 001的设定值。在程序中,先把VB700的地址赋值给VD993,然后与C0现值乘2(指针地址以字节计,而本程序用的是以字计)后相加。这意味着这个设定值放在V区的开始位置为VB700。
提示:欧姆龙的P-0.1s、三菱的M8012为产生100ms脉冲的特殊继电器。而西门子S-200没有此特殊继电器。图2-59是用一段小程序由定时器T33生成。对S7-200,如用的是1或10ms级定时器,则它必须放在这计数器之前,否则计数器将不能计入此脉冲。本例用的为10ms级定时器,故作这么放置。对图2-60c:间接地址为D995中。而D995的值为D900V0的内容传来的,即变址器V0值(即C0的值)与900之和,作为D的地址的内容。这意味着这个设定值放在D区的开始位置为D900。
这里的输出是虚拟的,实际输出将由实际地址用输出逻辑确定。虚拟输出也用了间接地址。具体情况是:
对图2-60a:间接地址为DM999,即以它的值为地址的DM单元的内容,作为“虚拟输出”值。而DM999的值为DM995的值加CNT 000的现值。这意味着这个“虚拟输出”在DM区的开始位置由DM995确定。
对图2-60b:间接地址为VD989,即以它的值为地址的VW单元的内容,作为“虚拟输出”值。在程序中,先把VB300的地址赋值给VD989,然后与C0现值乘2(指针地址以字节计,而本程序用的是以字计)后相加。这意味着这个“虚拟输出”在V区的开始位置为VB300。
对图2-60c:间接地址为D800V0中,即为变址器V0值(即C0的值)与800值之和,作为D的地址的内容。这意味着这些“虚拟输出”在D区的开始位置为D800。
这里虚拟输出用了一个字,16位。可对16个逻辑量进行控制。控制步数的变化对程序没有影响,步数多少只受C0最大值及数据区大小的限制。所以,这个程序的功效比用分散方法进行定时控制要强得多。只是在实际运行前,需对有关DM、VW或D区作好设定。
程序工作过程:当“起动”信号ON,“工作”输出将ON,并自保持,系统进入工作状态。“虚拟输出”将从∗DM999、∗VD989或V800V0传来数据,将根据前者的内容产生虚拟输出(如要产生实际输出,可把此输出再作传递)。与此同时,C1开始计数,每100ms加1。
当CTR001计数到∗DM998设定的值,再计入1,而当C1计数到∗VD993或D995设定的值,其输出ON,产生“步进”信号。从而使CTRN 000或C0加1计数,DM998、VD993或V0也随之赋以新值(加1),实现了步进,其虚拟输出则是新一步的设定值。
这样延续,直到CTRN 000计到“总步数”,再计入1,或C1计数到“总步数”,其输出ON,并自身复位(现值回到0)。这时,如“自动”ON,则开始新的循环,继续工作;如“自动”OFF,“工作”OFF,“虚拟输出”置0,系统工作停止。
图2-60d为和利时PLC程序。它的编程软件变量名不支持英文,与图2-60a、b、c对应的变量定义如下:
此外,它不用指针而用数组,效果一样,而且更简明。
图2-60d中节1为工作起、停控制。这时,“start”ON,可使“work”ON,使系统进入工作状态。
图2-60d中节2为调用定时功能块。以在定时时间到时,生成步计数脉冲。以此替代图2-60a、b、c的计数器C1。
图2-60d中节3为调用增计数功能块C0。每完成一步控制,计数功能块加1。到100步,计数功能块复位。并使C0.Q常闭触点OFF,以实现系统工作控制。
图2-60d中节4为产生虚拟输出、控制时间设定及转换。这里用2个数组存放虚拟输出及步定时时间。步定时时间存放在字中,用于定时功能块设定还要做字到时间变量的类型转换。
图2-60d中节5为当系统工作停止,禁止所有输出。
其工作过程是:先是第0步(对应于计数现值为0)。随着计数值的增加而一步步推进。如第0步工作,则虚拟输出取自数组“Xout[0]”的值,时间设定取自数组“XTime[0]”的值。一旦T1的定时时间达到“XTime[0]”的值,定时功能块发出脉冲,并复位。而计数功能块加1,进入第1步。第1步的虚拟输出取自数组“Xout[1]”的值,时间设定取自数组“XTime[1]”的值。一旦T1的定时时间达到“XTime[1]”的值,定时功能块也发出脉冲,并也复位。而计数功能块再加1,进入第2步,直到100步,系统或停止工作,或从头开始,重复这个过程。
如果实际系统没有100步,只要把不用的步的时间设定设为0,就会自动把这个步越过。如果100步不够用,也可增大这个的设定。
应指出的是,这里的步进逻辑不一定非用计数功能块不可。也用加1指令或普通的加指令。只是,用它时,在每进行一次步进,还要判断步进是否完成,没有用计数功能块方便。
提示:集中控制没有反馈,所以没有分支。
2.集中控制程序实例
(1)设计一个十字路口交通岗上的红绿灯控制程序(www.xing528.com)
如图2-61所示,共有6个灯。南北向红、黄、绿,用R1、Y1、C1代表,东西向用R2、Y2、C2代表。其实际地址分配略。这6个灯能依时间变化工作,如图2-62所示。图中S表示时间,单位为秒(s)。
图2-61 交通信号灯设置示意图
图2-62 动作时序图
考虑到此系统为定时工作,故使用集中原则控制,用图2-60的梯形图程序。数据设定分别是:
对图2-60a:本例有4个工作步,故“总步数”设为#3。
DM996、DM995,可任意设,只要所设的数据不被覆盖即可。本例DM996、DM995分别设为#100与#0。即虚拟输出设定值地址,从DM0000开始;步的定时值设定值地址,从DM0100开始。
DM0000~DM0005依各步要求的虚拟输出设定。
DM0100~DM0105依各步要求的定时值设定。
有关这些DM区的设定值及其备注,见表2-13。
表2-13 参数选择
对图2-60b:设其“虚拟输出”实际地址为MW1(使用M2.0~M2.7及M1.0~M1.7,共16位,但仅用其中6位)。本例有4个工作步,故“总步数”设为K4。
VW300~VW306依各步要求的虚拟输出设定。
VW700~VW706依各步要求的定时值设定。
有关这些VW区的设定值及其备注,见表2-14。
表2-14 参数选择
对图2-60c:设其“虚拟输出”实际地址为K4M200(使用M201~M216,共16位,但仅用其中6位)。本例有4个工作步,故“总步数”设为K4。
D800~D803依各步要求的虚拟输出设定。
D900~D903依各步要求的定时值设定。
有关这些D区的设定值及其备注,见表2-15。
表2-15 参数选择
对图2-60d:使用2个数组tTime及Xout。其各下标0~3的设定值见表2-16所示。
表2-16 参数选择
实际输出逻辑,见图2-63。
图2-63 输出梯形图
做了以上设定后,再运行图2-63、图2-60梯形图程序,完全可实现所要求的功能。
显然,这个集中控制梯形图程序比本书所讨论有关程序都要简单。同时,要进一步增加控制功能时,如增加控制步数,增加输出变量数,本程序基本可不动,只要更改DM、VW或D的设定即可。而任何别的梯形图程序,为此都要做大的改动。程序量也将按比例增加。
到此应该看到,用集中控制算法设计程序的优越了。它既高度集成化,用的多为字处理指令,指令使用的效率很高;又高度柔性化,用参数设定即可改变与增加程序的功能,程序的通用性很强。它所控制的点数、步数及有关参数设定几乎都不受限制。唯一的限制是PLC数据区的容量及实际输入输出点数。
图2-60所示程序,还可增加配方控制。办法是再声明一个类似虚拟输出指针或数组。而它的值或索引与虚拟输出、时间设定相同。以取得与步输出对应的参数,如某某设定值。以在实施开关量控制的同时,也对模拟量作控制。用此法对水泥搅拌生产进行控制是很方便的。
附带在此提及的是,各PLC厂商多提供有凸轮控制器,如FM352电子凸轮控制器,是S7-300的一个功能模块。如把增量式编码器与它连接,即可灵活地处理位置或时间相关任务。其实质与这里介绍的集中控制的机理基本是相同的。但它用模块实现,可以减轻CPU负荷,而这里则是用程序实现。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。