软件工程从面向过程编程发展到面向对象编程(OOP:Object-Oriented Programming)被认为是程序设计方法学的一场实质性革命,是程序设计方法学的一个重要里程碑。尽管时至今日依然有少数人质疑面向对象的编程思想,但我们看到的是面向对象技术发展的越来越好,无论是后端语言(JAVA、C#)或者前端语言(JavaScript、TypeScript),无一不是完全的支持面向对象技术。

1、传统PLC编程方式

现在高校的PLC教材基本上采用的还是五六十年前的编程理念,将PLC定位为传统继电器控制的替代,以软元件、寄存器这种古老落后的概念来讲授这一门日新月异的现代工业控制编程技术。这就导致时至今日大多数自动化工程师依然采用的是下图展示的编程方法。

图1 传统PLC编程

随意滥用的全局变量、没有良好规划的程序设计使得程序复用性很差,开发周期长、bug多、调试困难。

2、面向过程是不是必经过程

  相信很多人会有疑惑,PLC编程不都是要从这个开始吗?其实不然,对于初学者来说也根本没有必要以电气的思维来编写PLC程序。虽然我们都曾经经历过这个过程,但并不代表这个过程是必须的。我们完全可以跳过这个过程,直接以面向对象的思想来编写PLC程序。一旦熟悉了面向对象编程,相信你再也不愿意回到面向过程这种方式。

3、PLC支持面向对象编程吗

  面向对象编程的三大特征是封装、继承和多态。以TIA Portal为例,尽管对这三个特性支持的不彻底(比如无法禁止访问实例的私有变量),但是这并不妨碍我们在S7-1200/1500中使用面向对象来编程。

  简而言之,在S7-1200/1500中的面向对象编程就是我们将控制对象进行抽象化,然后封装到一个FB中。当我们调用这个FB时会要求分配一个背景数据块,这个过程就是对象的实例化。背景数据块的英文是Instance Data Block,其中Instance就是实例的意思。

4、如何进行面向对象编程

  在PLC中,面向对象编程最重要的一点就是对控制对象进行抽象化。一个好的控制对象(FB)需要不断的打磨完善。千里之行,始于足下,首先我们从实现最基本的控制功能开始。那么最开始要搞清楚的是我们的FB需要哪些信号?会输出哪些命令?下图展示了我们设计的一个简单马达控制对象的接口。其中对HMI的接口采用了状态控制字的方式,这样一方面简化了HMI组态,另一方面降低了点数需求、节省了软件授权成本。

图2 接口设计

然后我们用接口变量替换图1中的全局变量。

图3 马达控制逻辑(LAD)

如果你对SCL熟悉的话,也可以采用下面的写法。虽然我们推荐使用SCL,但并不表示梯形图不好。对于逻辑控制而言,梯形图具有无法比拟的优势。面向对象的核心在于它的三个特性,至于语言只是形式而已。

图4 马达控制逻辑(SCL)

设备对象在整个工艺中往往还需要和其它设备进行联动,所以我们还得对外提供设备状态,其实也就是对象的属性。

图5 马达状态

  对象属性不但要对外输出,还需要通过状态控制字SCW提供给上位机。

图6 马达对象实例化

我们在程序中对该对象进行实例化即可。联动时可以直接访问对象属性,而无需再使用I/O点,其优点不言而喻。

5、更高层次的编程

  面向组件编程基于面向对象编程技术,不过它更强调分发性。在高级编程语言中,面向对象和面向组件有比较明显的区别。而在PLC中它们区别不大,我们更趋向于称之为面向组件编程。面向接口编程大多用于前后端分离的开发中。对于一个比较大的自动化项目,有的时候PLC程序和上位机分别由不同的团队开发。在以前一般由PLC团队提供变量表给上位机团队,但这种方式效率很低,调试工作量很大,项目成本居高不大。并且现在上位机大多也支持面板技术,HMI同样也需要对设备对象进行封装,只有面向接口编程才能发挥现在的HMI技术优势。

HwLib(慧兰博)技术团队专注于高端自动化技术,如果您对我们的技术教程感兴趣的话,可以X宝上搜索店铺“hwlib”或者“慧兰博”

关于HwLib(慧兰博)技术团队的更多信息:www.hwlib.com.cn

HwLib(慧兰博)技术团队技术资料:

https://pan.baidu.com/s/1t-5BPQmeUbWRVH9FJ-tjPg 

提取码:63rt

TIA Portal面向对象编程入门相关推荐

  1. micropython教程modbus_基于S7-300400 CPU集成PN接口的Modbus TCP在TIA Portal的使用入门教程...

    基于S7-300400 CPU集成PN接口的Modbus TCP在TIA Portal的使用入门. Modbus TCP通讯概述 MODBUS TCP 使MODBUS_RTU协议运行于以太网,MODB ...

  2. TIA Portal高级编程

    <TIA Portal高级编程>是迄今为止博途平台上除<TIA Portal顶级编程技术>之外技术含量最高的教程.它主要针对TIA Portal平台上PLC和WinCC的高级应 ...

  3. Java面向对象编程入门练习:Manager类继承Employee类并实现求得员工平均业绩

    Java面向对象编程入门练习:Manager类继承Employee类并实现求得员工平均业绩 请定义一个Manager类,该类继承Employee类,并定义两个变量及一个构造方法,两个变量:depart ...

  4. php是不是面向对象编程,PHP面向对象编程入门

    1.常用术语说明 class 类 object 对象 new 实例化 member 类成员 method 方法,成员函数 property 属性,成员变量 constant 类常量 2.类的构造 cl ...

  5. 【手把手教你】Python面向对象编程入门及股票数据管理应用实例

    1 前言 一般而言,在学习或练习python的初级阶段,在Jupyter Notebook(spyder或pycharm)上进行逐条执行语句和代码,这样可以起到交互的良好效果.但是如果要进行大一点的项 ...

  6. 学习笔记----MATLAB面向对象编程入门02--类的方法、构造函数

    本系列内容为<MATLAB面向对象编程–从入门到设计模式>学习笔记,特此说明. 定义类的方法 类的方法(Method)一般用来查询(Query)对象的状态,或者向对象发出一个命令(Comm ...

  7. Perl面向对象编程入门

    因为项目原因,接触了一门新的语言--Perl.初识之时,觉得它既像bash shell,又像C语言.因为有C/C++/Java以及shell基础,所以这门语言上水并没有很困难,但是它的面向对象还是给了 ...

  8. Python学习笔记:16 面向对象编程入门

    文章目录 类和对象 面向对象的过程 定义类 创建和给对象发消息 打印对象 面向对象编程的支柱 经典案例 例子1:定义一个类描述数字时钟,可以显示时/分/秒,可以运转(走字) 例子2:扑克游戏:四个玩家 ...

  9. 面向对象编程入门总结(一)

    #博学谷IT学习技术支持# 一.类与对象 现实世界中,所有我们能够看到的万事万物都是对象.对象是客观存在的,比如世界上所有的图形都可以看成是一个对象,它们拥有不同的形状,大小,规则.所以,为了要在计算 ...

最新文章

  1. DirectSound的应用
  2. Linux中SysRq的使用[zt]
  3. gis根据范围批量分开图斑_基于BIM-GIS技术的公路预防性养护研究
  4. 计算机专业的一个四年工作的总结
  5. 【华为2016上机试题C++】最高分是多少
  6. Andorid中使用Jsoup解析库解析XML、HTML、Dom节点---第三方库学习笔记(三)
  7. AUTOSAR从入门到精通100讲(四十六)-CANoe工具使用-实现CAN通道的收、发、录、回放报文
  8. php优化上百次foreach,php – 优化数千个项目的foreach
  9. ntext在mysql_varchar和text说不清的那些事
  10. sql语句分组mysql_以数据库字段分组显示数据的sql语句(详细介绍)
  11. 最近见了几位东半球的顶级技术大拿
  12. 汇总:MySQL 8.0 运维便捷命令
  13. Flask 发布 1.0 稳定版
  14. 从零开始学android:认识Android
  15. Docker容器查看ip地址
  16. 8x能不能升级鸿蒙,华为没有忘记老用户,畅享系列升级鸿蒙OS,荣耀8X在列
  17. 达内python培训好不好
  18. 数据结构——试题整理
  19. 钉钉网页直播回放添加控件(倍速)脚本
  20. image downsampling in python

热门文章

  1. Pycharm新建项目配置虚拟环境
  2. ubuntu vi/vim退出文件
  3. EMV技术学习和研究(二)应用选择
  4. Ajax-服务器响应数据详解
  5. 韶音骨传导耳机怎么样?韶音与南卡骨传导哪款更好
  6. 怎么将微博图片中的水印去掉
  7. 程序员每天会阅读哪些技术网站来提升自己?
  8. VBA小模板:一个普通随机抽奖,需要模拟多轮用VBA怎么做?
  9. Caused by: java.lang.IllegalArgumentException的解决方法
  10. 字符串处理StringTokenizer