分布式智能控制-示例
来源:互联网 发布:余弦相似度算法 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
- 分布式智能控制-示例
- 分布式智能控制初步
- 分布式智能控制-配置
- 分布式智能控制-命名
- 分布式智能控制-输入组件
- 分布式智能控制-动作组件
- 分布式智能控制-条件组件
- 分布式智能控制-控制逻辑组件
- 人机智能交互技术示例-Leap Motion通过ROS控制机械手Gazebo仿真
- C++智能指针示例
- PPStream链接智能控制
- 复制控制+智能指针
- 智能控制简介
- ZooKeeper示例 分布式锁
- ZooKeeper示例 分布式锁
- ZooKeeper示例 分布式锁
- 分布式事务示例
- 分布式事物示例3
- Java 读文件写入数据库 编码问题 utf-8、 GBK
- 【git】首次上传项目到oschina
- 浅谈OC(object-c)中深浅复制
- 【WPF】【C#】联网异步获取二进制文件(如图片)的流程
- 原声的ajax
- 分布式智能控制-示例
- 获取当前系统时间
- java数组
- 前端开发时需要注意的要点 避免浏览器兼容问题
- SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
- Java返回当前对象的好处
- 点击按钮编写内容
- win下GIT GUI的使用教程
- [Kinect&Emgu]拉数据方式(延时)获得图像的方法