2.3 异步时序逻辑编程
继电器电路是典型的异步时序逻辑。PLC顺序控制也多是异步时序逻辑。本节将介绍异步时序逻辑编程。
2.3.1 异步时序逻辑表达式与通电表
1.表达式
(1)有关约定
继电器电路要用到线圈。所以,在触点代数约定的基础上,还应增加一些约定。具体为,线圈与受其控制的触点名称相同,线圈工作、ON,用1表示。这时,其常开触点接通,常闭触点断开。线圈不工作、OFF,也用0表示。这时,其常闭触点接通,常开触点断开。
PLC用的是操作数“位”的写与读。如果调OUT指令用1写操作数“位”,相当于使线圈工作。这时,其常开触点ON,常闭触点OFF。如果用0写操作数“位”,其常开触点OFF,常闭触点ON。
(2)一般表达式
对仅是串并触点控制的继电器线圈,或仅用LD、OUT、AND、OR、AND—NOT、OR—NOT、AND—LD、OR—LD等基本指令控制的PLC输出,其逻辑表达式为
Ji=fi(a1、a2、…、aj…an,J1、J2、…、Jk、Jm)
式中 aj——输入继电器的触点,可能为常开,也可能常闭;
Jk——内部辅助、输出继电器触点,可能为常开,也可能常闭。
可以不用证明,上式总是可以分解式(2-1)所示一般表达式。它分成两组,一组为含有自身触点这个因子,为起动;另一组不含自身触点这个因子,为保持。即
Ji=Qi+BiJi (2-1)
式中,Qi、Bi都不含Ji的因子。从硬件意义上讲,式左边的Ji代表线圈,右边Ji代表它的触点。
其对应的梯形图如图2-6所示。
读者可能要问,怎么没有Ji非的因子呢?主要是考虑以自身的常闭触点去控制自身的线圈,没有实际意义。不然,如图2-7所示,其含义是:每执行一次这组指令,Ji的状态变换一次。无特殊需要,一般不作这样设计。
图2-6 与式(2-1)对应的梯形图
图2-7 不稳定电路
有了这个思路,处理继电器电路或异步时序逻辑,也可用组合逻辑的方法了。分析时,分别分析起动与保持两个部分:
1)起动。关键看由0变为1的条件。只要它变为1,且“保持”也为1,这个输出如未起动,则起动(为1)。而且一旦起动,之后如“保持”一直为1,其输出将继续为1。
2)保持。关键看由1变为0的条件,只要变为0,且起动不为1,这个输出如为0,则停止,不再工作。而一旦断电,之后又没有起动,其输出将继续保持0。
2.通电表
(1)通电表组成
通电表由行与列组成,见表2-5。它的“列”记录着各个器件在各个节拍的工作状况;“行”记录着各个节拍各个器件的工作情况。表中1代表器件在工作,其常开触点ON,常闭触点OFF;0代表器件不在工作,其常闭触点ON,常开触点OFF。
节拍与输入有关,它的转换也是由输入引起的。而对异步时序逻辑的输入总是做以下两个假设:
1)在同一时间总是只有一个输入信号改变。
表2-5 通电表
2)两次输入信号改变之间系统的内部及输出状态已趋于稳定。
事实上,绝大多数工作系统是总是能满足这两个假设的。
因此,“通电表”可从时、空两个角度看出时序逻辑的全貌。可用于继电器电路或PLC顺序控制程序的分析与综合。
(2)有关概念说明
本书讨论的是PLC,所以,以下概念都是针对PLC而言。
1)输出器件。为PLC的输出点。用1、0代表它工作状态。
2)内部器件。为PLC内部继电器,或自定义内部布尔变量,用1、0代表工作状态。
3)输入器件。为PLC的输入点。用点1、0代表工作状态。输入点接收的信号有主令信号与反馈信号。前者为人工对系统的控制;后者为对控制动作执行后的应答。分清主令信号与反馈信号对分析与设计梯形图逻辑很有好处。因为多数电路开始工作时总是由主令信号发起,而以后的工作推进则多是反馈信号。找出主令信号就等于抓住了“顺序控制”的开头,也就有了头绪。这样,再进一步展开分析自然也就不难了。
不是所有的输入改变都会改变输出或改变内部器件状态。不会产生这种“改变”输入信号可视为无效信号。反之,为有效信号。如按钮,一般讲,从松开到按下为有效信号,而从按下到松开则多为无效信号。但这也不是绝对的,要看怎么去处理。如用一个按钮实现起、停控制,则按下与松开可能都将是有效信号。
4)节拍。是划分通电表的时间区段。内部状态、输出状态及有效输入的改变是划分的依据。这三者的改变即为节拍的改变。不同的内部状态、输出状态与有效输入,也就是处于不同的节拍。
5)当前输入。是进入新节拍的输入。可由有效输入改变生成,也可由内部器件状态及输出点状态改变生成。当前输入的表示方法是:如果信号从OFF到ON,用信号的名(变量本身);如果信号从ON到OFF,用信号的名上加小横线(变量的非)。
2.3.2 异步时序逻辑分析
用通电表分析已设计好的程序,相当于在“纸面”上“运行”程序,是检查程序正确性、可行性的一个好方法。以下用通电表分析图2-8程序。
该图为4种PLC的梯形图程序,用的是符号地址,有一个输出点“工作”(输出器件)、一个中间继电器“b”(内部器件)及一个输入“AA”(输入器件)。
从连接关系,可列出“工作”及“b”的逻辑表达式如下:
“工作”=(“AA”)(“b”)+(“AA”+“b”)(“工作”)
“b”=(“AA”)(“工作”)+(“AA”+“工作”)(“b”)
电路的主令器件(信号)为“AA”,所有节拍的转换都由它的变化引起。在原始状态,“AA”不输入,为0,内部器件“b”、输出器件“工作”均OFF。
图2-8 单按钮起停电路
这时,如输入“AA”转为1,进入第1节拍。从逻辑表达式计算可得,“工作”将为1,而“b”仍为0;
进而,如“AA”转为非(为0),进入第2节拍。从逻辑表达式计算可得,这时,“工作”“b”均为1;
接着,如再按“AA”(为1),进入第3节拍。从逻辑表达式计算可得,这时,“工作”为0,而“b”仍为1;
再松开,“AA”再转为非(为0),进入第4节拍。从逻辑表达式计算可得,这时,则“工作”“b”全为0。其结果如表2-6所示。
表2-6 图2-8电路通电表
从表2-6知,它是用一个按钮起、停控制输出器件工作的电路。其功能就是用一个按钮实现“工作”的起停。
提示:和利时PLC编程软件所用变量暂不支持中文命名,但ABB的已可以。
2.3.3 异步时序逻辑综合
1.异步时序逻辑正常工作应遵循的原则
触点电路(组合逻辑)输出取值对应于它的逻辑条件是唯一的。要想用相同的逻辑条件产生不同的输出,是不可能的。这是触点电路工作的唯一性规律。设计这样电路必须遵守这个规律,即唯一性原则。
继电器电路(PLC梯形图程序可与其对应),也即PLC的异步时序逻辑,其输出或内部器件的取值对应于它的输入条件不是唯一的。因为它有自身反馈。但是,它的输出可分解为起动与保持两个部分。这两者又都是触点电路(组合逻辑)。所以,为了它能正常工作,这两部分分别也应遵守唯一性原则。具体讲:
对起动电路,其起动节拍不能与所有OFF节拍的相同。否则就会出现不该起动而起动。
对保持电路,其断电节拍不能与所有ON节拍的相同。否则就会出现不该断电而断电。
所设计的通电表如不满足这个唯一性原则,也称逻辑条件相混。可适当增加内部器件,把相混分开。
这里举一个例子说明这个原则,如要求设计一个时序电路,其要求是用输入点AA(用符号地址,下同)控制输出“工作”,各节拍的对应关系见表2-7。到第4节拍时,电路又复原,回到原始状态。显然,这个设计就是对图2-8分析的反问题。
表2-7 各节拍输入、输出对应关系
从表2-7知,这里的1和3两个节拍,逻辑条件相同,但1节拍要求“工作”为1、起动,而3节拍又不要求“工作”为0、不允许起动,这种矛盾的要求,若没有增加内部器件是无法实现的。从断电检查,2和4节拍也有类似的情况。
为了排除这个相混,则要加一个内部器件“b”,其通断电过程,如表2-8所示。由于这时“工作”与“b”可互为条件,所以,无论是对“工作”还是对“b”,它的通断电都不相混,因而这个通电表也就不相混了。
表2-8 增加内部继电器后各节拍输入、输出对应关系
2.梯形图逻辑综合过程
唯一性原则给梯形图正常工作设置了约束,但也给梯形图设计提供了入门依据。以下介绍的编程就是从分析唯一性原则入手的。
(1)初列通电表
根据设计要求,按输入与输出的对应关系,初列通电表。这个表也称原始通电表。用它可反映输出与输入在各个节拍的对应关系。这个表是不难设计的,因为它仅是设计要求的“表格化”而已。
(2)唯一性设计
对已建立的原始通电表进行唯一性检查,如不满足唯一性原则,可适当增加内部器件,以得到一个合乎唯一性原则的通电表。具体做法如下:
1)依次对,在原始通电表中的每一输出点的起动与断电进行唯一性检查:
把所有起动节拍的逻辑条件与所有不工作(OFF)节拍的逻辑条件进行比较,看是否存在相混;把所有断电节拍的逻辑条件与所有工作(ON)节拍的逻辑条件进行比较,看是否存在相混。
若有,建相混表。这个表可附在原始通电表右侧,亦即原始通电表的扩展。将逻辑条件相同者分成一组,占一列,用英文字母命名,起动(或断电)节拍处标写大写字母,其它与逻辑条件相混的节拍标与其同名的小写字母。然后,在同名的大小写字母间的节拍画上竖实线,其余的画上竖虚线。画时,应把第1节拍看作最后一个节拍的次拍。这主要因为电路总是要循环工作的,故需做这么处理。表2-9就是对表2-10检查后建的相混表。
表2-9 经检查后所建的相混表
2)在各组的实线处建立分界线,以便把相混的情况区分开。为了节省内部器件,最好“一线多用”,即用一个分界线,能区分尽可能多的组的相混。以上工作可借助集合运算求解,实现算法化。
3)分界线是靠增加内部器件实现。如新增的内部器件在分界线之前为OFF,而之后为ON,并把它作为因子,加入到相应的逻辑条件中,显然,这一对对的相混也不再有了。
4)既然分界线是靠增加内部器件建立,那么就还要对它的启动与断电逻辑条件也要作相混检查。办法同前。
5)如新增的内部器件也存在相混,则也要再建分界线。以至于还要再查、再建,直到不再有相混为止。
所增加的内部辅助器件在分界线处,从OFF变为ON,而到了最后一个节拍,再使其从ON变为OFF。这样虽然多用了内部辅助器件,但逻辑关系简单。由于PLC几乎有海量的内部辅助器件,故是可取的。
(3)列写逻辑式子
根据通电表列写各输出点及内部器件的逻辑式子。分起动电路及保持电路分别进行。对运用锁存指令的,起动电路即为S电路;保持电路去掉自身触点的因子,而后再取反,即为R电路。
1)求起动电路逻辑表达式。其逻辑要求是:起动节拍的逻辑条件应为1,无电节拍应为0,其它节拍可任意。表达式可分为特解和一般解。特解仅对起动节拍进行分析,求其为1时的逻辑条件;一般解还把无关项(可任意取值的项)也考虑进去。特解为
式中 N——起动次数;
AQi——起动节拍,当前输入;
MQi——起动节拍的其它元件状态组合;
一般解为
式中 Q——所有OFF节拍的总数;
AWR·MWR——OFF节拍的逻辑条件。
一般讲,特解含的因子多,所用的触点多,一般解可能简单些,但也可能包含多余的项。正确的选择是化简一般解,并从中挑选出含特解的项。但要确保,起动节拍的当前输入成为必备的因子。否则无法进入本节拍。
2)求保持电路逻辑表达式。其逻辑要求是:断电节拍的逻辑条件为0(对锁存指令的R电路,则为1),ON节拍为1(R电路,为0),其它的可以任意取值。也分为特解与一般解。特解仅考虑ON节拍的条件,一般解还考虑任意项。特解式为
式中 P——所有为ON的节拍数;
Arj·M——为ON的节拍的逻辑条件;
J——求解元件自身接点,即自保接点。
一般解为:
式中 N——断电次数;
ADi——断电节拍的当前输入;
MDi——断电节拍的其它元件状态组合;
J——求解元件自身接点,即自保接点。
化简时,同样也是先化简一般解,然后选含特解的项。但,断电节拍的当前输入的反,也总要成为必备的因子。否则也无法进入本节拍。
在使用锁存指令时,其S电路的特解及一般解,与起动电路的有关逻辑表达式相同。其R电路表达式为,除去J后的非,并将特解与一般解互换。即,特解为一般解为:
式中右边各项含义与保持电路表达式中的各项含义相同。
(4)逻辑化简、列写指令、画梯形图
逻辑式子化简实际是数字逻辑问题。除了代数法,还有很多方法,如卡诺图法、Q—M法、n—立方体法等。实质都是先求出最大蕴含项,然后,再找出必要质(最大)蕴含项,之后,进行列消去,再不能消去时可任取。有了最简的表达式,则可列写指令或画梯形图了。
2.3.4 异步时序逻辑综合举例
【例1】 液体混合罐工作控制
有一个用于使两种液体进行混合的装置,见图2-9。控制要求是,起始状态容器是空的,3个阀门(XX1、XX2、XX3)均关闭,电动机M也不工作。液面传感器L、I、H也处OFF状态。
起动操作后,先是XX1阀门打开,液体A流入容器。当液面位置达到II时,II开关ON,使XX1阀门关闭,而XX2打开,使液体B流入。当液面到达HH时,HH开关ON,XX2阀门关闭,并起动电动机MM,对两种液体作搅拌。搅拌6s后,电动机MM停止工作,并打开阀门XX3,把混合液放出,直到LL传感器OFF后,再过2s,阀门XX3关闭,并又开始新的周期。若要停止操作,可按停车按钮TT。但按后不立即停止工作,而是待完成一个工作循环后,才停止工作。
图2-9 两种液体进行混合的装置
设计过程如下:
1)用的可编程序控制器可任选,其I/O分配略,但用相应符号XX1、XX2、XX3、QQ、TT、MM、HH、II、LL代表。时间继电器符号为TM、TL。
2)用解析法编程。其步骤是先列原始通电表,次是,检查通电表满足唯一性原则的情况,并完善之;再就是,列写逻辑式子并进行化简,画梯形图。
初列通电表:用相应的符号列表,如起动按钮用QQ,TM为与MM共同工作的时间继电器等。所画出的原始通电表见表2-10。
表2-10 图2-9原始通电表
1)对原始通电表进行唯一性检查,可知:
XX1起动主要靠Q信号,其它XX1OFF的节拍均无此信号,所以,不存在相混。但是,第2循环及以后的循环,无QQ信号,仍应使XX1起动,这可用TL帮忙。这相当于把1、10节拍合并。XX1断电,其信号为I,其它ON节拍也无此信号,故也不存在相混。
XX2于第4节拍工作,其它节拍都不工作。第4节拍时II、LL均ONHHOFF。这种情况还出现在第7节拍。但第7节拍时XX3ON,而第4节拍时XX3OFF,这可把第4与第7节拍的逻辑条件区分开。故对XX2而言,唯一性原则也满足。
XX3于第6节拍起动,它用的信号为TM,是唯一的。其断电于第10节拍,用的信号为TL也是唯一的。
M于第5节拍工作,这时HON。第6节拍也是这个情况。但两者可用TM区分开,故M也不存在相混。
TM靠HON起动,是唯一的。
TL靠XX3ON再LOFF起动,也是唯一的。
这样,通电表的唯一性设计后,可保持原始通电表不变。
停车按钮TT输入是随机的,但它输入后可对其进行记忆(如以Z表示),并用这记忆的信号去“切断”TL与XX1的联系,即可达到目的。其在通电表中表示略。
其实分析这里的输入信号得知,本例没有短信号机计数信号,所以,通电表是不会想混的。
2)列写逻辑式子。为了便于理解及使式子简练,这里用的也是原始符号。对XX1:其起动电路,依上述分析应为;其保持电路应为IIXX1。对XX2:其保持电路不用,起动电路用作工作电路,应为。
对XX3:其起动电路为TM;其保持电路为。
对MM:其保持电路不用,起动电路即为工作电路,为。
对TM:工作电路为HH。
对TL:工作电路为。
对Z:其起动电路为TT;保持为。
这样,它的完整的逻辑式子为
3)针对以上逻辑式画出的梯形图,见图2-10。从梯形图可知,完成这样的控制,其电路并不复杂。
这里列写逻辑式子未完全套用以前的公式,而是用直接观察的办法。由于本例逻辑变量较多,相区分的信号又较明显,直接观察更为简便。自然,用式子去化简,或用其它的化简方法进行化简,其结论也是这样的。
图2-10 与表2-10对应的梯形图程序
图2-10所示虽为4种PLC程序,但由于用的都是基本逻辑处理指令,且又是用的符号地址,所以,这3种程序间的差别是不大的。所差的只是梯形图的个别符号上。这也说明,有了控制的算法,用什么PLC去实现,一般也都是可能的。
提示:和利时与ABPLC用的是IEC标准编程,没有常规意义的定时器,而是用定时功能块。这里的TM、TL为结构变量,是该功能块的两个实例。TM.Q、TL.Q为该功能块实例的输出,相当于其它PLC的定时器输出点。
图2-11 小车运动控制示意图
【例2】 小车运动控制
于图2-11所示的小车,有3个状态,向左(反转)、向右(正转)、停车。Ls为反映小车所处位置的行程开关,Ps为选择小车位置的按钮,各有5个。控制要求是:按下选择按钮,如其编号大于小车当前位置压下的行程开关号时,再按下起动按钮SW小车向右运动,直至小车当前位置压下的行程开关的编号与前者的编号相等时,小车停止运动;按下选择按钮,如其编号小于小车当前位置压下的行程开关的编号时,再按下起动按钮SW小车向左运动,直至小车当前位置压下的行程开关的编号与前者的编号相等时,小车停止运动。
设计过程如下:
1)输入用符号Ls1、Ls2、Ls3、Ls4、Ls5、Ps1、Ps2、Ps3、Ps4、Ps5、SW代表,分别对应的输入点编号略。输出用符号YY1代表向右(正转)、YY2代表向左(反转)。
2)编程。
通电表设计:所设计的电路为随机电路,从输入入手,按所有可能情况列写通电表,相当复杂,也无此必要。如果从输出考虑,由于它只有向左、向右两种情况,故便于归纳。先不考虑起动按钮,仅考虑行程开关Ls及选择按钮Ps与向右、向左输出的置位与复位的逻辑关系,其通电表见表2-11。由于它是随机的,故这里省略了节拍的概念。节拍是与输入相联系的概念,现从输出考虑,故可不用它,这也是处理随机电路通电表的一种方法。
表2-11 例2通电表
从表2-11可知,对YY1、YY2,其S、R电路的逻辑条件,与可能出现的逻辑条件均不相混,故此表能满足唯一性原则。
列写逻辑式:由于这里的输入LS、PS出现时,都仅为一个ON,这为我们列写逻辑式提供了方便,即仅考虑变量本身,其它可不考虑。具体列写如下:
YY1S电路
S1=Ps5(Ls4+Ls3+Ls2+Ls1)+Ps4(Ls3+Ls2+Ls1)+
Ps2(Ls2+Ls1)+Ps2Ls3
YY1R电路
R1=Ps5Ls5+Ps4Ls4+Ps3Ls3+Ps2Ls2
YY2S电路
S2=Ps1(Ls2+Ls3+Ls4+Ls5)+Ps2(Ls3+Ls4+Ls5)+
Ps3(Ls4+Ls5)+Ps4Ls5
YY2R电路
R2=Ps1Ls1+Ps2Ls2+Ps3Ls3+Ps4Ls4
画梯形图:列出逻辑式后,可画出对应的梯形图,不过还要考虑几个实际问题:
①选择按钮给出的是短信号,按后即复原,故需对其记忆。设用内部辅助继电器MM1~MM5(也是用符号地址)分别对Ps1~Ps5作记忆,直到选择编号与实际编号相等时,再清除这个记忆。以YY1为例,其逻辑式为
其余的类推。这里用到位后的信号Ls1作为断电输入信号,故其保持电路为(MM1)。
用了MM1~MM5后,即可用它代换上述逻辑式中的Ps1~Ps5。
②起动输入信号SW应作为YY1、YY2的置位电路的条件之一。
③YY2、YY1必须互锁、以保证安全。
④实际电路应尽可能简化,以节省指令条数。
考虑以上4点后的梯形图如图2-12所示。图中YY2的输出未画出,它与YY1类似。
本梯形图把KEEPYY1等指令画在前而OUTMM1等在后,这很重要。这可保证到达要求位置时,YY1等先复位,然后MM1等才复位。否则,即前后调一下,YY1等就复位不了的。
提示:本例是按单用户单资源的设定设计的。也就是同一时刻只能有一个需求,待这个需求处理完成后,这里单一资源才可能响应新的需求。所以,编程要简单些。
【例3】 组合机床动力头运动控制
设计组合机床动力头运动控制的电路。该机床动力头运动由液压驱动。电磁阀DT1得电,主轴前进;失电后退。同时,还用电磁阀DT2控制前进及后退速度。得电快速,失电慢速。要求机床的工作过程是:从原位(行程开关XK1ON)开始工作。按下起动按钮QQ,先快速进;到行程开关XK2ON,转为工进(慢速前进);加工一定深度,XK3ON,快退;退到XK2OFF(目的为了排屑),又快进;快进至XK3ON,又转工进;加工到尺寸,XK4ON,快退,直至原位XK1ON停,完成一个工作循环。图2-13a所示为系统结构。其具体工作过程见图2-13b。这里,虚线为快速运动,而实线为慢速运动,箭头指明它的运动方向。
设计过程如下:
(1)输入输出分配
输入:QQ、XK1、XK2、XK3、XK4用输入符号地址;输出:DT1、DT2也用符号地址。具体分配略。
图2-12 与表2-11对应梯形图程序
图2-13 机床动力头运动控制
(2)程序设计
通电表设计:先依照工作顺序,初列通电表,见表2-12。
对原始通电表进行唯一性原则检查:检查DT1。它有两次起动。第1次起动输入信号为QQ,用它可与所有DT1为OFF节拍的逻辑条件区分开。第2次起动在第7节拍。其起动信号为及其它条件均与第13节拍(DT1为OFF)相混,即表2-12中标的B—b。DT1有两次断电,第1次在第5节拍,它与第9节拍的条件相混,即表2-12中标的A—a。第2次断电逻辑条件不相混。
检查DT2。它有3次起动,第1次起动不存在相混。第2次在第5节拍起动,与第9节拍相混,即表示所标A—a。第3次在第10节拍起动,不存在相混。它也有3次断电,第1次在第4节拍断电,它与第8节拍相混,即表中标以C—c。第2次在第9节拍断电,如果做到在第5节拍DT1断电后,DT2再起动,可不相混。第3次断电在第14节拍,不存在相混。
按规定画完实线后(见表2-12),需在第3(或1,2)、6及10(或11、12)节拍建3条分界线,才能把全部相混区分开。再查所建的分界线也不存在相混。
3条分界线需用内部辅助继电器。设用MM1及MM2。其工作情况也按“先逐个ON,ON后再逐个OFF”的原则布置,则如表2-12所示。
表2-12 例3通电表设计
对表2-12再做检查,可知无论是对DT1、DT2,还是对MM1、MM2,均不相混。
列写逻辑式子:
DT1起动电路特解
DT1起动电路通解,经化简后为
从中选出含有特解的项。可以是头两项,或第1及第3项。这里用头两项,即
DT1保持电路特解为第1、2、3、4及7、8、9节拍逻辑条件的或,其表达式略。
DT1保持电路通解为第5及第10节拍逻辑条件或的非,经化简为
选及·MM2或·MM2即可覆盖所有的特解,现选·MM2,这样可得
同理,可求DT2、MM1、MM2的逻辑表达式:
画梯形图:依上述逻辑表达式,可画出的对应梯形图,见图2-14。
图2-14 与表2-12对应的梯形图程序