首页 理论教育 PAC编程基础:继电器指令

PAC编程基础:继电器指令

时间:2023-10-26 理论教育 版权反馈
【摘要】:在梯形图中,两条继电器输入指令和三条继电器输出指令几乎表达了生产工艺过程所有的顺序逻辑关系,它们或是来自现场的开关量传感器输入,或是传送至现场继电器设备的输出,或是梯级逻辑的中间结果。非保持型输出指令OTE是一条最常用的指令,这条指令总是跟随梯级条件,当梯级条件成立,OTE指令输出为1;当梯级条件不成立,OTE指令输出为0。图4-9 加上ONS指令的锁存解锁指令

PAC编程基础:继电器指令

梯形图中,两条继电器输入指令和三条继电器输出指令几乎表达了生产工艺过程所有的顺序逻辑关系,它们或是来自现场的开关量传感器输入,或是传送至现场继电器设备的输出,或是梯级逻辑的中间结果。梯形图中大量的梯级都由基本的位指令的逻辑关系构成,如图4-1所示。位指令看似简单,运用起来颇有讲究,位指令所处的位置、输入指令和输出指令的搭配关系、输出指令的复位情况等都是值得研究和讨论的。

决定梯级条件的输入指令的逻辑位置安排,在梯级中并不是随意的,从程序执行的优化来讲,还是有规则可循的。例如A、B、C的3个输入点的位状态的波形如图4-2所示,根据梯级从左到右的扫描顺序,来判定输入梯级的位状态,一旦位状态无效,便不再判定后面的位状态,转到下一个梯级的扫描,所以要尽可能地将否定多的位编写在前面,以减少输入扫描的判断时间。每个梯级如此处理,积少成多,可节约不少扫描时间。注重每一个细节,不失为良好的编程习惯。

根据A、B、C的状态波形图分析,A是条件成立最少的位状态;B是条件成立次之少的位状态,C是条件成立最为频繁的位状态,所以在梯级的输入条件应该编写梯级逻辑如图4-3所示。

A条件成立的机会最少,每当A条件不成立后,便不再判断后面的B和C的位状态,当A条件成立,B一旦不成立,便停止判定C的条件,如此安排,可及早地停止判断,节省了扫描时间。

留心一下有经验的工程师编写的程序,会发现多个输入位逻辑在同一个梯级中,前后的摆放位置不是随意的,不但考虑节约扫描时间的优化,并具有规律可循和一定的可读性,在指令互锁执行的情况下,甚至影响到指令的执行顺序。

非保持型输出指令OTE是一条最常用的指令,这条指令总是跟随梯级条件,当梯级条件成立,OTE指令输出为1;当梯级条件不成立,OTE指令输出为0。如图4-4所示。

978-7-111-36030-8-Chapter04-1.jpg

图4-1 位逻辑实例

978-7-111-36030-8-Chapter04-2.jpg

图4-2 A、B、C的3个输入点位状态的波形图

978-7-111-36030-8-Chapter04-3.jpg

图4-3 输入位逻辑顺序

978-7-111-36030-8-Chapter04-4.jpg

图4-4 OTE指令跟随梯级条件变化

如果你读到的梯级简单如图4-5所示或如图4-6所示,那么这是编程实现位对位的映像,使表示外部设备名称的内部标签与外部I/O数据一一关联起来。这种做法,跟别名标签的目的相似,如图4-5中的这些梯级逻辑可能被编辑在初始化例程中,对于输入数据来说,还可用来防止I/O数据更新与例程梯级逻辑扫描不同步而引起的问题,这是被推荐使用的方法。如图4-6的梯级逻辑则是为了将输出设备名称的标签与外部的输出模块的端点对应起来,这些输出设备名称就是输出端点回路所控制的设备,由例程运行而产生的控制结果。

特别要注意的是,当例程预扫描或后扫描时,所有的OTE指令将被置为0。这是因为预扫描和后扫描将令所有的梯级条件不成立。其实我们应当关注每条指令对于预扫描或后扫描的结果,但是OTE和TON指令总是被强调的,它们是最典型的非保持型指令。人们一般不大注意OTE指令,只因为预扫描之后,OTE马上由梯级条件给出了它应有的状态,令人不易察觉而被忽略,而不是像TON指令那样,立刻可以看出ACC被复位为零了。

早期的编程常常可以看到如图4-7所示的梯级逻辑,这是硬件线圈通电后自保持回路的电路形式,根据这个思路,自然而然地编辑成了梯形图。锁存条件是A,接通B后产生自保,直到解锁条件C作用。

978-7-111-36030-8-Chapter04-5.jpg(www.xing528.com)

图4-5 位映像梯级逻辑

978-7-111-36030-8-Chapter04-6.jpg

图4-6 位映像梯级逻辑

978-7-111-36030-8-Chapter04-7.jpg

图4-7 自保持梯级逻辑

这样的情形,也可以用一对锁存和解锁输出指令来编写,如图4-8所示。同样地,锁存条件是A,作用后锁存B;解锁条件是C,作用后解锁B。不同的是梯级结构,A条件和C条件是相互独立和梯级对称的,表达了锁存和解锁的对称关系。

对比这两种做法,我更倾向于后一种,锁存关系就用锁存解锁指令来表达,直截了当,前一种做法带有技巧性,尽管这是众所周知的,没人读不懂。试想一下,如果我们想要了解控制系统中有哪些位具有锁存关系,前一种方式就很难统计出来,而后一种方式则只要用搜索功能搜索OTL指令,搜索结果便将所有的锁存关系列出来了。

细究图4-7和图4-8的梯级逻辑,会发现A和C的操作彼此并不独立,比如在C的解锁条件没有消失的时候,A是没有办法再次锁存的。图4-7的C与A被串联在一个梯级,C不解除,A不起作用;图4-8的C条件位于后面一个梯级,即使A锁存了B,下一个梯级的C马上解锁B,最终送出的还是B被解锁的状态。

978-7-111-36030-8-Chapter04-8.jpg

图4-8 一对锁存和解锁输出指令

OTL指令和OTU指令是可以解决这个问题的,使用锁存解锁指令,通常都要加上ONS指令,如图4-9所示,这样可以使得锁存和解锁两条梯级的执行分别独立。

可以在线测试一下,你会发现未加ONS指令的梯级,如果后级C的梯级条件没有解除,是无法给定A梯级条件锁存B的,因为A将B锁存,也就是B置1之后,紧接着扫描下面一个梯级,C级条件的成立,马上解锁了B,B被置0,直到例程所有的梯级扫描完毕,输出才能送走,所以最终得到的是后一个梯级的结果,即不能锁存的结果。

这样的编程,也许对外部的按钮会有限制,或是要求使用自行释放的开关,操作松开后能回到关闭状态;或是要求使用位置开关,锁存和解锁是选定的位置;或是操作手册要说明操作步骤,如锁存操作之前一定要关闭解锁等。

如图4-9所示的梯级逻辑编程方式完全可以避免后面梯级C条件的影响,因为ONS指令会令C梯级条件在一次扫描之后无效,所以不管C是什么样的状态,A总是能将B锁存,这两个梯级的操作是相互独立的,不会彼此影响。这样位处理的编程,几乎对外部使用什么样的开关按钮没有限制,不管是瞬间的按钮还是固定的按钮,都可以通过编程完成对位地址的锁存或解锁。

978-7-111-36030-8-Chapter04-9.jpg

图4-9 加上ONS指令的锁存解锁指令

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