0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

谈一谈对高耦合的理解

opkgjew 来源:PLC标准化编程 2023-01-09 11:08 次阅读

没错,这里说的是高耦合

前几天看了一篇计算机编程的文章, 题目叫做低内聚高耦合,弄得我一度有点恍惚,赶紧把高内聚低耦合的谚语背诵了一遍,才确信文章作者是在讲解反面的内容。

而我们做PLC行业, 也有一些人奉行的高耦合的原则, 或者以高耦合为荣,而不自知。所以就有必要再举例把这里的概念分析讲解清楚。

我曾经犹豫延迟很久之后写过一篇文章《【万泉河】论PLC编程中的高内聚与低耦合》,主要的原因是内聚和耦合这样的词汇生活中不太常见,很多人不熟悉,会当成行业黑话,以为是在胡乱忽悠人的。而其实那是我们搞PLC标准化编程烟台方法的纲领,主要的目标。

我在两本书,已经出版的《PLC标准化原理与方法》和刚刚完稿的《三菱PLC标准化编程烟台方法》中,都全文引用了这篇文章,也在之后的各种场合,直接用高内聚低耦合的原则指导设计方向。

然而,看来效果并不太好。很多人貌似对烟台方法感兴趣,但对高内聚低耦合的理念并不理解, 也不去努力尝试理解,反而很多认知都反方向的来。

比如我做了80模拟量的例子和80工位双联开关的例子,大部分人看到程序很简单,会觉得很优雅,很舒适。然而有一部分读过之后就很不满意。甚至杀上门来嘲笑指责我把程序搞到这么简单,小学生都能做出来的程序,也好意思吹牛逼是高科技。

我说对啊,我们的目的就是复杂问题简单化,最终实现的方法越简单越优雅。如果一个问题,可以用简单易懂的方法实现,那我们绝不会为了追求表面的高科技而故意倒过来把简单问题复杂化。

烟台方法的学员拿到分发的实例项目以后,看到程序如此简洁,简单。虽然是真实的上千点的工程项目应用,然而最终的结果如80系列例子般简单,就问, 那是不是我们把自己的设计封装好了,将来项目实施让没有文化的小学生来承担就可以了啊?

我说,对的呀,这应该是每一个烟台方法学员的最终目标。我们现在在一些客户那里已经实现了整个项目都由工人来承担。工程师把设计标准化之后,除非再有新的控制工艺之外, 那些已经成熟的应用,只需要简单交接好应用指南,工人就可以从设计出图编程到现场调试都自行完成了,都不需要来请示每个细节。PLC程序内的模块调用仅仅相似于电柜内的元器件拼装组柜, 难度也相似。

而我一直以来关注同行的技术发展状态的方式,就是看他们做的库函数的耦合难度。说实话,PLC领域, 高难度的题目并不算多。特别是一些底层的设备控制,都是简单到一句话就可以说完的, 那么耦合难度的高低其实才是我看重的最重要的指标。

比如同行们现在都比较关注的SMART 200中的电机阀门块的重复使用了,包括西门子1847平台也有这方面的函数功能块的实现原理方法介绍:

a88daf2e-82d4-11ed-bfe3-dac502259ad0.png

他所设计的管脚中有一个名称为“参数”的INOUT管脚。示例调用中分配了&VB8的指针, 实际逻辑内部使用了VB8开始的N个字节的数据作为数据的记忆缓存,相当于FB块中的静态变量。

然而这个管脚在每一个实例的调用中,还均需要合理调度V区,不可以重复,否则会产生冲突。那么在我看来这就是高耦合。有人会居高临下指责说,不就是分配V区嘛, 按顺序分配下来, 有什么难的。

是的,对懂的人来说,当然不难。然而对不懂的人, 其余的不管是输入输出的通道,都是直观可见的信号,而多出来这个参数,只为内部逻辑所用,而使用者需要了解逻辑原理以后才会接受,而即便接受也懂的似是而非,那这就如天书一般难了。这样的一个细节不在意,那么多个细节当然也不会在意,但积累下来,一个系统中到处都是这样的难点,逐渐的小学生就会认为太高深,而拒绝配合你去干了。

不懂, 不会,干不了,要干你工程师自己去干!你不哄好他们,让他们觉得有难度,他们跟你玩赖躺平的本事还是有的。

另外,即便自己亲自来做耦合阶段的工作, 这种需要调度资源空间的工作量也毫无意义。所以,如果你对耦合的重要性有建立那么一点点理解的话,就会逐渐倾向于优化设计,尽量减少耦合难度。

当然,1847课程的重点还是在实现功能块重复的功能,所以不可以轻易指责他们的做法错了。而从功能模块化的角度,也需要另外单独的课程来讲解如何降低耦合难度。所以,我们完全可以在他们做好的原有的库函数基础上,再做一次封装,实现我们低耦合的需求。

比如我们可以把课程中已经做好的VALVE更名为VALVE_0, 而复制一个备份,仍然叫VALVE,其“参数”部分的管脚改为TEMP变量,利用我们前面曾经著文多次提过的GETSID函数,得到SID,并折算到参数值。逻辑如下:

a8a9ec52-82d4-11ed-bfe3-dac502259ad0.png

而最终实际的调用则变成了:

a8bf137a-82d4-11ed-bfe3-dac502259ad0.png

虽然看起来仅仅是简化掉了一个管脚,然而这个时候可以非常简单地教会工人使用这个模块而毫无障碍了:只需要按照点表把地址正确填入即可。这样的话, 再笨的小学生也不会拒绝配合了。

