PLC系列的面向对象编程[整理].pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
PLC 系列的面向对象编程 面向对象编程是一种先进的编程模式,在工业控制系统的 PLC 程序中可以采用这种设计思想。虽然我们无法实现面向对象的很多优秀特点如“继承”,甚至于它根本就不具备面向对象编程语言的特点,但面向对象编程的基本概念就是类和类的实例(即对象),我们只需要使用这种概念就可以了。 在计算机编程中我们需要把一些事物抽象和归纳,才能编写类,而在工业控制系统中,控制对象如:电机,阀等等是很明显的控制类别,不需要抽象就可以很明显的针对它们编写类。 在 Step7 中使用功能块(即FB )编程,可以将“FB 块”看成 “类”,它可以被看成是对相似的控制对象的代码归纳,如对 MM440 的变频器可以编写FB 块:MtrMM440, 这在面向对象编程中称为“类”,当需要编程控制具体的电机时,可以给它分配一个背景DB 块,在面向对象编程中称为类的实现(即创建类的实例:对象),当需要控制多个电机时,可以分配不同的背景DB 到这个FB 块,即创建类的多个实例。 施奈德的 Unity 软件编程可以更好的理解面向对象编程。它的DFB 定义中包含输入/输出参数,私有 /共有变量,以及代码实现,而这正是计算机的面向对象编程中“类”的基本元素,而创建类的实例(对象)就像创建普通的“布尔 ”变量一样,只需在“ Function Blocks ” 中定义这种“类”的变量即可。 Step7 和 Unity 都可以采用面向过程和面向对象编程方式,这两种编程方式的区别类似于计算机高级语言中的C 语言和 C++ 语言编程的区别。以下的讲解将会把Step7 中的 FB 和 Unity 中的 DFB 称为 “类”,Step7 中的 FB+ 背景 DB 以及 Unity 中 DFB 的实例称为 “对象”。 面向对象编程架构 以上讲解的是实现细节,而编程思想是建立在程序架构上的,不是某个局部使用了面向对象方式,则可以称之为这种编程就是面向对象编程。这种编程需要从以下方面着手: 电路设计的结构化。这里主要以自动线为主介绍,对于单机机床可以是它的简化结构,<1> 、自动线层:这是最高层次,它拥有一个主PLC ,对属于它下面的各区域控制<2> 、工程层:拥有独立的配送电系统,但没有PLC ,只有分布式模块,由自动线控制。顾名思义, 它有着较大的独立性,可以作为一个单独的工程项目设计和制造,当自动线比较小时,可以省略该层次。<3> 、功能组层:根据工艺划分,将实现某一个工艺功能的区段设备划分为一个功能组,它隶属于工程层,当工程层被省略时,隶属于自动线层。 面向对象编程并不一定要求使用以上的结构,但好的电气结构更利于面向对象编程。 任何控制对象逻辑都在“类”中实现。为了做到这点, 必须分析与控制对象相关的信息,譬如, 对于一个电机,有以下相关的信息需要考虑:<1> 、电路保护信息,如电机的空气开关,热继电器等。<2> 、功能保护信息,如运动电机的限位开关,风机的风压开关,油泵的油位开关等。<3> 、启动和终止条件,以上的电路保护和功能保护都可能导致电机运转终止,复位也可能导致重启动,但这里的条件指的是正常运行的启动和终止条件,譬如顺序控制的流程步。<4> 、控制模式:如手动和自动等。<5> 、故障复位:通过复位信息,重新启动。 输出信息:<1> 、控制输出,如控制电机的主接触器。<2> 、状态信息输出<3> 、故障输出。。。状态储存信息:用于代码实现的中间变量以及可以被人机界面读出的状态变量等把以上信息都整合到一个类中,并尽量使类的参数标准化。 规划好数据结构数据结构的定义相当重要,并尽量统一这些结构,不要顾虑存储空间,当今的PLC 内存足以容纳大量的数据。说明一点的是在Step7中尽量不要在类的外部定义数据结构(UDT), 而是在类里面定义,虽然会造成不同类中同一结构的重复性定义,但却提高了类的独立性。 PLC 系列的面向对象编程需要从编程思想和架构上着手,并且需要规划好数据结构和控制对象逻辑的实现。
- 粉丝: 2
- 资源: 12万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助