1
PLC编程实用指南
1.6.2.4 2.2.4  组合逻辑综合实例
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提供有这两种编码的转换指令,不必调用这里介绍的转换程序。