PLC编程实用指南(第2版)
上QQ阅读APP看书,第一时间看更新

2.2 组合逻辑编程

关键词:触点变量、触点代数、触点电路标准型、合取范式、析取范式、逻辑表达式、真值表、组合逻辑分析、组合逻辑综合

2.2.1 组合逻辑表达式与真值表

1.表达式

继电电路常用到触点,触点代数研究的变量就是这个触点。触点代数是研究触点电路的重要工具,也是研究PLC逻辑问题的基础。

(1)有关约定

1)触点变量。继电电路常用到触点,触点变量就是反映触点状态的逻辑量。仅有两个取值,1与0。1代表通或ON;0代表断或OFF。

在一个电路中,同名器件有时用它的常开触点、有时用它的常闭触点。常开触点,没有外作用时,是断开的,有外作用时,是接通的。直接用变量名命名,如X,读X。常闭触点,没有外作用时,是接通的,有外作用时,是断开的。用变量名加一小横线命名,如X,读“X的非”。由此可知,常开与常闭触点,其取值是相反的。

PLC程序不是硬件,没有实际触点,用的是操作数“位”。直接用(读)它,相当于使用常开触点。用(读)它的“非”,相当于使用常闭触点。

2)触点代数运算。触点代数是用指定运算反映触点间的连接。触点并联的运算是“或”,也叫加(+)、或析取。对应梯形图指令就是“OR”。触点串联的运算是“与”,也叫乘(*,有时乘号省略),或合取。对应梯形图指令就是“AND”。触点串联后的并联,则是乘后的和。并联后的串联,则是和后乘。为了明确运算顺序,可使用成对的括号,括号内的运算优先。

此外,还有“非”的运算,也叫求反。上述同名变量的常开、常闭触点间就是“非”的关系。对常开触点求反,即变为常闭触点;对常闭触点求反即变为常开触点;求两次反,又变为自身了。

对应PLC指令,如果指令后加“NOT”,则用变量的非。如“AND NOT X”,是对变量X求反后再“与”。再如“OR NOT X”,是对变量X求反后再“或”。有的PLC干脆这两个单词合并简化成一个词,但含义与此相同。

(2)表达式与电路(对PLC为组合逻辑程序)对应关系。有了上述约定,实际电路(对PLC为组合逻辑程序)与触点代数表达式之间就有了一一对应关系。

对触点电路,除了其中的桥式电路,其他的都可用上述约定的逻辑式子表达。如以本书绪论图0-1、图0-2所示电路为例,其相关表达式为

978-7-111-39745-8-Chapter03-17.jpg

978-7-111-39745-8-Chapter03-18.jpg

这里,等式右边为逻辑表达式,反映了触点间的不同连接。左边为输出变量,也就是用电器L。它的取值由表达式左边变量的取值及逻辑运算结果决定,反映电路的效果。

对PLC,如图2-1梯形图程序,根据上述约定,其表达式为

978-7-111-39745-8-Chapter03-19.jpg

这里,等式右边为逻辑表达式,反映PLC变量间逻辑关系。左边为输出变量,用写指令。它的取值由表达式左边变量的取值及逻辑运算的结果决定,反映程序的效果。

(3)触点代数运算规则、规律及原则。数与数运算规则有:

978-7-111-39745-8-Chapter03-20.jpg

上述诸式用实际电路的工作效果是很容易证明的。

把上述约定与命题代数对比发现,触点代数与命题代数是等价的。“这个触点接通”、“这个触点断开”就是命题,“这个触点接通或那个触点接通”就是命题运算等。所以,可以把命题代数运算的一些规律移植过来。这些规律有:

978-7-111-39745-8-Chapter03-21.jpg

这些规律也完全可用实际电路予以验证。

此外,还有3条原则:

1)反演原则。它是反演律的推广。任何逻辑式子F,若“非”仅出现在变量上,把这个公式中的乘与加对换、变量与变量的非对换、1与0对换,所得的式子为G,满足

978-7-111-39745-8-Chapter03-22.jpg

利用它,很易求出与某一电路功能相反的电路。

2)对偶原则。一个逻辑式子F,若非仅出现在变量上,把这个公式的乘与加对换、0与1对换,所得的式子F′称其为F的对偶公式。对偶是相互的,F也是F′的对偶公式。

若有F=G

则它的任一对偶F′、G′有

F′=G′

有了这个原则,等式的证明可减少一半。

