1
PLC编程实用指南
1.6.3.3 2.3.3  异步时序逻辑综合
2.3.3 异步时序逻辑综合

1.综合的目标

综合就是,编写满足设计要求及约束条件的PLC程序,是程序分析的反问题。综合得到的结果可能较多,所以,还要从所有的结果中求出最好的结果。

此外,组合逻辑综合,由于不用内部器件,关系也简单,可以运用真值表,直接列表达式。异步时序逻辑综合,面对的只是要求与条件,输入变量少,无真值表可用,要使用哪些内部器件也不清楚。所以入手比较困难。

异步时序逻辑综合方法很多,但是如用以上介绍的通电表作为设计起点,则有其方便之处。其方法是:先确定节拍,设计好通电表,进而以通电表确定的条件,列写输出及内部继电器的逻辑表达式,最后再化简表达式、编写PLC程序。

怎么用通电表作为设计的起点呢?这要从电路正常工作应遵守的原则谈起。

2.电路正常工作应遵循的原则

电路,触点电路也好,继电器电路(PLC梯形图程序可与其对应),正常工作都要遵守一些原则。最重要的就是唯一性原则。这原则是:

(1)对于触点电路。输出取值对应于它的逻辑条件是唯一的。要想用相同的逻辑条件产生不同的输出,是不可能的。这是触点电路正常工作必须遵守的原则。

如用一个钮子开关控制一个指示灯的电路。可以有这样的情况,钮子扳把处在甲位置时,灯亮,而处在乙位置时,灯不亮;但不能有这样的情况,同样处于甲位置,灯有时亮,有时不亮。可以想象,除了另有所控(还有别的逻辑条件),否则是不可能的。

从本质上讲,触点电路是组合逻辑,而组合逻辑是单值函数,一种输入组合只对应一种输出。违背这个原则设计的触点电路,逻辑关系是混乱的,其设计意图是不可能实现的。一般把这种逻辑条件相混的情况,简称相混。

(2)对于继电器电路。输出对应于它的逻辑条件的取值不是唯一的。因为它有自身反馈。但是,继电器电路可分解为起动与保持两个部分。这两者又都是触点电路,所以也应遵守唯一性原则。

对起动电路,要检查起动节拍是否遵守唯一性原则。而起动节拍是指在多个连续ON节拍中第一个ON的节拍。

对保持电路,要检查断电节拍是否遵守唯一性原则。而断电节拍是指在多个连续ON节拍之后第一个OFF的节拍。

显然,要想在相同的逻辑条件下,使内部及输出继电器在某个节拍起动(或断电),而在另一个节拍又不起动(或断电)是不可能。

所设计的通电表如不满足这个唯一性原则,也称逻辑条件相混。可适当增加内部器件,把相混分开。

这里举一个例子说明这个原则,如要求设计一个时序电路,其要求是用输入点AA(用符号地址,下同)控制输出“工作”,各节拍的对应关系见表2-10。到第4节拍时,电路又复原,回到原始状态。显然,这个设计就是对图2-27分析的反问题。

表2-10 各节拍输入、输出对应关系

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

从表2-10可知,这里的1、3两个节拍,逻辑条件相同,但1节拍要求“工作”为1、起动,而3节拍又不要求“工作”为0、不起动,这种矛盾的要求,若没有增加内部器件是无法实现的。从断电检查,1、3节拍也有类似的情况。

为了排除这个相混,则要加一个内部器件“b”,其通断电过程见表2-11。由于这时“工作”与“b”可互为条件,所以,无论对“工作”与“b”,它的通断电都不相混,因而这个通电表也就不相混了。

表2-11 增加内部继电器后各节拍输入、输出对应关系

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

3.梯形图逻辑综合过程

唯一性原则给梯形图正常工作设置了约束,但也给梯形图设计提供了入门依据。以下介绍的编程就是从分析唯一性原则入手的。

(1)初列通电表。根据设计要求,按输出时序划分工作步,并确定各个步的输入与输出的对应关系,初列通电表。这个表也称原始通电表。用它可反映输出与输入在各个步的对应关系。这个表是不难设计的。因为它仅是设计要求的“表格化”而已。

(2)唯一性设计。对已建立的原始通电表进行唯一性检查,如不满足唯一性原则,可适当增加内部器件,以得到一个合乎唯一性原则的通电表。具体作法是:

1)依次对,在原始通电表中的,对每一输出点的起动与断电进行唯一性检查:

把所有起动的步或节拍的逻辑条件与所有不工作(OFF)节拍的逻辑条件进行比较,看是否存在相混,即存在逻辑条件相同的步或节拍;

把所有断电的步或节拍的逻辑条件与所有工作(ON)节拍的逻辑条件进行比较,看是否存在相混,即存在逻辑条件相同的步或节拍;

