我的目的应该说不是太难,废话不说看要求:
项目设备分两块: 主机 - 分机;
1.主机只有一个,接收分机发来的温度数据并做相应处理;
2.分机有若干,(通常情况有10-20个不等)每个分机上驱动10根电缆,每个电缆上有20个18B20测温;如一切正常,分机正常测温,然后负责测温并发送温度数据给主机;
项目大体上就是这个情况,下面是我需要做的:
无论您是在电路上如何设计还是需要在软件上如何规划都行,我想要的就是——如果分机中某个地方出故障了,我可以大至(不用十分精确)确定是哪个分机上出问题;如果是分机板本有问题,就报告是分机板本身有问题,如果是电缆线有问题那就报告分机板本身没问题,是电缆的问题;
补充:如果能精确到是哪根电缆线有问题就更好了,当然如果不行也没什么;
就是这样,分数是我全部的分数,不是我不想给,我只有这么多;只为了一个认真合理的答案;如有疑问回复追问,谢谢大家
------解决方案--------------------
对分机以及传感器进行编址
采用四位地址:XXYY(均为阿拉伯数字)
分两组每组两位,可以容纳100台设备,足够你的十几台用了
XX表示分机号,YY表示分机中的传感器号
在通信的时候分别把这个地址送上主机,即可识别
需要多做的是:分机中对传感器的数据操作时,除了把温度数据外,也要把CRC读回来。然后,在分机中验证,如果不正常,则给主机一个错误的应答,这样即可知道具体到哪个传感器出错。
如果是通信的问题,则出错点可以限制到通信链路或者分机上
------解决方案--------------------
一、一个主机对应多个从机,一个从机对应多个18b20,说明都是采用总线方式进行通信的。既然是总线,在极端的故障情况下很有可能是整个总线都无法通信。也就是说,在极端情况下,软件是无法将故障点定位到某个从机或某个18b20传感器的;
二、在故障在不影响总线通信的前提下,正如 lbing7 所说的,采用从机分别寻址的方式很容易定位到出故障的从机(18b20也是采用独立ID寻址,同理)
------解决方案--------------------
看你用什么协议
比如 MODbus 或 CAN bus, 都可以为每个地址编号,并可以为每个地址上的每个采样通道编号,这样是否让你能迅速找到出问题的 sensor.(只是举例,一个MODbus 的地址编号不可能容纳 200个采样通道,所以一个分机应该有两个MODbus 的地址 )
如果是分机板本有问题,就报告是分机板本身有问题,如果是电缆线有问题那就报告分机板本身没问题,是电缆的问题;
不了解具体线路,不好说,如果分机用问题,其上200个sensors 都应该有问题,如果只是一根用问题,只是20个sensors 有问题, 如果你有个gui 界面,并为每个sensor 编号,应该比较快
------解决方案--------------------
不是很清楚,你这个硬件的具体架构.
只能是一些猜测的,建议性的处理.
主机--分机
如果分机是挂接在某种总线上的,那一般是通过对各分机的轮询,大致判断到底是
那部分出问题.
如果是星形结构的,那基本上是物理上分离的,应该是立即可以判断哪里出问题.
如果是带片选信号,那片选本身就是区分的信息.
分机:
18B20 自身是有唯一的ROM码.可以通过这个来进行区分.
当然也可以自己重新进行编址区分.
一个产品居然有数千个sensors,
我想更应该考虑的应该是数据 安全,正确,稳定的传输问题吧.
------解决方案--------------------
按线顺序读温度,读完所有一条线上的传感器
如果:正确读取到某一个或几个或全部传感器,则判断线正常,全部读取错误,则判断连线故障
对于不能正确读取的传感器,再尝试读一次,如果仍然不可以读,则,判断该传感器故障
每条线路都这样处理
------解决方案--------------------
你做核电站的控制系统吗?呵呵!
本人小白,以下为愚见:
肯定要为每个传感器分配地址的,但是这个不是具体的实现方式:
故障判断主要分为一下四个大模块进行:
1、主机分机电缆故障检测(根据你使用的总线而定,这是可以做到的)
2、分机故障检测(判断分机是否正常工作,发送一个随机数,让分机返回来;从机接受主机的时候,需要从中断中接受,但是从机向主机发送数据的时候,最好在主循环中发送;否则,当从机在某个模块陷入死循环的时候,数据也会正常返回)
3、温度传感器通讯检测(检测传感器的连接电缆)(CRC就可以了,在从机进行判断)
4、数据合理性判断(这个就比较复杂了,结合你自己的专业对其进行判断,比如说,某些地方温度不会低于某个值,但是它低于了这个值,那么,就可以断定这个传感器有问题了;这个步骤最好在主机中进行,因为这样才能联系各个传感器返回的数据进行分析,比如在一个电炉里面,大家都800度,只有一个20度,那这个肯定有问题,但是这个东西只有相互联系起来才能进行判断)
你一个主机带那么多从机,还要收集上千个传感器的数据,时效性肯定很差,既然如此,故障的判断如果有延时,那你也别介意啦~
能透露你在做什么吗?我很好奇啊!
------解决方案--------------------
主机对从机做2条协议,一条温度数据传输,一条查询状态以检测分机是否在线,不在线的机子即没有安装或者故障,不建议合并成一条协议。
分机对电缆进行编址,电缆对传感器编址,每个传感器有唯一的地址。
对传感器做2种处理,一种读取对应地址的温度,另一种简单的复位或者查询处理,能确认当前传感器是否正常工作。若某一根电缆的所有传感器都有问题即电缆出问题,否则确认某个传感器是否有问题。
------解决方案--------------------
这里面既有硬件的问题,也有软件问题。建议分层控制。分机控制温度传感单元,监测传感单元的状态(可采用轮询或者中断方式),如发现异常记录下来传感器单元的编号,地址错误类型。
主机轮询各个分机,查询状态,是否有告警之类,同时收集其他一些信息。也可以设置成分机利用中断主动上报的模式。实现思想要与实际硬件相匹配。