这个程序例子的名字叫做“高耦合变低耦合”,我会放在80例程的分享群中,需要者自行获取,或者跟我私信索要。然而其中VALVE_0和GETSID块只有接口, 逻辑功能需要自行补足。其中VALVE的功能从1847课堂获取,而GETSID的实现,大家现在可以理解我提及多次的GETSID的需求了吧?

而我在反复讲解GETSID应用的时候,就有大虾不理解,质问分明在循环调用时做个增量计算就可以实现SID的自动分配,为啥还要专门做一个SID的函数。我就知道,有很多人,虽然自诩编程水平很高,但高内聚低耦合的思想仍然是没有的。换我是小学生,我一定跟你摆烂躺平。循环计算这样的高级工才能干的活, 俺们小学生学不会。现场拧螺丝接线是我的工作,但你工程师也得陪着我来工地上靠着,少不了你。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • plc
    plc
    +关注

    关注

    5008

    文章

    13200

    浏览量

    462397
  • SMART
    +关注

    关注

    3

    文章

    224

    浏览量

    44669
  • SID
    SID
    +关注

    关注

    0

    文章

    14

    浏览量

    3022

原文标题:1223 【万泉河】谈一谈高耦合

文章出处:【微信号:PLC标准化编程,微信公众号:PLC标准化编程】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    谈谈GPU的使用寿命

    上文结合论文谈一谈,三年寿命的GPU [上]说到,电路腐蚀导致橡树岭实验室的GPU寿命只有3年,更换了11,000块GPU。
    的头像 发表于 11-01 10:27 178次阅读
    谈谈GPU的使用寿命

    以太网RDMA RoCE的技术局限

    上期我们讲到了RDMA的WHY,WHAT & HOW(AI网络背景下RDMA的Why,What & How),这期我们来谈一谈RDMA的不足。
    的头像 发表于 10-22 10:02 237次阅读
    以太网RDMA RoCE的技术局限

    什么是耦合器?

    耦合器是种重要的射频(RF)和微波元件,广泛应用于信号传输、分配和监测等领域。它的主要功能是将信号从个传输线耦合到另个传输线,同时保持
    的头像 发表于 10-05 13:36 1431次阅读

    理解输出电流和温度下工作的SOA曲线

    电子发烧友网站提供《理解输出电流和温度下工作的SOA曲线.pdf》资料免费下载
    发表于 08-26 14:23 0次下载
    <b class='flag-5'>理解</b>在<b class='flag-5'>高</b>输出电流和温度下工作的SOA曲线

    电路的耦合方式怎么判断正负

    在电子电路设计中,耦合方式的选择对于电路的性能和稳定性具有重要影响。耦合方式主要分为直流耦合和交流耦合两种,而每种耦合方式又有不同的实现方法
    的头像 发表于 08-09 15:25 568次阅读

    直接耦合和阻容耦合的区别和联系是什么

    直接耦合和阻容耦合是电子电路中两种常见的耦合方式,它们在电路设计中有着广泛的应用。 直接耦合 直接耦合
    的头像 发表于 08-09 15:21 1396次阅读

    直流耦合与交流耦合的区别和用途

    直流耦合与交流耦合是电子电路设计中两种常见的耦合方式,它们在信号传输、放大、滤波等方面有着广泛的应用。 、直流耦合与交流
    的头像 发表于 08-09 15:07 3287次阅读

    ac耦合和dc耦合波形的区别是什么

    )是种信号耦合方式,它只允许交流信号通过,而阻止直流分量的传递。在AC耦合中,信号的直流分量被去除,只保留了交流分量。这种耦合方式常用于音频信号处理、数据采集和通信等领域。 2.2
    的头像 发表于 08-09 15:05 2558次阅读

    示波器ac耦合和dc耦合的区别

    示波器是电子测量领域中常用的种仪器,用于观察和测量电信号的波形。在示波器的使用过程中,AC耦合和DC耦合是两种常见的耦合方式。 AC耦合
    的头像 发表于 08-09 14:57 3109次阅读

    谈一谈FPGA设计中的功率计算

    计算器。 有个完整的系统级理解和精确的功率模型将能使设计师作出必要的决择,从而完成设计。然后,设计者可以集中精力于降低功耗,其中包括以下几个方面: 降低设备的工作电压 优化时钟频率 减少设计中长的布线
    发表于 07-31 22:37

    谈一谈单相触电和两相触电

    单相触电。人体的某部分与相带电体构成回路,当电流通过人体流过该回路时,即造成人体触电,这种触电称为单相触电。
    的头像 发表于 03-04 09:22 2091次阅读
    <b class='flag-5'>谈一谈</b>单相触电和两相触电

    耦合器的结构与原理解

    本文将深入分析光耦合器的结构与原理,旨在为读者提供清晰而全面的了解。
    的头像 发表于 02-02 16:12 877次阅读
    光<b class='flag-5'>耦合</b>器的结构与原<b class='flag-5'>理解</b>析

    光纤耦合激光器是什么 光纤耦合激光器支持多波长激光输出吗?

    光纤耦合激光器是什么 光纤耦合激光器支持多波长激光输出吗? 光纤耦合激光器是种集成了激光二极管和光纤耦合器件的激光器。它通过将激光二极管的
    的头像 发表于 01-31 10:15 982次阅读

    PLC编程案例之控制机械手实现简单搬运流程

    很多人希望多分享些PLC具体应用和维护的案例,满足大家的要求。今天咱们来谈一谈如何利用PLC来实现简单的搬运动作,让机械为人服务!
    的头像 发表于 01-18 13:52 1998次阅读
    PLC编程案例之控制机械手实现简单搬运流程

    CMR、高速TTL兼容光电耦合器应用介绍

    电子发烧友网站提供《CMR、高速TTL兼容光电耦合器应用介绍.pdf》资料免费下载
    发表于 12-14 10:46 0次下载