回复:Modbus设备FB接口设计背后的理念

已锁定

宝冬

  • 帖子

    443
  • 精华

    28
  • 被关注

    256

论坛等级:至圣

注册时间:2016-07-06

钻石 钻石 如何晋级?

发布于 2022-11-05 12:46:59

9楼

一个Modbus任务执行结束后,下一个任务应该是什么?


各种各样的多个Modbus设备,每个设备都有各自不相同的任务集,再加上各种动态的实时工艺变化带来的任务数量和次序的随时无规律变化,导致这个问题并不容易回答。


前面讲到的品牌通信任务表,它里面的任务数组,只是个包含本品牌设备的各种工艺可能性的静态任务全集。


这个数组中的任务次序并不能代表它们的实际执行次序,只是存储位置的序号而已。当然有的时候,它们会按照这个次序执行。位置次序代表了默认的先来后到的执行次序。


但更多时候,执行次序会前后或四处乱跳。


这种无规律窜动,既发生在一个设备的任务表之内,也发生在不同设备的任务表之间。


这些规律和跳跃,本质上都源自设备FB实例的界面功能的变化,也就是设备对象中的命令和参数的变化。


外界功能的变化是没有规律的。或者说,至少程序员是不能一厢情愿的指望外界功能变化是有规律的。


因为程序员面对的是这世上所有的各种Modbus设备,这样一个大基准空间。眼前案例只是这个大空间中一个很小的子集。


面对如此复杂的多样性,如何用一种相同的FB设计思想,来包容所有的可能?存在这样一种万能的,能在界面功能和底层IO之间,在任何业务场景下,都能任意来回转换的固定调度方式吗?


很显然,单一固化的调度策略是不可能做到的。


我的答案是:在设备FB内部,采用分层解耦的多层架构来解决这个问题。


这个架构是稳定的。可以通过增减,或在每一次层中增减元素,把各种可能的调度元素分配到它应该属于的层中去。


程序员的核心是:把过程场景原子化,元素化分解,然后按照场景细节的真相,把这些不同元素各自所需的处理手法,摆放到它们应该去往的层中去。


说到这,可能会意识到:在本质上,这不仅是个编程的问题。它涉及到你如何看待和理解眼前发生的任何事情,甚至如何把你的工作和生活中的事情,分解为纯净的元素,这样的洞察能力。


到最后,这个结构的内容,实际上就是你自身在代码中的投影而已。


这就是观察的本质。


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15777条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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