1.2.2 PLC的工作原理
PLC通电后,需要对硬件和软件做一些初始化工作。为了使PLC的输出及时地响应各种输入信号,初始化后PLC反复不停地分阶段处理各种不同的任务(见图1-10),这种周而复始的循环工作方式称为扫描工作方式。
图1-10 扫描过程示意图
1.读取输入
在PLC的存储器中,设置了一片区域来存放输入信号和输出信号的状态,它们分别称为过程映像输入寄存器和过程映像输出寄存器。
在读取输入阶段,PLC把所有外部数字量输入电路的通、断状态读入过程映像输入寄存器。外接的输入电路闭合时,对应的过程映像输入寄存器为1状态(或称为ON),梯形图中对应的输入点的常开触点接通,常闭触点断开。外接的输入电路断开时,对应的过程映像输入寄存器为0状态(或称为OFF),梯形图中对应的输入点的常开触点断开,常闭触点接通。
CPU在运行时不会周期性地读取模拟量输入值。当程序访问模拟量输入时,将立即从模块中读取模拟量的转换值。
2.执行用户程序
PLC的用户程序由若干条指令组成,指令在存储器中顺序排列。在RUN模式的程序执行阶段,如果没有跳转指令,CPU从第一条指令开始,逐条顺序地执行用户程序。
在执行指令时,从I/O映像寄存器或别的位元件的寄存器中读出其0、1值,并根据指令的要求执行相应的逻辑运算,运算结果被写入相应的寄存器。因此各寄存器(只读的过程映像输入寄存器除外)的内容随着程序的执行而变化。
在程序执行阶段,即使外部输入信号的状态发生了变化,过程映像输入寄存器的状态也不会随之而变,输入信号变化了的状态只能在下一个扫描周期的读取输入阶段被读入。
3.通信处理
在处理通信请求阶段,CPU执行通信所需的所有任务。
4.CPU自诊断检查
在本阶段,CPU确保固件、程序存储器和所有的扩展模块正常工作。
5.改写输出
CPU在执行用户程序的过程中,将过程映像输出寄存器的值传送到输出模块并锁存起来。梯形图中某一输出位的线圈“通电”时,对应的过程映像输出寄存器中存放的二进制数为1。在改写输出阶段,信号经输出模块隔离和功率放大后,继电器型输出模块中对应的硬件继电器的线圈通电,其常开触点闭合,使外部负载通电工作。
若梯形图中输出点的线圈“断电”,对应的过程映像输出寄存器中存放的二进制数为0,在改写输出阶段,将它送到继电器型输出模块,对应的硬件继电器的线圈断电,其常开触点断开,外部负载断电,停止工作。
CPU在运行时不会周期性地将输出值写入模拟量输出模块。当程序访问模拟量输出点时,输出值被立即写入模拟量输出模块。
PLC在RUN模式时,执行一次图1-10所示的扫描操作所需的时间称为扫描周期,其典型值为1~100ms。指令执行所需的时间与用户程序的长短、指令的种类和CPU执行指令的速度有很大的关系。用户程序较长时,指令执行时间在扫描周期中占相当大的比例。
执行程序时使用过程映像输入/输出寄存器,而不是实际的I/O点,有以下好处:
1)在整个程序执行阶段,各过程映像输入寄存器的状态是固定不变的,程序执行完后再用过程映像输出寄存器的值更新输出点,使系统的运行稳定。
2)用户程序读写过程映像输入/输出寄存器比读写物理I/O点快得多。
3)只能以位或字节的形式访问物理I/O点。但是可以用位、字节、字或双字的形式访问过程映像寄存器。因此过程映像寄存器的使用更为灵活。
6.中断程序的处理
如果在程序中使用了中断,中断事件发生时,CPU停止正常的扫描工作方式,立即执行中断程序,中断功能可以提高PLC对某些事件的响应速度。
7.立即I/O处理
在程序执行过程中使用立即I/O指令可以直接访问I/O点。用立即I/O指令读取输入点的值时,不会更新对应的过程映像输入寄存器的值。用立即I/O指令来改写输出点时,同时更新对应的过程映像输出寄存器的值。
读取模拟量输入时,立即读取相应的值。向模拟量输出写入值时,立即更新该输出。
8.PLC的工作过程举例
下面用一个简单的例子来进一步说明PLC的扫描工作过程,图1-11中的PLC控制系统与图1-9中的继电器控制电路的功能相同。起动按钮SB1和停止按钮SB2的常开触点分别接在编号为0.1和0.2的输入端,接触器KM的线圈接在编号为0.0的输出端。如果热继电器FR动作(其常闭触点断开)后需要手动复位,可以将FR的常闭触点与接触器KM的线圈串联,这样可以少用一个PLC的输入点。
图1-11 PLC外部接线图与梯形图
图1-11梯形图中的I0.1与I0.2是输入变量,Q0.0是输出变量,它们都是梯形图中的编程元件。I0.1与接在输入端子0.1上的SB1的常开触点和过程映像输入寄存器I0.1相对应,Q0.0与接在输出端子0.0上的PLC内的输出电路和过程映像输出寄存器Q0.0相对应。
梯形图以指令的形式存储在PLC的用户程序存储器中,图1-11中的梯形图与下面的4条指令相对应,“//”之后是该指令的注释。
图1-11中的梯形图完成的逻辑运算为
在读取输入阶段,CPU将SB1和SB2的常开触点的接通/断开状态读入相应的过程映像输入寄存器,外部触点接通时,将二进制数1存入过程映像输入寄存器,反之存入0。
执行第一条指令时,从过程映像输入寄存器I0.1中取出二进制数,并存入堆栈的栈顶,堆栈是存储器中的一片特殊的区域,其功能和结构将在3.3节中介绍。
执行第二条指令时,从过程映像输出寄存器Q0.0中取出二进制数,并与栈顶中的二进制数相“或”(触点的并联对应于“或”运算),运算结果存入栈顶。运算结束后只保留运算结果,不保留参与运算的数据。
执行第三条指令时,因为是常闭触点,取出过程映像输入寄存器I0.2中的二进制数后,将它取反(即作“非”运算,将0变为1,1变为0),再与前面的运算结果相“与”(电路的串联对应“与”运算),然后存入栈顶。
执行第四条指令时,将栈顶中的二进制数传送到Q0.0的过程映像输出寄存器。
在修改输出阶段,CPU将各过程映像输出寄存器中的二进制数传送给输出模块并锁存起来,如果过程映像输出寄存器Q0.0中存放的是二进制数1,外接的KM线圈将通电,反之将断电。
I0.1、I0.2和Q0.0的波形图中的高电平表示按下按钮或KM线圈通电,当t<t1时,读取的过程映像输入寄存器I0.1和I0.2的值均为二进制数0,此时过程映像输出寄存器Q0.0中存放的亦为0,在程序执行阶段,经过上述逻辑运算过程之后,运算结果仍为Q0.0=0,所以KM的线圈处于断电状态。在t<t1时,虽然输入、输出信号的状态没有变化,用户程序仍一直反复不停地执行着。t=t1时,按下起动按钮SB1,I0.1变为ON,经逻辑运算后Q0.0也变为ON。在输出处理阶段,将Q0.0对应的过程映像输出寄存器中的数据1传送给输出模块,输出模块中与Q0.0对应的物理继电器的常开触点接通,接触器KM的线圈通电。
9.输入/输出滞后时间
输入/输出滞后时间又称为系统响应时间,是指PLC的外部输入信号发生变化的时刻至它控制的有关外部输出信号发生变化的时刻之间的时间间隔,它由输入电路滤波时间、输出电路的滞后时间和因扫描工作方式产生的滞后时间这3部分组成。
数字量输入点的滤波器用来滤除由输入端引入的干扰噪声,消除因外接的机械触点动作时产生的抖动引起的不良影响,滤波器的延迟时间可以用系统块来设置。
输出模块的滞后时间与模块的类型有关,继电器型输出电路的滞后时间一般在10ms左右;场效应晶体管型输出电路的滞后时间最短为微秒级,最长的为200μs(见表1-5)。
由扫描工作方式引起的滞后时间最长可达2~3个扫描周期。
PLC总的响应延迟时间一般只有几毫秒至几十毫秒,对于一般的系统来说是无关紧要的。要求输入/输出滞后时间尽量短的系统,可以选用扫描速度快的PLC或采用硬件中断和立即输入/立即输出等措施。
视频“学习PLC的关键是动手”可通过扫描二维码1-3播放。
二维码1-3