前面我们已经学习了PLC的基本组成和各个部分的作用,CPU在整个控制过程中起着很重要的作用。我们知道计算机工作时,开机之后,先进行自检、软件启动,再进行具体的应用软件。那么,PLC中CPU到底是怎么工作的呢?
PLC的CPU采用循环扫描的工作方式。一般包括五个阶段(见图3-11):内部自诊断与处理、与外设进行通信、输入采样、用户程序执行和输出刷新。当开关处于STOP时,只执行前两个阶段:内部自诊断与处理及与外设进行通信。
学习完本节之后,要知道PLC的工作过程是什么,而且要知道在每一点具体的任务是什么。重点是公共处理部分和程序执行方面。公共处理部分和PC的扫描过程是一样的,PC是把BIOS上的设置来和主板上的CPU、内存、硬盘、磁盘、光盘、光驱进行扫描,如果发现没有装内存条,它就会发出声音报警。而PLC是把系统管理程序调出来后检查硬件,如果发现某个硬件有问题(例如CPU有问题),它会提出一个报警。异常报警另外一个问题就是延时,当程序的处理时间超过了规定的时间,PLC就会停下来。
图3-11 PLC扫描工作原理
1.信号传递过程(从输入到输出)
信号传递过程(从输入到输出)如图3-12所示。
(1)I/O刷新阶段——CPU从输入电路的输出端读出各路状态,并将其写入输入映像寄存器。(PLC的I/O刷新不是只进行输入刷新或者输出刷新,而是输入/输出一起刷新。刷新之后再进行程序执行,程序执行完之后再进行I/O刷新。)上面是三个部分,不是在一个扫描周期就完成三个部分,而是只完成两个部分。扫描过程是个循环扫描的过程。就像C语言里面的死循环。其实,PLC是在反复不停的做I/O刷新和程序执行。输入端就是输入接口。输入电路在之前已经讲过,有直流输入和交流输入。从上面的讲解过程,希望大家明白两点:一是输入和输出都有一个映像,也就是说都需要一个辅助手段;二是它的整个过程就是反复进行I/O刷新、程序执行。
图3-12 信号传递过程(从输入到输出)
(2)程序执行阶段——CPU从输入映像寄存器和元件映像寄存器(输出映像寄存器)中读出各继电器的状态,并根据此状态执行用户程序,执行结果再写入元件映像寄存器。
(3)下一个I/O刷新阶段——将输出映像寄存器的状态写入输出锁存电路,再经过输出电路传递到输出端子,从而控制外接电路动作。
所以在以后考虑一个程序的运行时间和运行周期就有个基础了。
2.输入和输出映像寄存器
在程序的执行过程中,对于输入或输出的存取通常是通过映像寄存器,而不是实际的输入/输出(I/O)点,这主要有三个原因:
(1)在同步扫描周期的开始采样所有输入,这样,在扫描周期的执行阶段就有了固定的输入值,当程序执行完后,更新输出映像寄存器,使系统有稳定效果。
(2)用户程序存取映像寄存器要比存取I/O点快得多,因此,允许快速执行程序。
(3)I/O点必须按位来存取,而映像寄存器可按位、字节、字或双字来存取,因此具有灵活性。
3.死循环诊断功能
PLC内部设置了一个监视定时器WDT,其定时时间可由用户设置为大于用户程序的扫描周期,PLC在每个扫描周期的公共处理阶段将定时器复位。
在正常情况下,监视定时器不会动作,如果由于CPU内部故障使程序执行进入死循环。那么,扫描周期超过监视定时器的定时时间时,监视定时器动作,运行停止,以提示用户(C语言中的死循环是在局部的死循环,而且不会有程序来限定它停止。而这里要发生死循环的话,整个机器都会受到影响。因此必须要设定一个监视器)。
S7-200CPU的操作非常简单。
S7-200在程序的控制逻辑中不断循环,读取和写入数据。当将程序下载至PLC并将PLC放置在RUN(运行)模式时,PLC的中央处理器(CPU)按下列顺序执行程序:
◆ S7-200读取输入状态。
◆ 存储在S7-200中的程序使用这些输入评估(或执行)控制逻辑。
◆ 当程序经过评估,S7-200将程序逻辑结果存储在称为输出映像寄存器的输出内存区中。
◆ 在程序结束时,S7-200将数据从输出映像寄存器写入至输出。
◆ 重复任务循环。
以下是显示电气继电器图形与S7-200关系的简单图形(见图3-13)。在该范例中,启动电动机的开关状态与其他输入的状态相结合。因此,这些状态的计算决定进入启动电动机的启动装置的输出状态。
S7-200反复执行一系列任务。该循环执行任务被称为扫描周期。如图3-14所示,S7-200在扫描周期过程中执行大多数或全部下列任务。
◆ 读取输入:S7-200将实际输入状态复制至输入映像寄存器。
◆ 在程序中执行控制逻辑:S7-200执行程序的指令,并将数值存储在不同的内存区。
◆ 处理所有通信请求:S7-200执行点到点或网络通信要求的所有任务。
◆ 执行CPU自测试诊断程序:S7-200保证硬件、程序内存和所有扩充模块均正常作业。
◆ 向输出写入:存储在输出映像寄存器中的数值被写入实际输出。
注意:
扫描周期的执行取决于S7-200是位于STOP(停止)模式还是RUN(运行)模式。在RUN(运行)模式中,程序被执行;在STOP(停止)模式中,程序不被执行。
图3-13 继电器与S7-200关系
图3-14 S7-200扫描周期
一般程序就是输入、处理、输出,要经过这三个过程,不花费时间是不行的。而且输入部分和输出部分都有可能带有机械部分,机械部分绝对不像电路那样处理速度那么快,例如,它的开关必须有个吸合过程。这个时间就会影响输入到输出的时间。扫描的时间一般很快,但是语句如果很长的话,处理也就慢了。
1.I/O滞后现象的原因
(1)输入滤波器有时间常数(虽然已经合上了开关,但是要到公共的时间才开始采样,这个是由于输入采样引起的)。
(2)输出继电器有机械滞后(为什么不在输入的地方讲到输入机械滞后?实际上,我们考虑问题不是考虑某个端口在输入之后,然后再动作,而是已经有触点动作之后到输出。输出有线圈的吸合过程,需要几毫秒)。
(3)PLC循环操作时,进行公共处理、I/O刷新和执行用户程序等产生扫描周期。
(4)程序语句的安排,也影响响应时间(同样一个程序,如果把顺序调换以下,虽然结果是一样的,但是中间的响应时间是不一样的)。
2.I/O响应时间
从输入触点闭合到输出触点闭合有一段延迟时间,称为I/O响应时间(I—处理—O,显然这个时间是比一个扫描周期要长)。
(1)最小I/O响应时间(见图3-15)
图3-15 最小I/O响应时间
(2)最大I/O响应时间(见图3-16)
图3-16 最大I/O响应时间
3.如何理解程序语句安排影响扫描时间(见图3-17)
图3-17 语句安排影响扫描时间示意图
从图3-17中可以看出,执行的顺序应该是I0.0—M0.0—Q0.1、Q0.2。
大部分情况下,我们是根据功能来做的,当然也会适当考虑怎样做响应速度才能较快。
PLC计数有如下两种方式。
1.高速计数
在高速计数方式下,输入信号不经输入滤波就直接送到CPU,计数不受输入滤波器时间常数、扫描周期的影响,计数频率可以很高。
2.普通计数
在普通计数方式下,输入信号经输入滤波器后在PLC扫描周期的I/O刷新阶段被CPU读入。因此,计数频率受输入滤波器时间常数和扫描周期的限制,不可能很高。
为了保证CPU能够可靠地读入开关接通或断开的状态,不丢失脉冲数,输入滤波后的信号有效高电平和低电平持续时间不能少于一个扫描周期,即应满足:
T′≥τ+T S
式中:T′——输入开关接通或断开的时间;
τ——输入滤波器时间常数;
T S— —PLC的扫描周期。