若有,建相混表。这个表可附在原始通电表右侧,亦即原始通电表的扩展。将逻辑条件相同者分成一组,占一列,用英文字母命名,起动(或断电)节拍处标写大写字母,其他与逻辑条件相混的节拍标与其同名的小写字母。然后,在同名的大小写字母间的节拍画上竖实线,其余的画上竖虚线。画时,应把第一节拍看作最后一个节拍的次拍。这主要因为电路总是要循环工作的,故须做这么处理。表2-12就是对表2-10检查后建的相混表。

表2-12 经检查后所建的相混表

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

2)在各组的实线处建立分界线,以便把相混的情况区分开。为了节省内部器件(对PLC此问题不大),最好“一线多用”,即用一个分界线,能区分尽可能多的组的相混。以上工作可借助集合运算求解,实现算法化。

3)分界线是靠增加内部器件实现。如新增的内部器件在分界线之前为OFF,而之后为ON,并把它作为因子,加入到相应的逻辑条件中,显然,这一对对的相混也不再有了。

4)既然分界线是靠增加内部器件建立,所以,还要对它的启动与断电逻辑条件也要作相混检查。办法同前。

5)如新增的内部器件也存在相混,则也要再建分界线。甚至还要再查,再建,直到不再有相混为止。

所增加的内部辅助器件在分界线处,从OFF变为ON,而到了最后一个节拍,再使其从ON变为OFF。这样虽然多用了内部辅助器件,但逻辑关系简单。由于PLC几乎有海量的内部辅助器件,故是可取的。

其实,也可在通电表唯一性设计之前,先检查输入信号的情况。如有短信号,则要用内部器件对其“记忆”,建分界线;如有计数信号,则要对它的每个输入节拍都要“记忆”,建分界线。这样建立的通电表将不会出现相混。读者可用这里介绍的办法检查,证明这个结论是正确的。

因此,本步骤的简化设计步骤是:

(a)分析输入信号,区分长、短信及计数信号;

(b)对短信号,在信号开始输入或次一输入节拍,用一个内部件的状态改变将其“记忆”,建分界线;

(c)对计数信号,在信号每次变化的节拍,如没有输出或内部状态改变,则用一个内部器件的状态改变将其作“记忆”,建分界线;

(d)在结束节拍,使这些作“记忆”的内部件全部复位,使电路复原。

上述4个步骤也可称为细列通电表。这样细列通电表肯定是不会出现相混的。可以不必进行上述繁琐的相混检查,进而简化唯一性设计。读者不妨根据以上4点对表2-10的实例作处理,肯定也会得到表2-11的结果。

(3)列写逻辑式子。根据通电表列写各输出点及内部器件的逻辑式子。分起动电路及保持电路分别进行。对运用锁存指令的,起动电路即为S电路;保持电路去掉自身触点的因子,而后再取反,即为R电路。

1)求起动电路逻辑表达式。其逻辑要求是:起动节拍的逻辑条件应为1,无电节拍应为0,其他节拍可任意。表达式可分为特解和一般解。特解仅对起动节拍进行分析,求其为1时的逻辑条件;一般解还把无关项(可任意取值的项)也考虑进去。特解为

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

式中 N——起动次数;

AQi——起动节拍,当前输入;

MQi——起动节拍的其他元件状态组合。

一般解为

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

式中 Q——所有OFF节拍的总数;

AWR·MWR——OFF节拍的逻辑条件。

一般讲,特解含的因子多,所用的触点多,一般解可能简单些,但也可能包含多余的项。正确的选择是化简一般解,并从中挑选出含特解的项。但要确保起动节拍的当前输入成为必备的因子。否则无法进入本节拍。

2)求保持电路逻辑表达式。其逻辑要求是:断电节拍的逻辑条件为0(对锁存指令的R电路,则为1),ON节拍为1(R电路,为0),其他的可以任意取值。也分为特解与一般解。特解仅考虑ON节拍的条件,一般解还考虑任意项。特解式为

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

式中 r——所有为ON的节拍数;

Arj·Mrj——为ON的节拍的逻辑条件;

J——求解元件自身触点,即自保触点。

一般解为

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

式中 N——断电次数;

ADi——断电节拍的当前输入;

MDi——断电节拍的其他元件状态组合;

J——求解元件自身触点,即自保触点。

化简时,同样也是先化简一般解,然后选含特解的项。但断电节拍的当前输入的反,也总要成为必备的因子。否则也无法进入本节拍。

在使用锁存指令时,其S电路的特解及一般解,与起动电路的有关逻辑表达式相同。其R电路表达式为除去J后的非,并将特解与一般解互换。即特解为

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

一般解为

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

式中右边各项含义与保持电路表达式中的各项含义相同。

(4)逻辑化简、列写指令、画梯形图。对逻辑式子进行化简,求最简式:这实际是数字逻辑问题。除了本章以上讲的代数法,还有很多方法,如卡诺图法、Q-M法、n-立方体法等。实质都是先求出最大蕴含项,然后,再找出必要质(最大)蕴含项,之后,进行列消去,再不能消去时可任取。

依最简的表达式列写指令或画梯形图。