恭喜,你发布的帖子
发布于 2025-06-08 15:56:57
3楼
这种问题可以用多优先级解决,且每个设备各自独立,任何任务随机出现,不必刻意安排,不必捆绑一起循环。关键是调度规则清晰。
上图是5个温控器通过CB1241的Modbus进行控制的一个场景。
每个温控器实例的任务,都分为4个等级:L0、L1、L2、L3(最高)
L0:读任务。
L1:多个设备之间,需要一起协作联动的读任务。
L2:写任务
L3:多个设备之间,需要一起协作联动的写任务。
当L3与L1同时出现,当L2与L1同时出现的时候,是如何按照等级次序,自动切换进行。
每个设备之间并不知道彼此的需求,但他们都平等的知道调度规则,就像遵循红路灯的交通规则一样,每个司机自己根据规则自主决定调度,无需交警在现场命令每个人的行动。
也就是,多主体之间的协调,因规则而自动产生。
下图是多主体的L3、L2、L1任务需求同时出现时候的自动排序。
上面Trace图中,一格折线变化之间,就是一个扫描周期。
这样做的好处就是:设备和任务可以任意增加和扩展,3个、5个、10个等等,自由增减。可以动态化任意联动,无需关注和打乱彼此的关联耦合,且任务不必是相同性质。规则集合自动协调一切。各自按照规则走即可,彼此无关。
另外,第一张图可能会注意到:各个设备的L3任务,在执行的时候,彼此之间是没有间隔一个扫描周期的,虽然分属不同的实例,但紧密相随。其它低等级的任务,彼此之间都有一个扫描周期的间隔。这是规则集合中,离散解耦的规则元素,叠加的效果。
一切都不是死的,都可随时扩展和变化,唯有规则是明确的公开的。
代码是语义的元素,语义是需求的集合化抽象。
宝侠最近又删帖子了
请填写推广理由:
分享
只看
楼主