分布式智能控制-示例

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

见证奇迹的时刻来了!看一下下面的代码和前面一篇文章中实现“带总控的开关功能”的代码有什么不同呢?

from cn.ijingxi.corpuscle.python import logic
from cn.ijingxi.corpuscle.python import active
from cn.ijingxi.corpuscle.python import condition
from cn.ijingxi.corpuscle.python import input

#设置动作,2号树莓派的16号gpio口
a1=active.getActive_gpio("/pi2/16",active.HIGH)
a2=active.getActive_gpio("/pi2/16",active.LOW)
#处理逻辑,将输入、状态机、输出动作等组装在一起
l=logic("smtest")
l.addTrans("opend","close","closed",a1)
l.addTrans("closed","open","opend",a2)
l.setInitState("opend")
#输入,1号树莓派的1号、15号gpio口,带上拉电阻,提供防抖动功能
i1=input.getInput_gpio("/pi1/15",input.PULL_UP,input.Flitter)
i2=input.getInput_gpio("/pi1/1",input.PULL_UP,input.Flitter)
#使能
ce=condition.getCompare(condition.Equal,0)
i1.addEnable(i2,ce)
#输入条件
c0=condition.getCompare(condition.Equal,0)
l.addInput(i1,c0,"close")
c1=condition.getCompare(condition.Equal,1)
l.addInput(i1,c1,"open")

可能仔细看都看不太出来:上述代码和之前的代码只有两个active的/pi1/16换成了/pi2/16。而它实现的功能就变成了树莓派1上的两个按钮(一个总控,一个实际开关)来控制另一个树莓派pi2上的led灯的亮灭了。

更美妙的是,这段代码不必运行在pi1或pi2上,随便运行在哪台机器上都可以,也都不会影响整个功能的正常工作。

实际上当我做这个测试的时候,这段代码是运行在了我的ubuntu笔记本上

这样一来,我们完全可以这样来构造智能控制系统:

  • 将一部分树莓派作为前端传感器、动作执行器的汇集与管理节点靠前部署

  • 一部分廉价主机执行控制逻辑来实现整个系统的控制驱动

  • 另一部分高性能主机则用于对系统运行过程中海量传感器所收集到的海量数据进行挖掘、学习,识别环境扰动、人员应对模式,提出系统进化建议,并更新知识库,对控制层进行微调

  • 一台或几台主机用于整个系统的管理与人机交互界面

要实现这样的智能控制系统,我们还有两个关键工作要做:

1、实现控制逻辑的可靠装卸

2、状态机的半自动构造

控制逻辑的装卸其实只是个工程问题,但需要一个较为长期的验证与磨合,状态机的自动构造则是一个需要长期坚持的艰难工作。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值