PLC基础知识整理2——PLC运行原理

  • A+
所属分类:IT技术

PLC基础知识整理2——PLC运行原理

PLC结构图中,左右两侧为设备实体,当按下触点或者按钮时,输入区数据变化,PLC程序执行时首先读入输入区数据,经过逻辑处理,输出到输出区,触发相关联的线圈等实体做出动作,进而控制实体设备(如线圈得电后,继电器上的触点变化,改变电路状态)

PLC的CPU中有两类程序:

1、   一类是操作系统,它由PLC的厂家设计并在出厂前固化到CPU中;

2、   另一类是用户程序,它是由编程人员根据实际需要设计的、完成特定功能的程序;

操作系统预留一些接口(Interface)给用户程序。通过这些接口,操作系统可以控制用户程序的执行。一般有两种接口:主程序接口和中断程序接口。

  • 主程序接口是正常情况下用户程序运行的起点。PLC的这种设计思想与计算机编程是一样的。我们知道,在C语言的编程中,程序的运行起始于Main函数。在Main函数中,按照从上到下的顺序依次执行代码。Main函数是操作系统执行用户程序的接口。在西门子S7-300/400系列PLC中,程序的运行起始于组织块OB1。OB1就相当于C语言的Main函数;在S7-200 smart中,更是直接把OB1称为Main块。如果程序比较复杂,还可以把一些常用的功能设计成模块,以便重复利用。这些小的模块称为子程序。子程序存在于主程序中,操作系统通过调用主程序,就能让子程序也得到运行。在S7-300/400中,子程序包括FB和FC。
  • 除了主程序接口,PLC还提供中断程序的接口。比如S7-300/400系列PLC的组织块OB35(循环中断)、OB40(硬件中断)、OB82(诊断中断)、OB122(IO访问故障中断)等等。中断程序接口中的程序,称为“中断处理程序”,中断处理程序由用户自己编写。PLC在运行的过程中如果检测到中断请求,操作系统会暂停当前用户程序的执行,转而去寻找中断程序的接口,以执行相应的中断处理程序。以S7-300/400为例:当PLC检测到外围IO访问出现故障时,会调用OB122来进行处理。如果此时程序中没有添加OB122,CPU将会停机;如果添加了OB122但是没有写任何代码(没有中断处理程序),CPU将会继续运行,但是SF灯会亮起,以提示系统存在故障。中断的执行是有优先级的,优先级高的中断会被优先响应;中断也可以嵌套,这也意味着高优先级的中断会打断低优先级的中断;

从上面描述的主程序接口及中断程序接口,我们可以看出:操作系统是PLC的大管家,是它控制着用户程序的执行及中断的响应。其实,PLC的操作系统在执行用户程序之前,还要做一些其它工作,如下图:

PLC基础知识整理2——PLC运行原理

PLC在冷启动或热启动后,会执行启动扫描。在这个步骤中,可以对一些变量进行初始化。启动扫描仅在每次启动后执行一次,在S7-300/400系列PLC中,OB100(暖启动)、OB101(热启动)和OB102(冷启动)是用于启动扫描的组织块。

1、输入处理

可编程控制器在执行程序前,将可编程控制器的所有输入端子的ON/OFF状态读入输入映像区,程序执行过程中即使输入发生变化,输入映像区的内容也不会变化,在执行下一个循环的输入处理时读取该变化。这里要注意,仅读取数字量输入信号,不包括模拟量输入信号。当数字量输入信号的状态读取到输入缓存区后,便开始执行用户程序。

2、程序处理

plc根据程序内存中的指令内容,从输入映像区和其他软元件的映像区中读出各软元件的ON/OFF状态,然后从0步依次开始运算,并将每次得出的结果写入到映像区中。因此,各软元件的映像区随着程序的执行逐步改变其内容,此外,输出继电器的内部触点根据输出映像区的内容而执行动作。在用户程序执行的过程中,如果需要数字量输入信号,CPU将会从输入映像区中读取,而不是到外部设备去获取信号。但是,如果需要模拟量输入信号,将会直接到外部模拟量传感器进行读取。

将数字量输入信号读取到输入映像区中有以下几个好处:

  • 在当前的扫描周期中,信号的值被固定。外部的信号抖动不会干扰程序的执行结果;
  • 输入映像区读取的速度比直接读取外部信号值要快的多,有利于程序的快速执行;
  • 外部的数字量输入信号只能以“位(bit)”的方式进行访问,但是当信号读取到输入映像区后,可以“位(bit)”、“字节(byte)”、“字(word)”和“双字(double word)”等方式进行访问,程序的编写更加灵活;

3、输出处理

所有指令执行结束后, ON/OFF状态会传送至输出锁存内存,这个就作为可编程控制器的实际输出。对于数字量输出信号,用户程序执行的结果被存放在输出锁存内存(output image)中。当用户程序执行完成后,操作系统将存放在输出锁存内存的运算结果,刷新到数字量的输出模块中。对于模拟量的输出,不存放到输出锁存内存,而是会在程序执行的过程中直接将结果输出到外围设备中。

执行以一次动作所需要的时间就是运算周期也叫扫描时间.

Qt大课堂-QtShare

发表评论

您必须登录才能发表评论!