APP下载

基于PLC的程序扫描顺序探究

2019-07-19王治学

价值工程 2019年7期

王治学

摘要:由于PLC工作原理是集中输入,集中输出的,导致同一个程序的不同书写顺序就可能会出现运行结果的改变,甚至会引发安全问题,这就需要引起程序设计者的高度重视。以S7-200 PLC的梯形图为例,用实际工作中的任务为载体,探索和研究基于PLC的程序扫描顺序,把微观世界的概念转变到宏观世界中来,提高了从业者的认识,从而保证工业控制的正常安全进行。

Abstract: Because the working principle of PLC is centralized input and output, the different writing order of the same program may change the result of operation, and even cause security problems, which requires the attention of programmers. Taking the ladder diagram of S7-200 PLC as an example, this paper explores and studies the sequence of program scanning based on PLC with practical tasks as the carrier, transforms the concept of micro-world into macro-world, improves the awareness of practitioners, and ensures the normal and safe operation of industrial control.

關键词:扫描顺序;PLC;工业控制

Key words: scanning sequence;PLC;industrial control

中图分类号:U412.6                                       文献标识码:A                                  文章编号:1006-4311(2019)07-0160-03

0  引言

PLC(可编程控制器)是工业控制设备中不可或缺的核心,通过执行用户下载的程序起到对硬件设备的控制作用。PLC在发出控制信号之前首先对程序进行读取和计算,它是按照一定的顺序来扫描和执行用户程序的,同一个程序的不同书写顺序就可能会导致运行结果的改变,即使这些程序是并行的。轻者会导致运行不通畅,严重的可能会引发安全问题。由于PLC的计算速度比常人快得多,我们可以认为其对程序的扫描是“微观”世界的概念,但是作为“宏观”世界的程序设计者必须对其详尽的了解,以防止出现不必要的麻烦。以西门子S7-200 PLC的梯形图程序为例进行分析与研究。

1  PLC程序扫描顺序分析

1.1 PLC工作原理分析

PLC对于梯形图的扫描是一个循环的过程,不是扫描一遍就停止了。它是按照从上到下,从左到右为序扫描梯形图的,并且是集中输入,集中输出的。它不会扫描完一条网络就执行这条网络的功能,而是把所有的网络都扫描读取完再同时执行功能。

我们把PLC从头到尾扫描一遍程序所用的时长叫做一个扫描周期。每个扫描周期可以分为:输入采样阶段、用户程序执行阶段和输出刷新阶段。扫描周期开始时PLC首先是输入采用阶段,读取输入端子状态并存入输入映像寄存器中。在进入用户执行阶段时,即使外部输入改变,也不会影响到输入映像寄存器的数据,直到下一扫描周期的输入采样阶段。整个扫描周期程序的执行过程如图1所示。

在用户程序执行阶段,所有输入端子的状态存入输入映像寄存器中,与元件映像寄存器的当前状态进行计算,把计算结果再存入元件映像寄存器覆盖之前的数据;在输出刷新阶段,元件映像寄存器中所有输出状态转存到输出锁存器中,当输出锁存器输出时就可以驱动外部负载了。

输出映像寄存器即元件映像寄存器中Q寄存器的状态,运行结果写入元件映像寄存器中,而需要向外输出的信号则存入输出映像寄存器。这个结果在全部程序未执行完毕之前不会送到输出端口上。

1.2 扫描顺序影响的分析

举例说明如图2所示,从表面上看其功能为:当输入I0.0触点闭合时,输出负载Q0.0和Q0.1会被激励;当输入I0.0触点断开时,输出负载Q0.0和Q0.1会恢复到原来的状态。由于程序扫描和执行顺序的存在,这两个输出并不是肉眼看到的同时亮,同时灭的。而是当I0.0闭合时,Q0.0比Q0.1晚点亮一个扫描周期;当I0.0断开时,Q0.0比Q0.1早灭一个扫描周期。但是,这两个输出被激励的时间是和触点I0.0闭合的时间一样长的。

分析原因:当I0.0闭合时,PLC需要从上而下扫描梯形图,也就是先扫描网络1,此时由于PLC没有得到M0.0线圈得电的消息,所以它会认为网络1中M0.0的常开触点不能闭合,也就会导致线圈Q0.0没有得电;当进行到网络2时发现I0.0已闭合,能流可以流到M0.0的线圈,因此M0.0线圈得电,M0.0线圈对应的触点就会动作;网络3的常开触点就会闭合,导致能流流过Q0.1线圈,Q0.1得电。此时PLC输出时只有Q0.1亮,而Q0.0不亮,但是它会在一个扫描周期之后亮起来,因为PLC已经知道了线圈M0.0得电的消息。当I0.0触点恢复到常开状态时,网络3中的常开触点比网络1中的先断开一个扫描周期,导致Q0.1比Q0.0先灭一个扫描周期。因为扫描到网络1的触点时,PLC还不知道I0.0断开的消息,所以这个周期内Q0.0不会灭。经过读取网络2中I0.0的状态得出M0.0线圈失电,其处于网络3的对应触点恢复原来状态,Q0.1因为没有能流经过而灭掉。所以输出的状态是Q0.0亮,而Q0.1灭。特别注意的是:先亮的先灭,后亮的后灭,总体时间是一样的,不会因为先后的顺序而不同。

