故事作者:万泉河

最近创作

看看TA的故事

【万泉河】论PLC编程中的高内聚与低耦合

已锁定

万泉河

  • 帖子

    10885
  • 精华

    132
  • 被关注

    892

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

【万泉河】论PLC编程中的高内聚与低耦合

3491

8

2020-11-21 09:43:57

【万泉河】论PLC编程中的高内聚与低耦合

 

高内聚低耦合,是软件工程中的概念。主要源自于面向对象的程序设计中的原则。我们在推广标准化编程的过程中,不可避免地也遵循了这样的原则。

 

但由于这2个词汇本身比较生僻,怕吓到一些初学者,所以,以往我们基本不使用这样的说法。

 

首先在网上以高内聚、低耦合为关键字搜索,随便就能收到一大堆这方面的文章。这里随便转发一篇,大家可以大概一看。

 

什么是程序设计中的高内聚、低耦合?

https://mp.weixin.qq.com/s/y3zG97igGakL9rouNS8_kA


 

估计如果你不是专业的IT程序员,而只是工控行业,做点自动化PLC编程的电气工程师,那些文章看过之后,仍然会不明所以,不明白与自己做的PLC编程有什么关系。或者说这些理念,如何能对号入座应用到自己日常的PLC程序设计中。

 

本文,则试图以最浅显的语言,解释高内聚低耦合的原理,并以此约定PLC标准化编程的基本原则。

 

何为内聚,何为耦合?

 

映射到PLC编程中,最简单的解释,逻辑部分即为内聚。而调用逻辑(即对象实例化)的过程,即为耦合。

 

而高内聚低耦合的意义则为,承载逻辑部分的功能要尽量复杂完备,而负责调用逻辑块的部分,要尽可能的简单,最好是啥逻辑都没有。

 

当简单到啥逻辑都没有的时候,所谓的耦合,即调用的部分,存在的目的只是实现了参数(实参)的绑定。

 

最极致的简单,我给标准化学习营的学员提出的建议,也是我自己一直坚持的准则,模块调用的管脚上,哪怕一个取反,这是个最微不足道的逻辑吧?都不要有。

 

即,所有管脚的绑定实际参数,必须是正值。

 

举一个例子,比方一个电机设备,他可能会有允许启动的启动条件,和禁止启动的互锁条件。这两种条件的本质是互相取反的。

 

过去通常的做法,一个设备,允许启动的管脚上,绑上启动条件。而同级别的另一个设备,工艺要求的是一些禁止启动的互锁条件,那就将变量取反,同样输入到允许启动的管脚了。

 

那我给出的原则建议是,不允许。

 

给出的理由是,假设我们的系统足够庞大,点数特别多。那么通常会是主设工程师,带几个实习生,共同完成项目。而复杂的逻辑部分,自然由主设工程师负责。而相对简单的,不大需要动脑的部分,安排实习生或者助理工程师来完成。主要是数量庞大的对点,绑点,查线,消缺等工作。

 

在没有逻辑需求的情况下,只是简单绑点,那么新手可以简单复制替换,或者复杂一点使用EXCEL或者小的自动工具完成。

 

而如果上千个设备,同样的管脚的位置,有的需要正逻辑,有的需要反逻辑,还有的有一点点并联和串联,那基本上就麻烦不断了。要么实习生不熟悉工艺和逻辑到处出错,要么因为无从下手,而需要时刻盯着主设工程师请教。

 

在一些极端的情况下,主设工程师还会抱怨,咋这实习生啥都不懂,啥都问我,还不如我自己亲自做了呢!

 

由此,工作的分工就失败了。

 

所以,如果你还不能深刻理解什么叫高内聚,低耦合,那么简单分工一下,高难度的,主任工程师做的工作,就叫内聚。低难度,新手实习生就可以做的工作,就叫耦合。

 

或许有人会说,我的控制系统很小,也无人跟我配合,上上下下,都是我自己一个人在搞定,就没必要分什么内聚和耦合了吧?

 

非也。

 

每一个人的精力,不可能一整天都在同一个紧张或者放松的状态。实际的工作情况也不允许你常年保持一个状态。比如经常有人表示,夜深人静的时候,注意力更集中,所以更容易做一些精细的,需要精确逻辑推理或者数学计算的工作。而白天的时候,各种事务性工作太多,电话,会议等打扰不断,根本容不得你静不下心来做设计,刚想做一点设计了,一个电话进来,或者讨论一个新方案,思路被打断,回来后都忘记做到哪儿了,又要从头开始。

 

这个时候,你就可以对自己的工作时间做个合理的分工,把可以集中精力的连续片段的时间,安排做难度高的工作,而把容易被切割的片段时间,安排做用脑比较少,但属于偏向于体力活的简单工作。

 

前者即内聚,后者为耦合。

 

这是在设计工作中的原则。

 

而对于产品开发,其实也同样存在高内聚与低耦合的逻辑。

 

一个好的开发的产品,一定是高内聚低耦合的,即其内部的功能可以很强大,但留给使用者的接口又非常简单。使用者不需要非常懂得产品的原理,却可以轻松使用地很好。

 

这其中,典型的是日本人推出的傻瓜相机。留给摄像师的需要调整的参数极其少,摄像者甚至不需要懂太高深的摄像原理,都可以照出完美的影像来。根源就是,产品的开发者,极大程度的实现了高内聚,低耦合。

 

还有一个更典型的例子是苹果手机。苹果推出手机之后迅速风靡全球,所有倩倩少女,都以自己可以轻松玩转苹果手机系统为荣。根源也在于乔帮主带领一干设计工程师,把各种复杂的功能,都集大成地不留痕迹的内聚到其核心了。留给使用者的,只是最简单的操作。

 

我想到这一点,其实来自于有WANQ局域网互通路由器的用户,新体验了产品之后,跟我感慨,这使用也太简单了吧!简直零难度,零设置啊,啥都不需要做。仅仅设置设备上网而已。和普通路由器完全一样。

 

我说,对呀,我们在出厂之前,把所有设置都做好了。留给用户的只是最简单的应用了。所谓的使用说明书,也只是防止有新手想多想歪,反而做不成。所以给出了个手把手的傻瓜手册。

 

而实际上,所有的老用户,再次购买的时候,我们的设备压根说明书都不发了。

 

就是这么有底气!

 

对WANQ路由器感兴趣的用户,在公众号《PLC标准化编程》后台回复WANQ***,申请加入用户群,与新老用户咨询交流!顺便请教一下老用户们,是不是真的不需要说明书了。

 

对学习PLC标准化编程有兴趣的,请***ZHO6371995交流。

 

总得来说,我一直在做的工作,不管是标准化编程,还是WANQ,本质上都是一件事:高内聚,低耦合。

 


【万泉河】论PLC编程中的高内聚与低耦合 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3227条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。