摘要:在平常编程当中,咱们可能会碰到下面这些差不多的状况:就比如说,给某个 Y 点设定的输出条件都已经导通了,可 Y 点就是不输出;再或者给一个寄存器赋值以后,这个寄存器一开始保存的数据根本不是咱们给它的那个值;另外呢,还可能会有各种各样奇奇怪怪的现象。
导读
在现场程序运行的时候,如果有异常情况出现,学会分析扫描周期那可是相当重要的。
在平常编程当中,咱们可能会碰到下面这些差不多的状况:就比如说,给某个 Y 点设定的输出条件都已经导通了,可 Y 点就是不输出;再或者给一个寄存器赋值以后,这个寄存器一开始保存的数据根本不是咱们给它的那个值;另外呢,还可能会有各种各样奇奇怪怪的现象。
而这些异常,很大程度上是由程序扫描周期所导致的,具体情形如图 1 所示
1,PLC工作过程
碰到上面说的这些情况,咱们首先得把 PLC 的工作过程还有程序执行扫描的原理弄明白,这样才能好好去分析这些问题。
PLC 的工作过程主要分成五个部分,分别是内部处理、通信服务、输入处理、程序处理还有输出处理,具体的详细情况就像图里展示的那样。
扫描周期,扫描过程:
自诊断—>通讯处理—>输入采样—>程序扫描—>输出刷新
a、自诊断:
CPU对PLC内部进行检查,如果出现异常PLC面板上的ERROR字样LED灯将别点亮
b、通讯处理:
CPU检查有无通信任务,如果有则调用相应进程,完成与其他设备的通信处理,并对通信数据做相应处理;如果没有则跳过。
c、输入采样:
PLC扫描所有输入IO口,并将各输入端的通/断状态存入相对应的输入映像寄存器中,刷新输入映像寄存器的值。
d、程序扫描:
当PLC运行到此状态时,才真正的处理我们写的程序,扫描从上到下、从左到右,并进行运算处理(指令的完成)。
e、输出刷新:
该步骤进行的是将程序扫描的运算结果输出到设备或者IO口中。在输出刷新阶段结束后,CPU进入下一个循环扫描周期。
当完成上诉的五个步骤后,才算完成一整个扫描周期,当PLC没有停止时会不断的循环进行扫描。扫描周期的长短由CPU处理速度和程序量决定。
PLC处在RUN和STOP状态的扫描周期不一样。STOP中的扫描周期只在内部处理和通信服务两个步骤循环进行;而处在RUN状态时,才是完整的一个扫描周期。
2.内部处理
这一环节主要包括系统初始化、软元件复位、自诊断还有执行内部工作任务这些。通过全面又仔细的自我检查,看看是不是有错误,用这个来保证系统能够稳稳当当、可靠地运行。比如说,在系统启动的时候,对各种各样的寄存器、计数器之类的软元件进行复位操作,保证它们的初始状态是对的,给后面程序的执行打下基础。
3.通信服务这个阶段主要是管和外部设备进行通信连接的。就像,和电脑软件建立通信,能实现监控画面实时更新,让操作人员可以及时知道 PLC 的运行情况;再比如,PLC 和触摸屏之间的通信,能让触摸屏上的显示内容一直刷新,给用户提供一个直接又方便的交互界面。拿工厂的自动化生产线来说,工程师能够通过电脑软件远程监控 PLC 控制的设备运行参数,而现场的操作人员也能通过触摸屏随时查看设备状态并且进行操作。
4.输入处理
在这一步里,PLC 会按照顺序把所有输入端口的状态和数据都读进来,然后把这些信息存到 I/O 映象区的映像寄存器里面。
简单点说,这就好像把 PLC 外面的按钮、开关等设备的实时状态,全都准确无误地读到 PLC 里面。
举个例子,如果外面有一个控制电机启停的按钮,当按钮按下或者松开的时候,它的状态变化会被 PLC 很快地读进来并且存起来,给后面的程序处理提供依据,紧接着就会进入下一个工作环节——程序处理。
5.程序处理
程序处理的执行顺序是按照“由上而下、从左到右”这个重要原则来的。不同牌子和型号的 PLC,它们的扫描周期是不一样的,比如说三菱 FX3U PLC,一个扫描周期一般是 10 毫秒。在扫描的时候,PLC 会特别严格地按照规定好的顺序,一行一行、一步一步地对程序进行扫描。
打个比方,要是程序里有一连串的逻辑运算和控制指令,PLC 就会从程序开始的地方出发,先扫描第一行左边的指令,做完运算和处理之后,再接着往右扫描这一行的其他指令,然后再到下一行,就这么一直循环下去,一直到把整个程序都扫描完。完成一次完整的程序扫描,这就算是一个扫描周期。
6.输出处理
PLC 会按照 I/O 映象区里相对应的状态,一起对所有输出锁存电路做刷新操作。
接着,把这些处理完的信号传到各个对应的输出端子,然后通过外部电路让实际的负载开始工作。要特别留意的是,除了平常的输出处理办法,有些有中断功能的输出,只要触发了中断条件,就会马上进行输出,不用等着整个程序扫描完。比如说,在紧急制动系统里,要是检测到异常情况触发了中断信号,PLC 就会马上输出制动控制信号,保证设备和人员的安全。
接下来,重点详细说一说程序的输入处理、程序扫描和输出处理:当外面的按钮按下,开关量信号会接到 PLC 的输入模块里。拿三菱 FX3U PLC 来说,输入模块会把信号传给 PLC 内部的输入映像区,这个过程大概需要 10 毫秒。输入处理完成以后,就进入程序扫描阶段了。程序扫描需要的时间和程序的长度关系很大,程序越长,扫描周期也就越长,不过常见的程序扫描周期一般在 10 毫秒以内。
扫描的时候严格按照从上往下、从左往右的顺序来。程序扫描结束以后,各个输出的状态会被传到输出映像区,用这个来控制负载做出相应的动作。
PLC 就是像这样不停地重复执行这几个关键的过程,具体的流程就像图里显示的那样:
程序扫描分析
接下来,咱们通过一个简单的例子来好好了解一下程序扫描的过程,具体例子的图示在下面:
7,程序扫描分析
下面咱们通过一个简单的例子来分析一下程序扫描的过程。假设在某个时候,按钮 X0 被按下去了。这时候,输入映像区不会马上就收到 X0 的信号。
然后就进入程序扫描阶段了,这次程序扫描包括下面这 4 个步骤:
1. 扫描 M0 常开触点,因为还没有能让 M0 导通的条件,这会儿这个触点是断开的。
2. 扫描 Y0 线圈,由于前面 M0 常开触点是断开的,条件不满足,所以 Y0 线圈没有输出。
3. 扫描 X0 常开触点,因为输入有延时,这时候 X0 触点还没导通。
4. 扫描 M0 线圈,因为没有能触发导通的因素,这时候 M0 线圈是断开的。
经过这一轮扫描,输出映像区里 Y0 没有输出,跟它连着的指示灯当然就不亮。假设 PLC 的扫描周期是 10 毫秒,在按钮按下 10 毫秒延时之后,输入映像区成功收到了 X0 的信号,接着就开始新一轮的程序扫描,这一轮扫描也是分成 4 步:
1. 扫描 M0 常开触点,状态还是断开的。
2. 扫描 Y0 线圈,因为 M0 常开触点断开,Y0 线圈没有输出。
3. 扫描 X0 常开触点,这时候输入映像区已经有信号了,X0 触点导通了。
4. 扫描 M0 线圈,根据现在的条件,M0 线圈导通了。
但是,最后把 Y0 输出更新到映像区的时候,Y0 还是没有输出,指示灯还是不亮。当 PLC 进入下一个扫描周期:
1. 输入映像区一直收到 X0 的信号。
2. 执行程序扫描,先扫描 M0 常开触点,因为上一个扫描周期 M0 线圈导通了,所以这时候 M0 常开触点是导通的。
3. 扫描 Y0 线圈,因为 M0 常开触点导通,Y0 线圈有输出了。
4. 扫描 X0 常开触点,输入映像区的信号一直都在,X0 触点保持导通。
5. 扫描 M0 线圈,M0 线圈还是导通。最后把 Y0 输出更新到映像区,这时候 Y0 有输出了,指示灯成功亮起来了。
从这就能看出来,从按钮按下到指示灯亮起来,需要经过 1 个 10 毫秒的延时,再加上 2 个扫描周期。假设 PLC 的扫描周期大概是 10 毫秒,那么在按钮按下 30 毫秒之后,指示灯 Y0 才会亮起来。当按钮松开的时候,它的扫描周期也值得分析分析。
通过上面说的这些,咱们对扫描周期已经有个初步的认识了。
速学!三菱扫描周期分析的门道与技巧
http://bbs.plcjs.com/forum.php?mod=viewthread&tid=506521&fromuid=1
来源:PLC技术玩