分布式智能控制-输入组件

31 篇文章 1 订阅
25 篇文章 0 订阅

输入组件主要负责采集各前端传感器的输入信号,目前主要包括有gpio采集到的开关量信号、i2c采集到的模拟量信号等,当然这些信号还都应包括从下属各种单片机(目前只考虑nodeMCU)采集到的信号,还包括了定时器发出的时间通知信号、手机等智能前端发出的人员操控信号等。其中麻烦点的是i2c采集到的有可能是连续的数值即数组。

我对未来控制场景的第一个判断就是随着电子元器件的性价比迅速上升,未来随时都会是有几千几万个传感器在我们身边协同工作,这么多的传感器是不可能统一由某一个输入网关来集中管理。同样,相应的执行器件的数量也将是非常庞大的,也不可能统一由某一个输出网关进行集中管理。一个基础的控制模型包括:信号采集、动作执行和裁决器,如果传感器和执行器的数量都上升到万这个级别后,显然裁决器也势必要分散开来,这也是我考虑分布式智能控制的基础。

所以,输入信号是分布于全网、同时向全网馈送。所以很明显的,输入信号必须加以管制,这种管制有两个原则:

  • 使能:非必要不送。如人体移动开灯,当天亮以后,人来人往,再送既无必要也加重了全网负荷

  • 变送:非变化不送。目前通过i2c来采集模拟量输入只能轮询,这就会产生比较大的压力,尤其是需要非常高的响应性之时

所以,输入信号一定要是事件驱动型、使能管控。

变送好办,输入端缓存一下旧值,对新值做个比较即可,甚而如gpio这样本身就是事件驱动型的输入,缓存都不需要。但使能呢?其实从本质上,由于输入信号的分布性,使能信号的来源很大程度上不太可能是本地,所以也应将使能信号视为一种输入信号。反之,如果将其视为命令,则语义方面就不太好处理。

最后就是信号的馈送。有了消息系统,将输入信号组装为json然后通过消息系统发送即可,只是由于分布式的特点,输入端并不清楚谁需要这些信号,所以输入信号需向全网广播,然后由接收者按需过滤。

这里需要讨论一下输入信号的全网广播问题,从直觉上讲,看到这个问题就会觉得不应该如此,而应采取按需发送给需要的接收方。但按需发送的方式从工程上来说是不现实的:

  • 如采取按需发送的方式,则每个输入信号都需串联一个接收队列,在以万起计数的网络中,资源开销太大,增加了系统失效的风险

  • 我们考虑的是智能控制,而智能就体现在随动环境变化而能自我适应、自我调整、自我进化,也就是说整个系统不应该等工程施工完毕就一成不变了,而是系统在不断的进行小幅度的调整、优化。这样一来,按需发送的管理要求就太高了,过于复杂,会明显增加系统功能调整的难度和成本,阻碍系统的进化

其实,输入信号的广播只是广播到裁决器(我叫它为智能体),所以参与广播的设备的数量级是要比传感器的数量少一到两个数量级的,如果是一万个传感器,参与广播的设备数量应该在百这个量级上,以目前消息队列在2千条消息/秒以上的吞吐能力来说,是完全可以支持起来的。

对于控制系统来说,简单可靠才是王道,只要性能上影响不大,全网广播就是最适合的。何况,智能控制如果要做到真正的智能,个性化控制不可避免,而个性化即意味着全动态,底层基础设施过于复杂则实现成本将难以接受。

当然,随着发展,适当增加优先级、实时性保障等也需要逐步纳入视野。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值