2.5 标志值法编程
以上讨论的逻辑处理比较精确,但都是基于与、或、非运算实现的,用的主要是PLC的基本的逻辑处理指令,类似计算机用汇编语言编程那样,太“底层”了。其实,PLC有很多功能很强的指令,完全可用它较简单地处理一些较复杂的逻辑问题。本节讨论的标志值法以及下一节要讨论的多位逻辑设计也许是其中较好的方法。这些方法也称为高级逻辑设计法。
2.5.1 基本思路
基于与、或、非运算的逻辑处理,只是人们思考逻辑问题方法的一种数学抽象。它的优点是PLC的基本逻辑处理指令(与、或、非)就够用了。
其实人们思考问题用到的方法作很多,其中一个最基本方法是“记忆”加“比较”。显然,人们努力学习,追求的就是要能记更多的事,有更强的比较判断力,从而提高自身的思考力。相反,如果一个人没有记忆力、记的事情少,不会比较、没有什么判断能力,那这个人就如同婴儿,就不能思考任何问题的。
对人们这种“记忆”加“比较”的思考方法,是否也可加以抽象,作为PLC逻辑处理的一种算法呢?
答案是肯定的,这就是此处即将介绍的标志值法。
标志值法基本思路有两点:
“记忆”——设定好并记住标志的设置值,同时,不断监视标志的实际值。
“比较”——对标志的实际值与标志的设置值不断地进行比较,并依不同的比较结果产生相应的控制输出。
由于PLC有很丰富的与这个“记忆”“比较”相对应的指令,所以,实现这个算法是不难的。而且,这种算法更接近人们的思维方法,类似于用高级语言编程一样,人们更易理解。
2.5.2 实现方法
1.“记忆”的实现方法
最简单的办法是用传送指令、MOV,用它传送标志设置值,传送与输入信号对应的标志实际值。此外,也可用计数器计入标志实际值。当然,其它数据处理指令,如算术运算、数据转换等指令,也可用。
2.“比较”的实现方法
最常用的办法是用基本的比较指令,用它对实际值与设置值进行比较,依不同的比较结果(大、大等、等、小等、小)产生不同的控制输出。由于PLC技术的发展,它的指令系统越来越丰富。目前多数PLC,除了这个基本的比较指令外,还有表比较、范围比较等功能更强的比较指令。这类指令可设定很多设置值,比较后可得到很多不同的结果。
2.5.3 实际应用
1.起、保、停逻辑
传统的起、保、停逻辑都是用与、或、非的算法实现的,很简单。其实,也可用标志值法实现,只是这么简单的逻辑的问题,没有必要用它就是了。但为了读者能具体地了解标志值法,以下介绍两个简单起保停逻辑例子。
(1)两个按钮实现起停
图2-26所示为欧姆龙PLC程序,输出触点为10.05。输入有两个按钮,接202.00、202.01。标志字为LR0,设置值为1,实际值两个(0与1)。从图2-26知,202.00 ON、202.01 OFF,则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.05OFF,实现停止。这之后即使202.01 OFF,但由于LR0没有新的数传入,仍为0,比较结果仍可使10.05 OFF。如202.00 、202.01全 ON,由与202.01 ON后起作用,LR0为0,故仍停止,也是停止优先。
图2-26 两个按钮实现起、保、停梯形图程序
可见,它完全可实现基于与、或、非的起保停算法的。
(2)一个按钮实现起停
如图2-27所示为欧姆龙PLC程序,输出触点为10.06。输入有一个按钮,接202.05。标志字为计数器,CNT 001。设置值为1;实际值为CNT的计数值是2与1。从图2-27知,202.05ON一次,则CNT 001的内容减1。减到0,计数器将复位,其内容又变为设定值2。
如CNT 001初值为设定值2,减1后即为1,经比较P_EQ ON,故10.06 ON,实现起动。这时再按按钮,CNT 001,再减1,为0,复位,其内容又变为设定值2。这时,经比较P_EQ OFF,故10.06 OFF,实现停止。
图2-27 单按钮实现起、 保、停梯形图程序
再按按钮,又重复以上循环。可见,它完全可实现基于与、或、非的一个按钮实现起、保、停算法的。
2.电梯控制电路之一
本章2.3.4节中设计举例【例2】与电梯电路类似。在该例中,小车仅5个位置,但逻辑关系就已相当复杂了。若有10个、20个位置怎么办?不仅关系复杂,而且指令将以阶乘关系增长。这将出现所谓“组合爆炸”(Combine Explosion)。
这类控制的顺序是不确定的。到底向上(右)或向下(左),依其所处位置及要前往的位置随机确定。处理这类问题有两种办法:
一是考虑所有可能,逐一列出它的逻辑关系,再确定其输出。第3节中设计举例之二用的也是这个办法。可能性不多时,用这个办法是可行的,不少也是这么处理的。
二是置标志(“记忆”),再判标志(“判断”),以确定输出。如电梯,电梯的工作总是处在停、上升、下降3个状态之一。其所处的位置可置1个标志(如层数),要去的位置也置1个层数标志。这可用传送指令实现。判标志,则可用比较指令,如要求去的比现处的标志大,则向上;否则向下;相等则停。可从3个可能的输出中,按条件选取其中一个。
这么处理后,不确定顺序控制问题,也成了有确定的处理步骤控制问题。即随机控制确定化了。这比仅就逻辑条件的可能去组合,要简单得多。
过去,用继电器实现控制,只能用第1种办法,靠逻辑条件的组合去实现。而PLC则不同,可用数字量作标志,对数字量作比较,所以,可采用第2种办法。
图2-28就是用标志值法设计的,本章2.3.4节例2已讨论过的小车控制逻辑。图2-28a、b、c及d分别是多家PLC的有关程序。如图2-28所示,它按顺序给每一选择按钮指定一个编号,如Ps1为#1,Ps2为#2,……,也按顺序,对应地给每1行程开关指定1个编号,如Ls1为#1,Ls2为#2,……,哪个按钮ON或哪个开关ON,就通过传送指令,把这个编号作为标志值,传送到“要位置”(图2-28d为Yweizgi)或“现位置”(图2-28d为Weizhi)的字中。
执行传送指令之后,按起动按钮(QQON)。如选择标志值不为#0(说明已做了选择),则YYON,并自保持。YYON,比较指令执行,比较“要位置”与“现位置”的内容(值)。如果“要位置”存的数比与“现位置”的大,说明行程开关ON的编号比按钮ON的编号小,则比较大标志P_GTON,进而使UPON,使小车向右运动。
运动过程中与“现位置”的内容将随行程开关动作而变化。当“要位置”与“现位置”的内容相等,即达到所要求的位置时,则比较相等标志P_EQON,进而EQON。这将使YYOFF,UPOFF,运动停止。同时,用#0传送给“要位置”,为新的选择做了准备。
如果“要位置”比“现位置”的值小,即与上述情况相反。
把YY常闭触点串入,“要位置”传数的逻辑条件中,目的是一旦小车起动,就不再接受选择按钮送来的命令。待执行完的命令后,即小车停止运动后,才可接受新的命令。
提示:欧姆龙PLC比较结果标志是用特殊继电器,而三菱PLC是用户程序指定的。这里用M10、M11及M12,相当于欧姆龙的P-GT、P-EQ及P-LT(图2-28d为GT、EQ、LT函数)。西门子PLC则用大、等及小数学符号。前两家PLC目前也有此数学符号指令,只是本例未使用。
提示1:和利时PLC目前还不能用中文命名变量,故这里用拼音符号代替。
提示2:本例用了传送指令“记忆”,其实很多PLC都有16位或256位到字或双字的,或相反的译码指令。用它比用MOV指令提高程序效率,有时效果更好。
3.电梯控制电路之二
以上用了传送指令“记忆“,这里用DMPX指令“记忆”。
DMPX或ENCO是与MLPX或DECO配对的译码指令,是很常用的PLC指令。几乎所有厂商的PLC都有这两条指令。用它比用MOV指令有时效果更好。
图2-29所示就是用DMPX或ENCO作标志值设置(“记忆”)。它可控制16个位置(对电梯讲就是16层)。“实际通道”用以记录电梯实际所处层号。它的00~15位,对应第0~第15层。“要求通道”用以设要求到的层号,它的00~15位,对应要求到第0~第15层。
从图2-29可知,它的标志值比较处理与图2-28完全相同。但标志值设定大为简化了。“实际通道”“要求通道”等的内容原为十六进制数,经DMPX、ENCO译码后,得出的为通道中那一最高位ON。对应的就是值1~15。这正好就是图2-28要设的标志值。
图2-28 电梯控制梯形图程序之一
图2-29 电梯控制逻辑之二
图2-29d三菱PLC程序是按本章图2-28的要求设计的。它现位置用的输入点分别为X000~X004,要位置用的输入点分别为X005、X006、X007、X010及X011。所以,它的标志值获取与图2-29a、b相比多了逻辑与运算。
图2-29比图2-28简单,而它控制的功能却还比后者强。欧姆龙新型PLC的DMPX指令及三菱PLC的ENCO指令,可实现256位的译码。用它可实现256层的电梯控制。即使世界上最高的建筑,也足够用了。
其实,由于PLC各个位是“有权”的。尽管一个字不同位取值相同,但这个字的取值则是不同的。而我们用比较是用字,而不是位,所以图2-29程序不用DMPX或ENCO指令,而直接用传送MOV指令替代,也可得出相同的控制效果。但它的层数显示还要做转换。