2  扫描顺序研究价值分析

扫描顺序的存在不但会出现如图2所示的程序那样产生先后顺序,而且可能会影响输出负载的正常驱动,从而影响实际的工作。以PLC控制三相异步电动机的星角降压启停控制为例来分析,输入输出配置如表1所示。设计要求为:点动启动按钮后,电机接触器和星形接触器得电吸合,电动机以星形连接方式运转,3秒后星形接触器失电断开,角形接触器得电吸合,电动机进入角形连接方式运行,整个运行过程带自锁保护。点动停止按钮后电动机停止工作,参考程序如图3所示。

如果不考虑扫描周期的影响,点动启动按钮I0.4,电机接触器Q0.0和星形接触器Q0.1得电,同时网络3中的定时器开始计时;3秒后网络2的T37常闭触点断开导致星形接触器Q0.1失电,同时网络4中T37的常开闭合导致角形接触器Q0.2得电,电动机顺利地从星形运转变为角形运转,完成设计要求。

但是,正是由于PLC特有的扫描顺序,按照这个程序的设计方法,电动机是不可能完成正常的星角降压转换的。电动机从静止状态到星形运转状态这一步是没有问题的,问题就出现在定时器计的当前值计到30的那一个扫描周期。当定时器计到时,对应的触点都要动作,PLC先扫描到的是其在网络2中的常闭触点,由于还没有扫描到T37的指令盒,所以只能认为常闭触点还不具备断开条件,即Q0.1依旧是得电状态,这就使网络4中Q0.1的常闭触点一直处于打开状态,与Q0.2形成互锁,这个触点不恢复状态Q0.2是永远也不能得电的;当PLC扫描到网络3中定时器的常闭时,同网络2一样没有变化,也就不会导致指令盒断电;一直扫描到最右端发现定时器的当前值等于设定值了,其所有对应的触点都要变化;与前两个网络不同的是,网络4中的T37常开要闭合,因为Q0.1的触点处于打开状态,能流不可以流到最后的线圈,所以Q0.2的线圈不得电。这个扫描周期输出的结果是:Q0.0和Q0.1得电,Q0.2不得电。

当下一个扫描周期到来时,网络2中T37常闭断开,Q0.1失电,其网络4中对应触点恢复闭合状态;网络3中的T37触点也一样会断开,导致能流不能达到T37指令盒的使能端,使能端子断开失电后会使所有的触点状态复原。之后的T37触点都要恢复到原来的状态;网络4中在上一个扫描周期刚刚闭合的T37触点又恢复原来状态了,网络4没有能流,Q0.2也就没有得电。这个扫描周期输出的结果是:Q0.0得电,Q0.1和Q0.2不得电。再下一个扫描周期到来时,由于T37的指令盒使能端断开,所有对应触点恢复原来状态,导致只有Q0.0输出有电,其余输出都没电,此程序不能完成星角降压的启动。

究其原因,凡是位置处在指令盒(或线圈)前面的触点都比其会晚一个扫描周期动作,而处在后面的触点会在同一周期动作,这就是不能同步的原因。要么都在前面,要么都在后面才能同时动作,避免问题的出现。通过实验验证,把网络3和网络4交换位置之后的程序可以正确实现功能,因为所有的触点都在定时器指令盒的前面了,Q0.2线圈所在网络中的T37触点闭合和Q0.1触点回复原状是在一个扫描周期中进行的,这就是Q0.2线圈得电的条件。

为了保证运行的安全,星角降压是必须要互锁星形和角形两个接触器的。编程的初学者会可能会犯一个错误,就是在图3程序的基础上去掉Q0.1的常闭触点。这样虽可以实现星角的切换,但是会使星角这两个接触器同时得电,肉眼不能看到同时得电的现象不代表在微小的时间段内不发生该现象。如图4所示,可加入新的网络进行验证。把星和角的常开触点串联,后面连接一个输出Q0.3,并把它置位,运行程序时就会发现这个输出亮起来了,证明星角接触器同时得电了,要避免此类危险事情的发生。

3  结论

通过对电动机星角降压启停控制这个实际问题进行程序的编写与研究,进一步明确了PLC的工作原理和程序的扫描顺序。掌握好PLC的程序扫描顺序是一个从事工控编程者通往上层境界的必经之路,否则会导致程序在运行的过程中出现难以预料的结果,甚至出现安全问题。对PLC程序扫描顺序的研究具有推广价值。

参考文献:

[1]SINMENS SIMATIC S7-200用户手册[M].2016.

[2]梁江平.PLC扫描周期分析法程序设计[J].南方农机,2017(7):118-121.

[3]靳哲.可编程控制器原理与应用[M].北京:北京师范大学出版社,2013.

[4]张永飞.PLC程序设计与调试[M].大連:大连理工出版社,2015.