分布式智能控制-示例

来源:互联网 发布:余弦相似度算法 java 编辑:程序博客网 时间:2024/04/29 20:20

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

from cn.ijingxi.corpuscle.python import logicfrom cn.ijingxi.corpuscle.python import activefrom cn.ijingxi.corpuscle.python import conditionfrom 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
原创粉丝点击