plc编程c语⾔编程实例,PLC⾯向对象编程和梯形图编程,谁
OUT了?
在⼯业⾃动化领域,梯形图逻辑仍然是最常⽤的编程语⾔之⼀,但对于更加复杂的控制对象,⾯向对象编程不失为⼀种⾼效率的⽅式。下⾯先来谈谈⾯向对象编程:
⾯向对象编程是计算机⾼级语⾔的⼀种先进的编程模式,在⼯业控制系统的PLC程序中也可以采⽤这种设计思想,虽然我们⽆法实现⾯向对象的很多优秀特点如“继承”,甚⾄于它根本就不具备⾯向对象编程语⾔的特点,但⾯向对象编程的基本概念就是类和类的实例(即对象),我们只需要使⽤这种概念就可以了。在计算机编程中我们需要把⼀些事物抽象和归纳,才能编写类,⽽在⼯业控制系统中,控制对象如:电机,阀等等是很明显的控制类别,不需要抽象就可以很明显的针对它们编写类,以下将会⽤到西门⼦的Step7编程语⾔和施奈德的Unity 编程语⾔来讲解PLC的⾯向对象编程。
⼀、 实现⽅式
⾯向对象编程在Step7中使⽤功能块(即FB)编程,⼀谈到此⼤家就会想到西门⼦提出的模块化编程,不错,就是这个模块化编程,但西门⼦提出的模块化、背景数据块、多重背景等名词并不能让⼤家很明⽩的理解和使⽤这种优秀的设计理念。
如果⼤家从⾯向对象编程的⾓度去理解,则可以很好的理解这种设计模式。“FB块”被看 成“类”,它可以被看成是对相似的控制对象的代码归纳,如对MM440的变频器可以编写FB块:MtrMM440,这在⾯向对象编程中称为“类”,当需要 编程控制具体的电机时,可以给它分配⼀个背景DB块,在⾯向对象编程中称为类的实现(即创建类的实例:对象),当需要控制多个电机时,可以分配不同的背景 DB到这个FB 块,即创建类的多个实例。Step7中有另外⼀种程序块,即FC块,以FC块为主的编程在西门⼦中称为结构化编程,这也可以类⽐于计算机编程中的⾯向过程编程,即纯粹以函数为主体的编程。
施奈德的Unity软件编程可以更好的理解⾯向对象编程。它的DFB定义中包含输⼊/输出参数,私有/共有变量,以及代码实现,⽽这正是计算机的⾯向对象 编程中“类”的基本元素,⽽创建类的实例(对象)就像创建普通的“布尔”变量⼀样,只需在“Function Blocks”中定义这种“类”的变量即可。
Step7和Unity都可以采⽤⾯向过程和⾯向对象编程⽅式,这两种编程⽅式的区别类似于计算机⾼级语⾔中的C语⾔和C++语⾔编程的区别。
以下的讲解将会把Step7中的FB和Unity中的DFB称为“类”,Step7中的FB+背景DB以及Unity中DFB的实例称为“对象”。
⼆、 ⾯向对象编程架构
以上讲解的是实现细节,⽽编程思想是建⽴在程序架构上的,不是某个局部使⽤了⾯向对象⽅式,则可以称之为这种编程就是⾯向对象编程。这种编程需要从以下⽅⾯着⼿:
1、 电路设计的结构化。
这⾥主要以⾃动线为主介绍,对于单机机床可以是它的简化结构:
<1>、⾃动线层:这是最⾼层次,它拥有⼀个主PLC,对属于它下⾯的各区域控制<2>、⼯程层:拥有独⽴的配送电系统,但没有PLC,只有分布式模块,由⾃动线控制。顾名思义,它有着较⼤的独⽴性,可以作为⼀个单独的⼯程项⽬设计和制造,当⾃动线⽐较⼩时,可以省略该层次。
<3>、功能组层:根据⼯艺划分,将实现某⼀个⼯艺功能的区段设备划分为⼀个功能组,它⾪属于⼯程层,当⼯程层被省略时,⾪属于⾃动线层。⾯向对象编程并不⼀定要求使⽤以上的结构,但好的电⽓结构更利于⾯向对象编程。
2、 任何控制对象逻辑都在“类”中实现。
最容易上手的编程语言为了做到这点,必须分析与控制对象相关的信息,譬如,对于⼀个电机,有以下相关的信息需要考虑:
输⼊信息:
<1>、电路保护信息,如电机的空⽓开关,热继电器等。
<2>、功能保护信息,如运动电机的限位开关,风机的风压开关,油泵的油位开关等。
<3>、启动和终⽌条件,以上的电路保护和功能保护都可能导致电机运转终⽌,复位也可能导致重启动,但这⾥的条件指的是正常运⾏的启动和终⽌条件,譬如顺序控制的流程步。
<4>、控制模式:如⼿动和⾃动等。
<5>、故障复位:通过复位信息,重新启动。
输出信息:
<1>、控制输出,如控制电机的主接触器。
<2>、状态信息输出
<3>、故障输出
状态储存信息:
⽤于代码实现的中间变量以及可以被⼈机界⾯读出的状态变量等。把以上信息都整合到⼀个类中,并尽量使类的参数标准化。不过,同⾼级编程语⾔还是存在⼀些差别,针对Step7,应该遵循的标准是:程序结构由FC实现,对象控制由FB实现,如下的⼀种结构体系(其电⽓结构来⾃上⾯的介绍):这只不过是⼀个粗略的PLC程序架构体系,好的架构应该更完善和科学。
3、 规划好数据结构
数据结构的定义相当重要,并尽量统⼀这些结构,不要顾虑存储空间,当今的PLC内存⾜以容纳⼤量的数据。说明⼀点的是在Step7中尽量不要在类的外部定义数据结构(UDT),⽽是在类⾥⾯定义,虽然会造成不同类中同⼀结构的重复性定义,但却提⾼了类的独⽴性。
在接下来的篇幅中,我们来对⽐⼀下这两种编程⽅式:
⾯向对象编程的优点与梯形图逻辑相⽐,⾯向对象编程有以下优点 :
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论