3)代入原则。任何含有变量A的逻辑式子,如果把所有出现A的地方都代之以一个逻辑式子F,则等式仍然成立。这是因为一个逻辑式子的取值,也和逻辑变量一样,不是1就是0,所以,这个原则是正确的。但一定要注意,这个“所有”和“都”,不能部分地被代替,那样就错了。

这些规律、原则是很有用的。可用以化简逻辑表达式。对应电路、PLC程序,就可用最少触点、指令,去表达相同的逻辑关系。

提示:本书绪论中图0-1及0-2中若干功能相同的电路都可运用上述规律、原则予以证明。

(4)触点电路范式。从工艺与使用上考虑,触点电路应标准化。使用PLC的指令也有这个问题。标准化的触点电路称触点连接标准型,也称范式。有两种范式:合取范式与析取范式。

1)合取范式。它是由一些析取范式的合取,是先加后乘的逻辑式。其对应的电路是先并、后串。如表达式

978-7-111-39745-8-Chapter03-23.jpg

即为合取范式。

容易证明,任一触点电路的逻辑表达式,运用上面讲的规律、原则作变换,总可以化为合取范式。如表达式:

978-7-111-39745-8-Chapter03-24.jpg

这里用了分配律作变换,把不是析取范式变换成合取范式了。也可运用反演律求解。其结果也是一样的。

运用合取范式很容易求出代数式为零的条件。如上式,只要在3个和项中,有一个为零,这个式子的结果即为零。

2)析取范式。它由一些合取范式的析取组成,是先乘后加的式子。其对应的电路是先串、后并。梯形图很常用这个范式。如表达式

978-7-111-39745-8-Chapter03-25.jpg

即为析取范式。

也容易证明,任何一个触点电路的逻辑式,运用上面讲的规律、原则作变换,总可以化为析取范式。如

978-7-111-39745-8-Chapter03-26.jpg

978-7-111-39745-8-Chapter03-27.jpg

这里用了分配律、吸收律、结合律等作了变换,把合取范式变成了析取范式。也可运用反演律求解。其结果也是一样的。

用析取范式很容易求出逻辑式为1的条件,如上式,只要在3个乘积项中,有一个为1,这个式子即为1。

应该指出,范式虽是标准型的触点连接,但它不是唯一的。逻辑化简,就是要寻找最简的范式,即寻找能实现所要求的功能而又是标准化型触点连接的、且用的触点又是最少的逻辑式子。这对PLC讲,就是用最少的指令,去实现所要求的功能。

(5)触点电路特异范式。由于范式不是唯一的,不大好把握它,为此再介绍一下特异范式。

1)1的组分。1作为逻辑量,可用下式表达,即

978-7-111-39745-8-Chapter03-28.jpg

根据分配律,可把式(2-1)的右边展开成析取范式,共2的n次方项,即

978-7-111-39745-8-Chapter03-29.jpg

若把以上乘积项中,Xi看成1,Xi看成0,则其每一项均可看成是一个二进制的数。然后再对应地译成十进制数,则有

978-7-111-39745-8-Chapter03-30.jpg

这样,表达1的式子可写成

978-7-111-39745-8-Chapter03-31.jpg

这里的Ri就叫做1的组分,1是由它的所有组分的析取而成。

显然,1的组分要随所讨论的变量多少而变化。当变量数确定后,它的组分是确定的。

可以证明,任何一个触点电路,除恒不通外,表达它的触点逻辑式总可以展开成若干1的组分的合取。如

978-7-111-39745-8-Chapter03-32.jpg

1的组分又称最小项目,上式有3个1的组分,即说它包含了3个最小项。

表达最小项的逻辑式子又叫特异析取式。显然,对一个具体的电路,变量数确定之后,特异析取式是唯一的。

与1分解为n个变量的组分的析取相对应的电路叫触点塔。图2-16为3个变量的触点塔。

从图2-16可知,不管X、Y、Z怎么搭接,A点总有一条路通到下面来。

这个触点塔有3层,因为它含有3个变量。由此可以推知,触点塔的层数总是等于它所含的变量数。

因为任何一个触点电路,总可以用1的若干组分的析取表达,所以,它也总可以看成是1的触点塔的某一部分。反之,有目的地取出1的触点塔的一部分,总可以构成满足一定要求的电路。

978-7-111-39745-8-Chapter03-33.jpg

图2-163 个变量的触点塔

2)0的组分。与1的组分相对应的,还有0的组分。根据反演律,有

978-7-111-39745-8-Chapter03-34.jpg

其中Ri可展开成和的式子,并称之为0的组分。如n=2,则

978-7-111-39745-8-Chapter03-35.jpg

