恭喜,你发布的帖子
发布于 2023-11-11 22:51:52
117楼
这个开源案例中的Modbus作为公共IO被包含进设备单元。
如果你想要把Modbus作为单独的模块剥离出去,也是可以的,如下图做法。
在设备单元和IO执行单元之间加一个交互对象把彼此衔接即可。这个IO单元内部就是简单封装了单纯的MB-comm-load和 MB-Master的执行。
设备与IO分别用不同的LoaderFB加载即可。
这种把IO执行单独剥离出来的做法,未见得有实际意义,只是作为为一种做法可以。
如果在多核芯CPU的PLC中,可以存在程序员可以通过编程或组态,去控制的并行多线程的多个OB的平行运转,那么也许这种做法有点意义。我从未用过这样的PLC,只能说也许。
临时想起这个话题,就做了IO执行剥离,实际验证了一下。在博图中其实没啥分别,只会略微麻烦一点。
---------------------------------------------------------------------------------
因为设备单元的内部采用的是分层解耦架构,所以比较容易就可以把通信IO元素剥离出来,且很容易调试排错。只动了通信部分的初始化层和执行层中的两处局部元素,其它完全不用动,改一下接口,把IO元素删除。
这个IO剥离表明:对于存在复杂一点时空结构的IO,如果从设备功能延伸出的调度体系像八爪鱼一样深入IO内部,那么从抽象高度看,这样的IO与其解耦剥离,不如高内聚。复杂度的变化,导致功能边界的发生质变,效率界限也随之而变。强行切开高耦合会带来浑浊,而不是简化问题。
-----------------------------------------------------------------
多核运用在PC开发是常态,嵌入式也越来越多,因UI与IO的需求不同。
目前的OpenHarmony,有公司也在通过多内核方案,把RTOS的实时性与Linux的高吞吐特点结合,向工业控制领域深入,未来应该会多见。华为有个RTOS内核叫Uniproton,在开源欧拉中使用,目前也被尝试进入OpenHarmony。
请填写推广理由:
分享
只看
楼主