本章节大部分内容参考《汇川小型PLC指令及编程手册》P16页第一章节,将手册内容列出有助于初学者理解
可编程逻辑控制器是种专门为在工业环境下应用而设计的数字运算操作电子系统。它采用一种可编程的存储器,在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,通过数字式或模拟式的输入输出来控制各种类型的机械设备或生产过程。——百度百科
一般的小型PLC硬件框架使用的大都是MCU+FPGA的架构,其中MCU负责写一些功能型的东西,通信协议的实现,指令系统的嵌入等等。FPGA是用来处理高速信号处理有关的,比如高速脉冲输出高速脉冲捕获等功能的实现。
一般MCU,可以理解成单片机类的芯片。现在有很多功能已经很强大,处理速度很快的单片机芯片了。我对PLC的理解就是在单片机的基础上封装了一层PLC嵌入式系统,让单片机具备了PLC的功能。也就是说PLC的底层,实际上就是单片机或者其他高级一点的芯片。那么我们为什么不直接使用单片机去做工程项目呢?原因是工程项目要求稳定性高,开发周期要尽量快。而直接使用单片机进行开发对于开发人员要求高,项目复杂度会很高,复杂难做,开发周期很长。于是出于简单易用方面的考虑,PLC就诞生了,在单片机的基础上封装了一层,使得其编程更加简单便捷,易用性更高。
我们在做项目的时候偶尔会遇到一个词:刷固件。这里说的刷固件,其实指的就是刷底层系统程序(一般在底层有bug,需要升级的时候做的工作)。
上面第二部分说到,PLC实际上硬件底层使用的就是单片机,PLC底层单片机中嵌入了研发做的PLC嵌入式操作系统(指令系统),这套嵌入式系统就是PLC的系统程序。举个例子:咱们的个人电脑上面跑的操作系统要么是Windows要么是linux或者Mac OS系统(应该还有其他专用系统),而这个系统就是跑在咱们电脑这个硬件架构中的系统程序。而我们每个人的电脑中都或多或少的装了一些应用软件,这些软件就是跑在这个操作系统上的用户程序。
同样的道理,跑在PLC硬件底层上的程序就是PLC自己的嵌入式操作系统程序,而我们做工程项目的工程师写的代码是跑在PLC嵌入式操作系统上的,也就是可以称为用户程序。这里PLC的编程语言也有很多种,目前PLCopen这个组织搞了一套IEC61131-3编程标准,标准中规范了六种编程语言:结构化文本(ST)、功能块图表(FBD)、指令列表(IL)、梯形图(LD)、顺序功能图(SFC)和IEC61131-3 扩展编程语言连续功能图(CFC)——目前有个基本概念即可……
其中汇川技术中型PLC以上机型支持PLCopen规范的6种编程语言,而H123U/H123S小型PLC仅支持梯形图、指令列表、顺序功能图(SFC)这三种编程语言。这些编程语言写出来的跑在PLC中的程序,都是用户程序。
我们公司员工一般中型PLC喜欢单纯用ST文本编程,小型PLC用梯形图编程。而我们应用PLC给客户做OEM设备的时候,写的就是应用层用户程序(用户项目程序)。我们的底层系统程序是由PLC研发人员进行编程开发的,这些研发攻城狮就是系统程序开发者。
PLC中梯形图编程方法是仿传统继电器控制系统的电气原理设计的一种设计方法,设计中使用的元件如按钮开关X、中间继电器M、时间继电器T、计数器C、触点等,都和实际的电气元件的特性相似。
梯形图中常用“触点”和“线圈”元件,触点元件有“常开型”和“常闭型”,分别对应电工术语中的“A接点”和“B接点”,PLC中同一个继电器的“触点”可被无限次使用,我们可认为一个继电器(无论中间继电器M、时间继电器T、还是计数器C)元件,都具有无限个“A接点”和“B接点”。
对于时间继电器、计数器,具有线圈(信号触发端)和触点,部分元件还具有掉电保持特性,选择合适序号的元件,以得到所需特性的元件。
随着现代PLC的发展,PLC不仅可以完成顺序逻辑控制功能,还能完成数值计算功能,如数值比较、四则运算、函数运算等,数值宽度有16bit、32bit、浮点等,在H1U/H2U系列PLC中提供了大量的寄存器D元件,可在梯形图程序中用于数值运算。梯形图的设计思想与传统继电器控制系统的设计方法基本相同,以常见的电磁开关的电气原理为例:
从图中可见,J1为继电器或接触器,AN1为启动J1的按钮,使用其常开接点;而AN2为断开J1的按钮,使用了其常闭接点;另外使用了J1的常开型辅助触点作为状态保持用。若按右图设计PLC的信号输入连接和梯形图编程便可实现相同的起停控制功能了。(出于安全的考虑,停止按键一般用常闭型接点。)
我们介绍了PLC的系统程序和用户程序的概念。我们应该都知道了,用户使用梯形图编写的用户程序是跑在PLC内的嵌入式系统中的。所以用户程序的具体执行流程就包括了PLC系统程序的执行过程。
手册中运行原理图如下:
由上至下,直到主程序的所有网络都扫描执行完毕,还有各定时器的刷新、例行的通讯等数据的处理后,PLC系统程序将Y寄存器缓存区的变量状态输出到Y硬件端口中。然后又开始下一轮的用户程序扫描,如此周而复始,直到控制用户执行的“RUN/SOP”开关被拨动到STOP位置为止。
对于整个PLC而言,其系统软件还需完成一些运行准备、系统通讯、中断处理等工作,系统软件运行流程如上图所示。对于复杂的用户程序,在系统扫描用户程序过程中,还可以采用“中断”处理的方法响应“用户中断”信号,对重要信号(也有称重要“事件”)作及时处理。
一句话概括:PLC用户程序流程是从上到下,从左到右,周期扫描,最后刷新
PLC运行时,主要进行执行X输入检测、用户程序扫描运算、其他元件的状态刷新、将Y状态缓存状态输出到PLC的Y硬件端口等,这些工作内容周而复始的进行,其中的扫描执行用户程序是PLC的核心工作,过程如下例图:
在每次循环执行用户程序的最开始,首先将X硬件端口的状态读取后存放到X变量缓存区。
用户程序的扫描执行,是以用户程序的网络块为单元进行逐步演算的,所谓“网络”是有联线关联的一组元件块,参见上图中的两个网络。执行演算从第一个网络开始,依次向下演算第二个、第三个……直到最后一个网络。而对每个网络进行演算方式是,则由左至右,逐个将元件的“触点”状态进行逻辑计算综合,直到最右边,输出到元件的“线圈”,或根据逻辑决定是否执行某个操作。
梯形图中,左侧目前相当于电源的“火线”,其默认的(电位)状态为ON,每经过一个元件后,逻辑运算结果暂存都被刷新,有时也称中间计算暂存状态为“能流”,中间逻辑计算结果为ON,即“能流”为有效,本网络的输出状态即为输出电的能流状态;若最右端为操作类型,若能流为有效,就进行操作,否则不进行操作。
联系客服