其对应的电路如图2-17所示。它为多节构成的,n个变量有2n个节,每节有n个节点并联。从图可看出,不管怎么搭接,A到B总是断的。这正好与它用来表达0相对应。

也可证明,任何触点电路,除为恒通外,均可以变换成若干0组分的合取。这个合取式也称该电路的特异合取式。显然,对任一具体电路,变量数一定时,表达它的特异合取式是唯一的。

978-7-111-39745-8-Chapter03-36.jpg

图2-17 多节构成电路

既然任一具体电路可表达成特异合取式,那么,取出0电路的一部分(即去掉若干节),只要它符合特异合取式,则它也完全可实现具体电路的功能。

两种特异式子可按一定规律进行转换。具体是,特异合取式是0的组分先减去要转换的特异析取式的所有项,再把余下的各项分别取非,然后再合取;特异析取式是1的组分先减去要转换特异合取式的所有的项,再把余下的各项分别取非,然后再析取。如特异析取式

978-7-111-39745-8-Chapter03-37.jpg

求其等效特异合析式,可先求1的组分,再减去上式中所含的1组分,余下的为

978-7-111-39745-8-Chapter03-38.jpg

对这四项再分别取非,各为

978-7-111-39745-8-Chapter03-39.jpg

以上四项的积,即为这里所求的特异合取式,即

978-7-111-39745-8-Chapter03-40.jpg

反之,也可倒推回去,其推导过程略。

从以上介绍可知,变量数定了之后,对任一电路,表达它的特异范式总是确定的、唯一的。而且两种特异范式可以互相转换。特异范式用的触点多,实际上不用它,但可说明使用触点最多时的情况,对把握与理解电路是很有用的。

(6)多输出触点电路及其表达式。以上讨论触点电路都只有一个输出值,是单输出触点电路。实际电路有时有多个输出变量,如要对多个对象控制,就要用到多输出触点电路。若用数学表达式表示多输出触点的电路,则为一组表达式,表达式的右边不仅无自身变量,而且也无其他输出变量。具体如下:

978-7-111-39745-8-Chapter03-41.jpg

这里有n个输入,即x1x2,…,xn,同时还含有它们的非。m个输出,即y1y2,…,ym,但不含有它们的非。对应的有m个表达式。图2-18表示的组合逻辑的入出关系。

上述表达式也称为组合逻辑的一般表达式。

多输出电路的化简可先分别对各个输出的表达式进行化简,然后再作输入触点兼用“合并”处理,以求在总体上用最少的输入触点。有关多输出触点电路化简可参阅有关多输出组合逻辑专著。

978-7-111-39745-8-Chapter03-42.jpg

图2-18 组合逻辑的入出关系

2.真值表

真值表是由行与列组成,用以记录输入变量与输出间的对应关系。它的“列”记录着变量的不同取值;“行”记录着输入变量不同取值时,输出的取值。表中1代表器件工作,常开触点ON,常闭触点OFF;0代表器件不工作,常闭触点ON,常开触点OFF。

如表2-2,就是反映A、B两个输入变量不同取值时,它对应的输出,做不同逻辑运算后的值。

表2-2 A、B两触点不同逻辑运算的真值表

978-7-111-39745-8-Chapter03-43.jpg

提示:真值表的输入一般应涵盖所有的可能,但顺序可任意。

用真值表分析组合逻辑较直观,是组合逻辑分析与综合常用的方法。

2.2.2 组合逻辑分析

组合逻辑分析是对触点电路求解,以弄清该逻辑电路可能实现的功能。

组合逻辑分析的办法是:依照实际电路或PLC组合逻辑程序,按触点代数的约定,列出逻辑表达式;把输入变量的各种可能取值代入表达式,求出相应的输出值,并列写真值表;根据求得的输入、输出对应关系,弄清该逻辑电路可能实现的功能。

以下以图2-1所示的刀架位置显示程序为例,介绍组合逻辑的分析,从该图中可知:

978-7-111-39745-8-Chapter03-44.jpg

而XK1、XK2可能的取值只能是11、01及10。运用上述表达式,对应的WW1、WW2及WW3的值进行运算,其结果分别为100、010及001,见表2-3。

表2-3 图2-1的真值表2

978-7-111-39745-8-Chapter03-45.jpg

从表中可知,用WW1、WW2及WW3三个指示灯显示刀架的不同位置,是完全可行的。

2.2.3 组合逻辑综合

综合是分析的反问题,是根据功能去设计触点电路。逻辑综合的答案不是唯一的。为此,求解它时,必须从多个答案中求出最优的答案。所以,组合逻辑综合要比组合逻辑分析要复杂得多。

