中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

PLC论坛

抖音 西门子减速电机 德嘉 台达 英威腾 泓格论坛 西门子 我和LOGO!有个约会 FLIR红外热像论坛 【有奖活动】英威腾 “Ni美国国家仪器 “PLC发展趋势大讨论”活动圆满结束 cc-link图文征集活动 西门子SMART LINE V3
工控论坛首页 PLC论坛 → 浏览主题: 【万泉河】论PLC面向对象编程方法中的封装和继承
发表新帖 回复该主题
回帖:20个,阅读:359 [上一页] [1] [2] [3] [下一页]
* 帖子主题:

【万泉河】论PLC面向对象编程方法中的封装和继承

分享到
955
万泉河.
文章数:94
年度积分:103
历史总积分:955
注册时间:2009/12/4
发站内信
发表于:2020/7/2 21:54:53
#0楼
我在推广标准化编程方法,向同行们解释所用到的面向对象的概念的时候,经常有人提出质疑,面向对象编程的三个特性:封装、继承和多态,PLC编程能都支持吗?

我猜,质疑者可能是一知半解地了解过一些面向对象的编程理念,而实际上并没有真正理解。当然啦, 我能做出这样的判断是因为,包括我自己,也并没有完全毕业成为面向对象编程的高手。否则我早就不在工控行业混了。早就杀向IT行业了。那里挣大钱的机会多多了。

所以简要谈一下我的理解,面向对象三大特性的关系,是与的关系还是或的关系?是三者必须兼顾,缺一不可呢,还是有其一即可称之为面向对象呢?

面向对象是一种编程实现方法,是指相对于面对过程来说的。

打一个比方,要从A城市的一个乡镇,到B城市的另一个乡镇,交通方式首先有两大类,一类为乘坐公共交通,另一类为自由出行方式。

那么,首先要确定类型。如果选择公共交通方式,就会在此基础上,有多重选择,火车,飞机,公共汽车等等,以及多重方法的组合。

而如果选择自由出行,则会有自驾,包车,自行车, 甚至徒步等等。当然也可以多重组合。

我认为,编程中选择面向对象方法的时候, 就相当于定下了公共交通出行的基调。

而其中的封装,继承,多态等,则相当于你选择的飞机,火车,以及公共汽车。其中最为基础的是封装,就相当于公共汽车。如果你不在乎时间,距离,效率,只靠公共汽车换乘,而不选择飞机和火车,也一定能实现。

所以我认知里,面向对象三大特性的关系是或的关系。根据系统的性能,以及自己的偏好与特长,选择其一即可。就好比, 两个城市之间根本不通飞机,甚至两个城市是公用同一个机场的,你偏要强调没做飞机就不算圆满的公共出行,那就非常搞笑了。

而在一个控制系统里,分明用不到复杂的功能,你还非要弄些花架子,就为了名义上满足定义,也同样搞笑。

曾经看过一个程序员讲的笑话。大意是他有过一个尼泊尔籍的同事,离职了,工作内容交接给了他。他拿到手里一看,大吃一惊,这家伙竟然完全不会继承和多态。就在那儿只要有需要,就封装新功能,一个项目,做了几百个类,而他拿到手里优化一通之后,只剩下了十几个类,系统又快,维护工作量还小多了。

我看过之后,没觉得好笑,反而觉得,对于PLC编程来说,好像这才是正确的实现方式。那位被编到笑话里的尼泊尔人,应该转行来做PLC编程。

计算机领域里,大量无穷尽的继承的基础,是在同一个系统里的代码功能重复使用。而PLC都是一个个的小系统,资源有限。要使用一个子类,还要把其父类,父类的父类,爷爷的爷爷,也都一起带着,最终,系统中只用到最外层的子类的一个实例,先不说浪费,CPU的资源恐怕都放不下。

所以,我分享的标准化编程示范项目,主要的三板斧就是封装。以封装的类以及其实例化,来实现了程序的标准架构。而其中的继承和多态方法,则基本没有使用。但我以前文章中也提到过,库函数的实现方法中可以有继承。

这次以示例的形式演示一下通过对一个电机块的再封装,即继承其原有框架,并增加新的功能,以及隐藏用不到的功能(管脚)。

请PLC标准化学员营的学员跳转阅读,这是给你们的福利教程,课后有作业:

