在工业自动化领域,梯形图逻辑仍然是最常用的编程语言之一,但对于更加复杂的控制对象,面向对象编程不失为一种高效率的方式。下面先来谈谈面向对象编程:

面向对象编程是计算机高级语言的一种先进的编程模式,在工业控制系统的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),而是在类里面定义,虽然会造成不同类中同一结构的重复性定义,但却提高了类的独立性。

在接下来的篇幅中,我们来对比一下这两种编程方式:

面向对象编程的优点与梯形图逻辑相比,面向对象编程有以下优点 :

plc 编程 c语言编程实例,PLC面向对象编程和梯形图编程,谁OUT了?相关推荐

  1. dcs与plc与c语言的联系,PLC 与DCS的通讯方式,举例讲解

    化工区乙烯装置采用的是Honeywell TDC3000 DCS系统,这牵扯到要与许多PLC的通讯问题.因为在生产中操作人员要通过DCS的操作界面来了解所有系统的运行状况,这其中首当其冲的就是PLC, ...

  2. c语言中的关于数学问题的编程,C语言中具有代表性几种数学问题编程技巧探索.doc...

    C语言中具有代表性几种数学问题编程技巧探索 C语言中具有代表性几种数学问题编程技巧探索 [摘要]本文分析了C语言中几种常见的具有代表性的几类数学问题,从数学规律.语法结构分析.语句优化设计及应用方面, ...

  3. plc变频器c语言,如何通过PLC控制变频器进行电机转速控制,含代码!

    原标题:如何通过PLC控制变频器进行电机转速控制,含代码! 一.项目描述 按下电动机启动按钮,电动机启动运行在5Hz所对应的转速:延时10s后,电动机升速运行在10Hz对应的转速,再延时10s后,电动 ...

  4. 西门子哪款plc支持c语言,西门子PLC三种语言的区别

    原标题:西门子PLC三种语言的区别 PLC是机器人重要的一部分,下面小编就为大家介绍一些3种语言的区别,帮助大家学习. 一.梯形图 梯形图作为简单易读通俗易懂基本属于新人学习PLC的首选,而且调试的时 ...

  5. TearDrop代码编程与SOCKET应用实例

    TearDrop代码编程与SOCKET应用实例(wait for update) 实验环境ubuntu 18.04 server版 文章目录 TearDrop代码编程与SOCKET应用实例(wait ...

  6. plc和c语言谁的前景好,PLC面向对象编程和梯形图逻辑,到底谁更实用一些?

    在工业自动化领域,梯形图逻辑仍然是最常用的编程语言之一,但对于更加复杂的控制对象,面向对象编程不失为一种高效率的方式.下面先来谈谈面向对象编程: 面向对象编程是计算机高级语言的一种先进的编程模式,在工 ...

  7. c语言plc库,PLC编程-C语言.ppt

    PLC编程-C语言.ppt 华中数控培训讲义 PLC编程,C语言编程,PLC控制的范围,数控机床所受到的控制可分为两类数字控制和顺序控制. 数字控制主要指对各进给轴进行精确的位置控制,包括轴移 动距离 ...

  8. c语言和plc编程,PLC编程-C语言PPT学习课件

    华中数控培训讲义PLC编程,C语言编程,1,,PLC控制的范围,数控机床所受到的控制可分为两类:数字控制和顺序控制.数字控制主要指对各进给轴进行精确的位置控制,包括:轴移动距离.插补.补偿等.顺序控制 ...

  9. c语言和plc编程,PLC编程C语言.ppt

    PLC编程C语言 华中数控培训讲义 · PLC编程 C语言编程 PLC控制的范围 数控机床所受到的控制可分为两类:数字控制和顺序控制. 数字控制主要指对各进给轴进行精确的位置控制,包括:轴移 动距离. ...

最新文章

  1. 河南城建学院计算机分数,河南城建学院录取分数线2021是多少分(附历年录取分数线)...
  2. 《CCNA无线640-722认证考试指南》——导读
  3. Java程序设计学习笔记(四)—— GUI
  4. SQL Server 2000 没开1433端口的问题
  5. MyEclipse中Maven Web项目部署路径设置
  6. Python编写的数字拼图游戏(含爬山算法人机对战功能)
  7. 大数据分析双剑合璧:Apache Kylin 和 Superset
  8. oracle—新建用户
  9. 【9108】模拟数学计算器
  10. 最大连续子序列和(4种算法)
  11. 马斯克:未来将尝试打造超级高铁运输系统 时速是飞机的2倍
  12. 计算机网络技术——VLAN划分
  13. 环境和社会风险分类c类_工程风险等级划分标准
  14. k8s ceph rbd动态挂载
  15. Flow-Guided-Feature-Aggregation-的安装配置,demo运行,以及采用少量ILSVRC2015 VID数据集在其中训练
  16. 微信中提示浏览器打开网址链接如何解决
  17. 内存访问错误造成Segmentation fault (SIGSEGV)
  18. 基于遗传算法的无人机监视覆盖航路规划算法研究
  19. 3D游戏建模如火如荼,你还在为未来迷茫吗?
  20. 通用的统一权限管理系统

热门文章

  1. [MySQL/初学者]数据完整性约束
  2. flutter 九宫格菜单_Flutter 仿微信/微博九宫格
  3. VUE-CLI/VUE-ROUTER
  4. win32根据进程名获取进程ID或者终止进程
  5. 报错ValueError: row index was 65536, not allowed by .xls format
  6. 7种常见的APPUI界面设计布局风格欣赏
  7. iOS 证书管理、验证、打包流程
  8. 小象python培训班_小象最新Python机器学习升级版视频学习教程 共24节精品课
  9. ubuntu系统下THETA S 全景相机 通过ROS导出图像
  10. API-fox 接口神器