2.5 标志值法编程
关键词:记忆、比较、标志、设定值、实际值
以上讨论的逻辑处理比较精确,但都是基于与、或、非运算实现的,用的主要是PLC的基本逻辑处理指令,类似计算机用汇编语言编程那样,太“底层“了。其实,PLC有很多功能很强的指令,完全可用它较简单地处理一些较复杂的逻辑问题。本节讨论的标志值法以及下一节讨论的多位逻辑设计也许是其中较好的方法。这些方法也称为高级逻辑设计法。
2.5.1 基本思路
基于与、或、非运算的逻辑处理,只是人们思考逻辑问题方法的一种数学抽象。它的优点是PLC的基本逻辑处理指令(与、或、非)就够用了。
其实人们思考问题用到的方法很多,其中一个最基本方法是“记忆”加“比较”。显然,人们努力学习,追求的不就是要能记更多的事,有更强的比较判断力,从而提高自身的思考力吗?相反,如果一个人没有记忆力、记的事情少,不会比较、没有什么判断能力,那这个人就如同婴儿,就不能思考任何问题的。
对人们这种“记忆”加“比较”的思考方法,是否也可加以抽象,作为PLC逻辑处理的一种算法呢?
答案是肯定的,这就是这里即将介绍的标志值法。
标志值法基本思路有两点:
“记忆”——设定好并记住标志的设置值,同时,不断监视标志的实际值。
“比较”——对标志的实际值与标志的设置值不断地进行比较,并依不同的比较结果产生相应的控制输出。
由于PLC有很丰富的、与这个“记忆”、“比较”相对应的指令,所以实现这个算法是不难的。而且这种算法更接近人们的思维方法,类似于用高级语言编程一样,人们更易理解。
2.5.2 实现方法
“记忆”的实现方法:
最常用的办法是用传送指令、MOV,用它传送标志的设定值,用它传送与输入信号对应的标志实际值。此外,也可用计数器计入标定的实际值。当然,其他数据处理指令(如算术运算、数据转换等指令)也可用。
“比较”的实现方法:
最常用的办法是用基本的比较指令,用它对标志值与预期值进行比较,依不同的比较结果(大、大等、等、小等、小)产生不同的控制输出。由于PLC技术的发展,它的指令系统越来越丰富。目前多数PLC,除了这个基本的比较指令外,还有表比较、范围比较等功能更强的比较指令。这类指令可设定很多预期值,比较后可得到很多不同的结果。
2.5.3 实际应用
1.起、保、停逻辑
传统的起保停逻辑都是用与、或、非的算法实现的,很简单。其实,也可用标志值法实现。只是这么简单的逻辑问题,没有必要用它就是了。但为了读者能具体地了解标志值法,以下介绍两个简单起、保、停逻辑例子。
(1)两个按钮实现起、保、停。
图2-52所示为OMRON PLC程序,输出触点为10.05。输入有两个按钮,接202.00、202.01。标志字为LR0。预期值为1。标志值两个,0与1。从图可知,202.00 ON、202.01OFF,则LR0的内容为1。P_ON为常ON触点,故每扫描周期都要执行比较指令。经比较,相等标志P_EQ ON,故10.05 ON,实现起动。这之后即使202.00 OFF,但由于LR0没有新的数传入,仍为1,比较结果仍可使10.05 ON。而202.00 OFF、202.01 ON,则LR0的内容为0,经比较P_EQ OFF,故10.05 OFF,实现停止。这之后即使202.01 OFF,但由于LR0没有新的数传入,仍为0,比较结果仍可使10.05 OFF。如202.00、202.01全ON,由与202.01 ON后起作用,LR0为0,故仍停止,也是停止优先。
可见,它完全可实现基于与、或、非的起、保、停算法的。
(2)一个按钮实现起停。
图2-52 两个按钮实现起、保、停梯形图程序
图2-53 单按钮实现起、保、停梯形图程序
图2-53所示为OMRON PLC程序,输出触点为10.06。输入有一个按钮,接202.05。标志字为计数器,CNT 001。预期值为1。标志值为CNT的计数值是2与1。从图可知,202.05 ON一次,则CNT 001的内容减1。减到0,计数器将复位,其内容又变为设定值2。
如CNT 001初值为设定值2,减1后即为1,经比较P_EQ ON,故10.06 ON,实现起动。这时再按按钮,CNT 001,再减1,为0,复位,其内容又变为设定值2。这时,经比较P_EQOFF,故10.06 OFF,实现停止。
再按按钮,又重复以上循环。可见,它完全可实现基于与、或、非的一个按钮实现起、保、停算法的。
2.刀架转位及位置显示
图2-1或图2-2关于刀架转位显示程序,仅3个位置就相当复杂了。如果位置多了怎么办?用“标志值法”逻辑编程就简单了。可用计数功能块“记录”及显示,还可用“比较”进行控制。
图2-54所示为有8个位置的刀架工作示意图。转位用控制信号Zz控制,位置用数码管xsh显示。其控制过程是,每次Zz ON,先使上抬控制信号Up ON,刀架松开、抬起。抬到上限位置时,XK1开关ON,使刀架开始转动,保持上抬,但被限位(机构或液压控制)。刀架转动后,XK1松开。到新位置时又合上XK1,转动停止。并使上抬控制信号UpOFF,刀架落下、夹紧。这时,XK1又松开。同时,显示刀架新位置。
图2-54 8个位置刀架工作示意图
这里,反馈信号只有一个(XK1),从工作过程说明看,如果每当XK1从OFF到ON两次,做一次计数,则计数功能块的现值可反映刀架的位置。控制信号也只有一个(Zz)。要求它长时间ON、短时间ON,都只能使刀架转一个位置。
图2-54b为它的工作状态图。它有3个状态,用变量Up1及Tun1的取值表示。原始状态为00,即处下压位置、刀架不转。
这时,pZz作用,使刀架上升,但不转,处于10状态。pXK1作用,使刀架保持上升(有机械限位),但转,处于11状态。XK1松后又合,又有pXK1作用,使刀架停转,并下压,返回00状态。
根据上述分析,所编写的和利时或ABB PLC梯形图程序如图2-55所示。图中的节1、2、3、4产生脉冲信号pZz及pXK1。节5表示,处于下压位置时,输入脉冲pZz。Up置位、刀架上升。节6表示,上升到pXK1脉冲入,Tun置位,保持刀架上升,并转位。节7、8表示,转到位,又有pXK1脉冲入,Up、Tun复位,刀架停转、下压。节9表示,在TunON时,接到pXK1脉冲时计数。即转一个位才计一次数。正是用这个计数值表示刀架的位置。节10、11状态的内部记录,以实现同步时序编程。
3.电梯控制电路之一
第三节中设计举例之二与电梯电路类似。在该例中,小车仅5个位置,但逻辑关系就已相当复杂了。若有10个、20个位置怎么办?不仅关系复杂,而且指令将以阶乘关系增长。这将出现所谓“组合爆炸”(Combine Explosion)。
图2-55 和利时或ABB PLC 8个位置刀架工作控制程序
这类控制的顺序是不确定的。到底向上或向下,依其所处位置及要前往的位置随机确定。处理这类问题有两种办法:
一是考虑所有可能,逐一列出它的逻辑关系,再确定其输出。第三节中设计举例之二用的也是这个办法。可能性不多时,用这个办法是可行的,不少也是这么处理的。
二是置标志(“记忆”),再判标志(“判断”),以确定输出。如电梯,电梯的工作总是处在停、上升、下降三个状态之一。其所处的位置可置一个标志(如层数),要去的位置也置一个层数标志。这可用传送指令实现。判标志,则可用比较指令,如要求去的比现处的标志大,则向上;否则向下;相等则停。可从三个可能的输出中,按条件选取其中一个。
这么处理后,不确定顺序控制问题,也成了有确定的处理步骤控制问题。即随机控制确定化了。这比仅就逻辑条件的可能去组合,要简单得多。
过去,用继电器实现控制,只能用第一种办法,靠逻辑条件的组合去实现。而PLC则不同,可用数字量作标志,对数字量作比较,所以,可采用第二种办法。
图2-56就是用标志值法设计的,本章第3节例2已讨论过的小车控制逻辑。该图分别是多家PLC的有关程序。如图所示,它按顺序给每一选择按钮指定一个编号,如PS1为#1,PS2为#2……也按顺序,对应地给每一行程开关指定一个编号,如LS1为#1,LS2为#2……哪个按钮ON或哪个开关ON,就通过传送指令,把这个编号作为标志值,传送到“要位置”或“现位置”的字中。
执行传送指令之后,按起动按钮(QQ ON)。如选择标志值不为#0(说明已做了选择),则YY ON,并自保持。YY ON,比较指令执行,比较“要通道”与“现通道”的内容(值)。如果“要通道”存的数比与“现通道”的大,说明行程开关ON的编号比按钮ON的编号小,则比较大标志P_GT ON,进而使UP ON,使小车向右运动。
运动过程中与“现位置”的内容将随行程开关动作而变化。当“要位置”与“现位置”的内容相等,即达到所要求的位置时,则比较相等标志P_EQ ON,进而EQ ON。这将使YY OFF,UP OFF,运动停止。同时,用#0传送给“要位置”,为新的选择做了准备。
如果“要位置”比“现位置”的值小,即与上述情况相反。
把YY常闭触点串入,“要位置”传数的逻辑条件中,目的是一旦小车起动,就不再接受选择按钮送来的命令。待执行完命令后,即小车停止运动后,才可接受新的命令。
提示:欧姆龙PLC比较结果标志是用特殊继电器,而三菱PLC是用户程序指定的。这里用M10、M11及M12,相当于OMRON的P-GT、P-EQ及P-LT(图2-56d为GT、EQ、LT函数)。西门子PLC则用大、等及小数学符号。前两家PLC目前也有此数学符号指令,只是本例未使用。
提示:本例用了传送指令“记忆”,其实很多PLC都有16位或256位到字或双字的,或相反的译码指令。用它比用MOV指令提高程序效率,有时效果更好。
4.电梯控制电路之二
以上用了传送指令“记忆”,这里用DMPX指令“记忆”。
DMPX或ENCO与MLPX或DECO配对的译码指令,是很常用的PLC指令。几乎所有厂商的PLC都有这两条指令。用它比用MOV指令有时效果更好。
图2-57所示就是用DMPX作标志值设置(“记忆”)。它可控制16个位置(对电梯讲就是16层)。“实际通道”用以记录电梯实际所处层号。它的00~15位,对应第0~15层。“要位置”用以设要求到的层号,它的00~15位,对应要求到第0~15层。
从图2-57可知,它的标志值比较处理与图2-56完全相同。但标志值设定大为简化了。“现位置”、“要位置”的内容原为十六进制数,经DMPX、ENCO译码后,得出的为通道中哪一最高位ON。对应的就是值1~15。这正好就是图2-56要设的标志值。
图2-56 电梯控制梯形图程序之一
图2-57 电梯控制逻辑之二
提示:图2-57比图2-56简单,而它控制的功能却比后者强。欧姆龙新型的PLC的DMPX指令及三菱PLC的ENCO指令,可实现256位的译码。用它可实现256层的电梯控制。即使世界上最高的建筑,也足够用了。
5.电梯电路之三
上例只有一个要位置,实际可能有多个要位置。图2-58所示的就是和利时或ABB PLC这样的程序。它可控制16个位置(对电梯讲就是16层,如要控制32层,可用双字)。而且可作选择控制。
电梯状态用UP、DW表示。UP OFF、DW OFF,为停;UP ON、DW OFF,为上升;UP OFF、DW ON,为下降。
电梯输入有要去位置及实际位置。分别用双字变量“yweizhi”和“weizhi”的各个位代表。第0位为1层,1位为2层,2位为3层。其余依次类推(实际I/O也应按此要求接线)。为了记住要去的位置,这里用“yweizhiB”对“yweizhi”进行记忆。
电梯的实际位置只能是一个,而要去的位置,可以多个。而且随时可添加。该程序的节1、2就是要实现这个功能。它不断进行“yweizhiBa”和“yweizhi”比较。如不等则在节2,把“yweizhi”赋值给“yweizhiBa”,并进行“yweizhiB”和“yweizhi”“或”运算。结果存于“yweizhiB”中。目的是可随时实现多个位置选择。
提示:这里引入变量“yweizhiBa”,目的是只有“yweizhi”变化才改变“yweizhiB”值。
程序的节3不断进行“yweizhiB”和“weizhi”(实际位置)比较。如前者大,则pGT ON。同时,还进行“yweizhiB”和“yweizhi”“与”运算。结果存于“pAND”中。接着,还把pAND这个“双字类型”的变量转换为BOOL类型,并存于pA中。最后还进行“yweizhiB”0比较。如相等,则pEQ0 ON,说明没有指定要去的位置。最后进行“模运算”。只要“yweizhi”中有小于“weizhi”的,“yushu”必不等于0。否则经比较“pEQy”必ON。该程序的节4、5、6为工作控制逻辑。如“yweizhiB”为80(即要求去5及7层),“weizhi”为4(即处于3层,实际位置只能一个)。经执行节3指令,则pGT ON、pEQ0、pA OFF。这时,如按下按钮QQ(按后即松开),则UP ON,并自保持,电梯上升。
而到了第5层,则pA ON。故UP OFF,电梯停止。这时,经执行节7“的异或”指令,将使“yweizhiB”的值改为64,即要求去第7层。故仍只是pGT ON。故再按下按钮QQ,仍使电梯上行。直到第7层,UP OFF,电梯停止。而这时节7的“异或”,将使“yweizhiB”的值改为0。
程序中增加bUP变量,目的是上行时,向下的选择无效。同样,下行时,向上的选择也无效。待此方向运行完成之后,才可作更改方向的选择。这也就是所谓“顺向接车,逆向不接车”。
从分析可知,该程序不大复杂,但可实现的功能很强,体现了高级逻辑设计法的威力。当然,电梯工作还有一些实际问题需要处理。但有了这个算法,则有助于设计出高效、实用的电梯控制程序。
图2-58 电梯控制逻辑之三