综合的方法是依据设计要求列出逻辑表达式,正如解代数应用题列方程一样,这是最难的一步;用以上介绍的方法,对表达式进行种种化简;从中求出最优的表达式;再按触点代数的约定,画出触点电路,或编写PLC程序。

逻辑化简,是在保持逻辑关系不变的前提下,用某种范式表示的表达式成为最简。函数关系不变是化简的约束条件,最简是化简要求。其标准是,对触点电路一般指总触点数最少;对数字电路首先是要求乘积项最少,因为它与用的元件数有关。对PLC而言,这些都与使用的指令数量有关,关系到程序是否简短的问题。

化简的方法很多,除了用这里介绍的代数法,还有几何法(卡诺图)、Q-M法等。也可用计算机辅助化简。若按最简析取范式的目标化简,其本质都是先求出最大的蕴涵项,然后再从中挑选一组既最简,又包含所有最小项的最大蕴涵项,然后再对其析取。所得最大蕴涵项是指这样的乘积项,它所可能包含的构成被化简的逻辑式子的最小项最多。

有了化简后的逻辑表达式,进而画出对应的电路图,就是指令及地址的选用,是比较好处理的。

2.2.4 组合逻辑综合实例

1.三个钮子开关控制一个灯的逻辑

这是简单而典型的触点电路。要求是,有三处安装有钮子开关。任何一处均可改变灯的状态。如灯亮,可使其灭;反之,可使其亮。

列逻辑表达式:

设3个开关分别用A、B及C表示。灯用L表示。每个开关都有两个状态,即下扳、上扳。下扳(通)用变量,即用A、B或C表示。上扳(断)用变量的非,即用A、B及C表示。

这3个变量各有两个取值,其可能的组合有8种。把这8种分成两组,奇数个下扳的为一组,有4个;偶数个下扳的为另一组,也有4个。显然,任何一个开关状态的改变,都将组合从一组改变到另一组。如果用其中一个组合使灯亮,即可实现所要求的控制了。

对此分析,可用真值表表示。见表2-4。

表2-4 一灯多点控制真值表

978-7-111-39745-8-Chapter03-46.jpg

提示:这里A=0意味着A=1,B=0意味着B=1,C=0意味着C=1。故在表中,变量非均不必列出。

它的逻辑表达式应为

978-7-111-39745-8-Chapter03-47.jpg

当然还应对这个表达式进行化简。不过由于使用PLC,触点多少问题不大,可直接依据此表达式,画出和利时或ABB PLC梯形图程序,如图2-19所示。图2-19a为其合取范式,即先串、后并。图2-19b为其析取范式,即先并、后串并。变量声明略。

提示:合取范式到析取范式转换,除了运用触点代数化简,还可通过图形分析实现。办法是,寻找所有可能的断路。把每组可能引起断路的触点析取(并联)构成一个析取项。去掉常通析取项,再把所有析取项相乘(串联)。

978-7-111-39745-8-Chapter03-48.jpg

图2-19 三个钮子开关控制一个灯电路

从图2-19可知,这里,三个开关任一个改变状态,都将改变灯的状态。三个走廊出入口各用各的开关去控制走廊灯时,常用这个逻辑。图中三种PLC,各用各的输入、输出点的实际地址。

如果使用ST语言,与此程序对应的ST语句为

978-7-111-39745-8-Chapter03-49.jpg

或L:=(A OR B OR C)AND(A OR NOT B OR NOT C)AND(NOT A OR B OR NOT C)AND(NOT A OR NOT B OR C);

图2-19c、d、e分别为欧姆龙、西门子、三菱PLC相应程序,用的是实际地址。

本例仅是3个开关控制一个灯。如果多了,如几十、几百,就太复杂了。为此可用后面将要介绍的高级逻辑设计方法设计。

2.3个开关表决逻辑

以下以3个开关表决逻辑为例作说明。这3个开关分别用A、B及C表示。表决结果用灯L表示。每个开关也都有两个状态,即下扳(赞成)、上扳(不赞成)。下扳(通)用变量,即用A、B或C表示。下扳(断)用变量的非,即用A、B及C表示。

这3个变量各有两个取值,下扳的是两个及两个以上的有4种。把这4种组合使灯亮,即可实现所要求的控制了。

对此分析,可用真值表表示,见表2-5。

表2-5 表决控制真值表

978-7-111-39745-8-Chapter03-50.jpg

它的逻辑表达式应为

978-7-111-39745-8-Chapter03-51.jpg