【万泉河】PLC标准化编程方法演示:再封装(继承)一个电机块
6304
逍遥的久鸣
文章数:2946
年度积分:897
历史总积分:6304
注册时间:2017/3/6
发站内信
2018论坛热心网友
发表于:2020/7/2 23:53:33
#1楼
好久没有看到你发帖,对你发表的内容,还是看的不太懂
此帖发自手机工控论坛
5638
wenpian
文章数:242
年度积分:413
历史总积分:5638
注册时间:2007/2/10
发站内信
发表于:2020/7/3 7:57:11
#2楼
一堆废话,直接干行,他微信号168元消费阅读权
16834
PLC-hmi
文章数:7006
年度积分:1471
历史总积分:16834
注册时间:2010/8/19
发站内信
2018论坛热心网友
发表于:2020/7/3 8:28:35
#3楼
工控的百家讲坛大师了
2114
ddt250
文章数:570
年度积分:475
历史总积分:2114
注册时间:2016/12/26
发站内信
发表于:2020/7/3 8:30:07
#4楼
自学了一段时间的C#语言,封装、继承和多态在编程的时候是方便了,但把大量的工作交给了翻译器,等于加大了内存和CPU的占用。这也就是现在的计算机硬件发展了,放到以前时代是想都不敢想的。一块PLC就是一个单线程CPU,不仅内存小,主频还低,普普通通的1000行程序扫描周期都能到4ms。在这种硬件配置下,让它来回调用……我才疏学浅,想不到好办法降低延迟。
10990
bnnyygy
文章数:2557
年度积分:1382
历史总积分:10990
注册时间:2012/3/15
发站内信
2018论坛分享达人
发表于:2020/7/3 8:31:43
#5楼
开头看了几行就拉下来看评论了。。。。
18246
高雅的雅
文章数:14925
年度积分:1551
历史总积分:18246
注册时间:2015/5/12
发站内信
2018论坛解答高手
发表于:2020/7/3 8:53:05
#6楼
我见过一个程序:用FB+FC+OB+DB,程序容量22K!
后来直接简单梯形图,程序仅仅1.2K就搞定
看到这个发帖的,就是这种垃圾
那一瞬间忽然不再想你,因为去一趟漠河,走了一趟西藏,逛了一趟天涯海角,泡了一会栖谷温泉,回来就是:一切随他去吧,该咋过咋过!!车祸不死感言
3783
乌龟船长
文章数:476
年度积分:714
历史总积分:3783
注册时间:2015/6/24
发站内信
发表于:2020/7/3 10:13:56
#7楼
没干过大项目的人看了这个感觉很高深,,干过大项目的人,看了这个就感觉是废话,
今天做通用汽车,有通用标准,明天干大众汽车,又有大众标准- - - -  这堆废话看了有啥用? 难道跟他们说,你们的不行,我有万老师的标准
955
万泉河.
文章数:94
年度积分:103
历史总积分:955
注册时间:2009/12/4
发站内信
发表于:2020/7/3 17:56:15
#8楼
以下是引用高雅的雅2020/7/3 8:53:05的发言:
我见过一个程序:用FB+FC+OB+DB,程序容量22K!
后来直接简单梯形图,程序仅仅1.2K就搞定
看到这个发帖的,就是这种垃圾

这个说法非常典型。

在排除了个人之间的互相攻击对骂之外,客观来说, 这两种不同的实现方法, 确实有这样的相互的鄙视链。

即,互相认为对方的程序垃圾。

我方的辩词是,在CPU容量远远大于22K的情况下, 假设,你做22K的程序需要半天, 而做1.2K的程序需要一个周。

对于老板来说,见到的是两个效率高低不同的工程师。

对客户来说, 见到的是两套稳定性,调试周期长短不同的控制程序。

哪一个更垃圾?

谁更关心程序的容量呢?我猜如果CPU是个有灵性的头脑, 让它常年20%的负载跑程序,和10%的负载跑程序, 他可能会骂前者是垃圾。
除此之外,我想不出谁会骂大一点的程序是垃圾了。

否则的话,以楼上这种观点来评判微软的各种软件的话, 那无一例外, 全部都是大垃圾。

我们更崇拜的还是直接使用汇编语言编程的高手。

那些使用VISUAL STUDIO 编程的,都太菜了。
955
万泉河.
文章数:94
年度积分:103
历史总积分:955
注册时间:2009/12/4
发站内信
发表于:2020/7/3 17:57:22
#9楼
回复 #7楼 乌龟船长
标准是分层的。

每个标准关注的层面不一样。
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 中华工控网 Copyright©2020 Gkong.com, All Rights Reserved

140.4