经化简则为

978-7-111-39745-8-Chapter03-52.jpg

当然还应对这个表达式进行化简。不过由于使用PLC,触点多少问题不大,可直接依据此表达式,画出的梯形图,如图2-20所示。图2-20a为其合取范式。图2-20b为其析取范式。这个电路在以上讨论等效输出时也见过。只是那里用了直接地址。这里用变量,但变量声明略。

如果使用ST语言,与此程序对应的ST语句为

978-7-111-39745-8-Chapter03-53.jpg

图2-20 三个开关表决电路

L:=(A AND B)OR(B AND C)OR(CAND A);

或L:=(A OR B)AND(B OR C)AND(C OR A)。

这里仅用3个开关表决。如果多了,如几十、几百,就太复杂了。为此可用后面将要介绍的高级逻辑设计方法设计。

3.比较逻辑

比较两组开关上扳或下板是否一致。以下以每组3个开关的比较逻辑为例作说明。甲组的3个开关分别用A、B及C表示,乙组与甲组对应的3个开关分别用X、Y及Z表示。比较相同结果用灯L表示。每个开关也都有两个状态,即下扳(通)、上扳(断)。下扳用变量本身表示。上扳用变量的非表示。

这各3个变量各有两个取值。以A与X为例,如比较一致,要不是都是上扳,要不都是下扳。即AX+AX。

而只有3对比较都一致,才说明这两组开关一致。故L的表达式应为

978-7-111-39745-8-Chapter03-54.jpg

当然还应对这个表达式进行化简。不过由于使用PLC,触点多少问题不大,可直接依据此表达式,画出的梯形图,如图2-21所示。图2-21a为其析取范式。图2-21b为其合取范式。这里变量声明略。

978-7-111-39745-8-Chapter03-55.jpg

图2-21 三开关比较逻辑

这里仅用3个开关比较。如果多了,如几十、几百,就太复杂了。为此可用字节、字或双字比较指令了。

提示:析取范式到合取范式转换,除了运用触点代数化简,还可通过图形分析实现。办法是,寻找所有可能的通路。把每组可能的通路的触点合取(串联)构成一个合取项。去掉常断的合析取项。再把所有析取项相加(并联)。

使用ST语言编程,可使用IF(假设)、THEN(那么)、ELSE(否则)、END_IF(结束假设语句),较简单。对应程序如下:

978-7-111-39745-8-Chapter03-56.jpg

4.格雷码到二进制码译码

格雷码为单位码,不少绝对值计数的旋转编码器用它编码。但格雷码没有“权值”,无法用作大小比较。但它与二进制码有对应关系,其关系真值表见表2-6(5位)。以此关系,可把它译成二进制码。

表2-6 二进制码与格雷码对照真值表

978-7-111-39745-8-Chapter03-57.jpg

从表2-6可知,二进制码的本位的值为格雷码的本位值与二进制码高一位值的异或,即

978-7-111-39745-8-Chapter03-58.jpg

式中 ei)——第i位二进制值;

gi)——第i位格雷码值;

ei+1)——第i+1位格雷码值;而最高位两者相等。

图2-21即为此译码程序。该图g0(G0)(低位)到g4(G4)(高位)为格雷码,e0(E0)(低位)到e4(E4)(高位)二进制码。

图2-22程序设计的根据是表1-17。从表知,二进制码的本位的值为“格兰码”的本位的值与二进制码的高一位的值的异或,即

ei)=[gi)xor ei+1)]

式中 ei)——第i位二进制值;

gi)——第i位“格兰码”值;

ei+1)——第i+1位“格兰码”值;

xor——逻辑异或。

而最高位两者是相等的。

978-7-111-39745-8-Chapter03-59.jpg

图2-22 格雷码到二进制译码程序

5 二进制码到格雷码译码

从表2-6中可知,格雷码本位的值为:二进制码的高一位值与二进制码的本位值的异或,即

978-7-111-39745-8-Chapter03-60.jpg

式中 ei)——第i位二进制值;

ei+1)——第i+1位二进制值;

gi)——第i位格雷码值;而最高位两者相等。

如图2-23所示为二进制到格雷码的译码程序,图2-23a为其合取范式,图2-23b为其析取范式。该图g0(G0)(低位)~g4(G4)(高位)为格雷码,e0(E0)(低位)~e4(E4)(高位)二进制码。

978-7-111-39745-8-Chapter03-61.jpg

图2-23 二进制到格雷码译码程序

提示:当今,不少PLC提供有这两种编码的转换指令,不必调用这里介绍的转换程序。