著录项信息
专利名称 | 用于传感器节点的总线式支持热插拔的传感分开方法 |
申请号 | CN201310742924.4 | 申请日期 | 2013-12-30 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2014-03-19 | 公开/公告号 | CN103647793A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L29/06 | IPC分类号 | H;0;4;L;2;9;/;0;6;;;G;0;6;F;1;3;/;4;0查看分类表>
|
申请人 | 无锡清华信息科学与技术国家实验室物联网技术中心 | 申请人地址 | 江苏省无锡市国家高新技术产业开发区太科园大学科技园清源路A区502号房
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 无锡清华信息科学与技术国家实验室物联网技术中心 | 当前权利人 | 无锡清华信息科学与技术国家实验室物联网技术中心 |
发明人 | 毛续飞;韩建康;叶胜东 |
代理机构 | 无锡市大为专利商标事务所(普通合伙) | 代理人 | 曹祖良;韩凤 |
摘要
本发明涉及一种用于传感器节点的总线式支持热插拔的传感分开方法,将通信模块和传感器模块从硬件上分开,硬件上基于USART接口,设计实现该接口的热插拔功能。本发明设计了智能传感器协议,传感器模块本地存储了一些自身的相关信息,通信模块可以根据协议制定的相关命令接口获得这些信息并收集传感器模块采集的数据,实现通信模块与传感器模块之间的数据传输。智能传感器总线接口上可以挂载多个传感器模块,总线接口不仅提供通信模块与传感器模块的通信链路,并且提供传感器模块的电源供电。在通信模块带电工作的情况下可以随时从总线上卸载传感器模块,也可以挂载新的传感器模块到总线上,实现传感器模块的热插拔功能。
1.用于传感器节点的总线式支持热插拔的传感分开方法,其特征是,采用三种数据帧格式,即请求帧、正确响应帧、异常响应帧,以及六种命令接口,即传感器模块申请加入总线命令、通信模块获取传感器模块相关信息命令、通信模块获取传感器模块采集的数据命令、通信模块配置传感器模块命令、传感器模块突发上传数据命令及通信模块唤醒传感器模块命令;以上每种命令均有相应的请求帧、正确响应帧和异常响应帧;请求帧由命令发起方发送,命令接收方接收判断;正确响应帧和异常响应帧由命令接收方发送,命令发起方接收判断;
所述传感器模块申请加入总线命令、传感器模块突发上传数据命令,发起方是传感器模块,命令接收方是通信模块;所述通信模块获取传感器模块相关信息命令、通信模块获取传感器模块采集的数据命令、通信模块配置传感器模块命令、通信模块唤醒传感器模块命令,发起方是通信模块,命令接收方是传感器模块;命令发起方发送相应的命令请求帧,命令接收方收到请求帧后,发送与请求命令相对应的响应数据帧:在通信过程中如果没有出现错误异常,则命令接收方将向命令发起方发送正确响应帧,如果出现错误异常,命令接收方将向命令发起方发送异常响应帧;命令发起方接收到异常响应帧后将会根据通信错误类型做相应处理;
同时有多个传感器模块要求加入总线时,若一个传感器模块在规定的超时时间内没有收到正确的响应,传感器模块会结束此次过程,然后在过一段时间后继续下一次申请过程;
这个时间的选取是通过选取一个随机数,利用这个随机数乘以一个基准时间,得到开启下一次申请过程所需要的时间;在此时间之后开启新的申请过程,直到申请成功。
2.如权利要求1所述用于传感器节点的总线式支持热插拔的传感分开方法,其特征是,通信过程中数据采用CRC校验方式。
3.如权利要求1或2所述用于传感器节点的总线式支持热插拔的传感分开方法,其特征是,通信协议的数据帧包括:传感器类别域、GUID域、功能域、数据域和校验域,其中GUID表示传感器模块全球唯一ID号;当通信出现错误时,被请求方会反馈异常响应,并且返回的数据帧中包含异常代码,指示出错的原因。
4.如权利要求3所述用于传感器节点的总线式支持热插拔的传感分开方法,其特征是,所述传感器模块申请加入总线命令具体如下,其中RJB表示申请加入总线:
在通信模块端:通信模块接收到传感器模块的RJB请求命令,对请求的数据帧继续相关位域的判断,首先检查数据帧的CRC校验是否正确,如果不正确,则直接结束通信过程,如果正确,判断功能码是否正确,如果不是RJB命令码,则直接结束通信过程,如果功能码正确,通信模块将处理RJB请求,通信模块将为传感器模块分配一个总线上唯一的地址,如果地址分配错误,则通信模块将发送异常码为0x04的异常响应帧给传感器模块,表明总线上传感器模块已经满了,不能再挂载传感器模块,如果地址分配成功,通信模块将发送正确响应帧给传感器模块;
在传感器模块端:传感器模块接收到通信模块的RJB响应帧后,对响应帧的相关域进行判断,首先检查数据帧的CRC校验是否正确,如果不正确,则直接结束通信过程,准备发送下一次RJB命令;如果正确,判断GUID是否正确,如果GUID和自己的ID号不符,则直接结束通信过程,准备发送下一次RJB命令;如果GUID正确,判断功能码是否是RJB,如果是,则表明通信模块收到了RJB请求,表明自己已经成功加入总线;如果功能码是RJB+0x80,则表明总线上的传感器模块已经满,传感器模块将结束请求过程。
5.如权利要求3所述用于传感器节点的总线式支持热插拔的传感分开方法,其特征是,所述通信模块获取传感器模块相关信息命令具体如下,其中GNI表示获取传感器模块相关信息,GUID表示传感器模块全球唯一ID号:
在通信模块端:通信模块收到GNI响应帧后,首先检查CRC校验域,如果不正确,则通信模块发送异常码为0x03的异常响应帧给传感器模块,如果正确则检查GUID域,检查是否与要获取的传感器模块的GUID相同,若不同,则通信模块发送异常码为0x01的异常响应帧给传感器模块,若相同,则继续检查功能码是否正确,即为GNI,若不正确,则通信模块发送异常码为0x02的异常响应帧给传感器模块,若功能码正确,通信模块则存储传感器模块发来的传感器相关信息;
在传感器模块端:传感器模块收到GNI命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查GUID域,检查是否与自己的ID号相同,若不同,则结束通信过程,若相同,则继续检查功能码是否正确,即为GNI,若为GNI+0x80,则传感器模块根据异常码进行相应的处理并开启错误重传机制,若功能码正确,传感器模块则处理通信模块的GNI请求,从flash中读取传感器相关信息并作为GNI正确响应帧的数据体发送给通信模块。
6.如权利要求3所述用于传感器节点的总线式支持热插拔的传感分开方法,其特征是,所述通信模块获取传感器模块采集的数据命令具体如下,其中SAR表示获取传感器模块采集的数据信息,GUID表示传感器模块全球唯一ID号:
在通信模块端:通信模块收到RSAR响应帧后,首先检查CRC校验域,如果不正确,则通信模块发送异常码为0x03的异常响应帧给传感器模块,如果正确则检查GUID域,检查是否与要获取的传感器模块的GUID相同,若不同,则通信模块发送异常码为0x01的异常响应帧给传感器模块,若相同,则继续检查功能码是否正确,即为RSAR,若不正确,则通信模块发送异常码为0x02的异常响应帧给传感器模块,若功能码正确,通信模块则存储传感器模块发来的传感器相关信息;
在传感器模块端:传感器模块收到RSAR命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查GUID域,检查是否与自己的ID号相同,若不同,则结束通信过程,若相同,则继续检查功能码是否正确,即为RSAR,若为RSAR+0x80,则传感器模块根据异常码进行相应的处理并开启错误重传机制,若功能码正确,传感器模块则处理通信模块的RSAR请求,将采集的数据作为RSAR正确响应帧的数据体发送给通信模块。
7.如权利要求3所述用于传感器节点的总线式支持热插拔的传感分开方法,其特征是,所述通信模块配置传感器模块命令具体如下,其中CSM表示配置传感器模块,GUID表示传感器模块全球唯一ID号:
在通信模块端:通信模块收到CSM响应帧后,首先检查CRC校验域,如果不正确,则通信模块发送异常码为0x03的异常响应帧给传感器模块,如果正确则检查GUID域,检查是否与要获取的传感器模块的GUID相同,若不同,则通信模块发送异常码为0x01的异常响应帧给传感器模块,若相同,则继续检查功能码是否正确,即为CSM,若不正确,则通信模块发送异常码为0x02的异常响应帧给传感器模块,若功能码正确,通信模块则存储传感器模块发来的传感器相关信息;
在传感器模块端:传感器模块收到CSM命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查GUID域,检查是否与自己的ID号相同,若不同,则结束通信过程,若相同,则继续检查功能码是否正确,即为CSM,若为CSM+0x80,则传感器模块根据异常码进行相应的处理并开启错误重传机制,若功能码正确,传感器模块则处理通信模块的CSM请求,将通信模块发来的配置信息进行相关的配置并向通信模块发送正确的CSM响应。
8.如权利要求3所述用于传感器节点的总线式支持热插拔的传感分开方法,其特征是,所述传感器模块突发上传数据命令具体如下,其中SMSU表示传感器模块突发上传数据,GUID表示传感器模块全球唯一ID号:
在通信模块端:通信模块收到SMSU命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查功能码是否正确,即为SMSU,若为CSM+0x80,则通信模块根据异常码进行相应的处理并开启错误重传机制,若功能码正确,通信模块则处理传感器模块的SMSU请求,将传感器模块发来的传感器采集的数据进行相关的处理并向传感器模块发送正确的SMSU响应;
在传感器模块端:传感器模块收到SMSU响应帧后,首先检查CRC校验域,如果不正确,则传感器模块发送异常码为0x03的异常响应帧给通信模块,如果正确则检查GUID域,检查是否与自己的GUID相同,若不同,则传感器模块发送异常码为0x01的异常响应帧给通信模块,若相同,则继续检查功能码是否正确,即为SMSU,若不正确,则传感器模块发送异常码为
0x02的异常响应帧给通信模块,若功能码正确,结束通信,表明传感器采集的数据已经正确送达通信模块。
9.如权利要求1所述用于传感器节点的总线式支持热插拔的传感分开方法,其特征是,在通信模块和传感器模块通信过程中,判断相邻两次串口中断之间的时间是否超过30ms,如果超过30ms则表示没有串口数据,立即清空串口缓冲区。
用于传感器节点的总线式支持热插拔的传感分开方法\n技术领域\n[0001] 本发明涉及一种总线式的支持热插拔的传感分开方法,用于硬件上分开的数据传输模块和传感器模块的通信,属于智能传感器技术领域。\n背景技术\n[0002] 目前,在智能传感器领域,基于总线式的智能传感器标准只有IEEE1451.3标准,该标准定义了一个数字接口,用于连接多个分散的传感器,并且具有不同频谱特性的设备能够共处于一条总线上,该标准利用展频技术,在一根信号电缆上实现数据同步采集、通信和对连接在变送器总线上的电子设备供电。该标准规定了底层特殊的基于协议的硬件接口,这将使设计复杂度大大提高,成本增加,设计开发难度加大。并且国内在智能传感器领域尚未有标准出台。\n发明内容\n[0003] 为了解决上述国际标准协议中的缺陷,降低开发难度,减少开发成本,本发明提出一种基于总线式的支持热插拔的传感分开方法,其包括一套智能传感器协议,该智能传感器协议规定了传感器模块与通信模块的数据通信方式及差错检验方式;底层硬件接口是目前常用的UART总线接口,这样硬件接口简单通用,便于开发人员设计。\n[0004] 本发明所采用的技术方案是:在硬件接口上,采用串行通信接口UART。智能传感器协议规定了三种数据帧格式,即请求PDU(协议数据单元)规定的数据格式(请求帧)、正确响应PDU规定的数据格式(正确响应帧)、异常响应PDU规定的数据格式(异常响应帧),规定了六种命令接口,提出了各种命令接口的通信流程及错误检测机制。通信过程中数据采用CRC校验方式,保证通信的可靠性。\n[0005] 智能传感器协议设计了六种命令接口,即:传感器模块申请加入总线命令、通信模块获取传感器模块相关信息命令、通信模块获取传感器模块采集的数据命令、通信模块配置传感器模块命令、传感器模块突发上传数据命令及通信模块唤醒传感器模块命令。以上每种命令均有相应的请求帧、正确响应帧和异常响应帧;请求帧由命令发起方发送,命令接收方接收判断;正确响应帧和异常响应帧由命令接收方发送,命令发起方接收判断。\n[0006] 所述传感器模块申请加入总线命令、传感器模块突发上传数据命令,发起方是传感器模块,命令接收方是通信模块;所述通信模块获取传感器模块相关信息命令、通信模块获取传感器模块采集的数据命令、通信模块配置传感器模块命令、通信模块唤醒传感器模块命令,发起方是通信模块,命令接收方是传感器模块;命令发起方发送相应的命令请求帧,命令接收方收到请求帧后,发送与请求命令相对应的响应数据帧:在通信过程中如果没有出现错误异常,则命令接收方将向命令发起方发送正确响应帧,如果出现错误异常,命令接收方将向命令发起方发送异常响应帧;命令发起方接收到异常响应帧后将会根据通信错误类型做相应处理。\n[0007] 通信协议的数据帧包括:传感器类别域、GUID域、功能域、数据域和校验域,其中GUID表示传感器模块全球唯一ID号;当通信出现错误时,被请求方会反馈异常响应,并且返回的数据帧中包含异常代码,指示出错的原因。\n[0008] 所述传感器模块申请加入总线命令具体如下,其中RJB表示申请加入总线:\n[0009] 在通信模块端:通信模块接收到传感器模块的RJB请求命令,对请求的数据帧继续相关位域的判断,首先检查数据帧的CRC校验是否正确,如果不正确,则直接结束通信过程,如果正确,判断功能码是否正确,如果不是RJB命令码,则直接结束通信过程,如果功能码正确,通信模块将处理RJB请求,通信模块将为传感器模块分配一个总线上唯一的地址,如果地址分配错误,则通信模块将发送异常码为0x04的异常响应帧给传感器模块,表面总线上传感器模块已经满了,不能再挂载传感器模块,如果地址分配成功,通信模块将发送正确响应帧给传感器模块;\n[0010] 在传感器模块端:传感器模块接收到通信模块的RJB响应帧后,对响应帧的相关域进行判断,首先检查数据帧的CRC校验是否正确,如果不正确,则直接结束通信过程,准备发送下一次RJB命令;如果正确,判断GUID是否正确,如果GUID和自己的ID号不符,则直接结束通信过程,准备发送下一次RJB命令;如果GUID正确,判断功能码是否是RJB,如果是,则表明通信模块收到了RJB请求,表明自己已经成功加入总线;如果功能码是RJB+0x80,则表明总线上的传感器模块已经满,传感器模块将结束请求过程。\n[0011] 所述通信模块获取传感器模块相关信息命令具体如下,其中GNI表示获取传感器模块相关信息,GUID表示传感器模块全球唯一ID号:\n[0012] 在通信模块端:通信模块收到GNI响应帧后,首先检查CRC校验域,如果不正确,则通信模块发送异常码为0x03的异常响应帧给传感器模块,如果正确则检查GUID域,检查是否与要获取的传感器模块的GUID相同,若不同,则通信模块发送异常码为0x01的异常响应帧给传感器模块,若相同,则继续检查功能码是否正确,即为GNI,若不正确,则通信模块发送异常码为0x02的异常响应帧给传感器模块,若功能码正确,通信模块则存储传感器模块发来的传感器相关信息;\n[0013] 在传感器模块端:传感器模块收到GNI命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查GUID域,检查是否与自己的ID号相同,若不同,则结束通信过程,若相同,则继续检查功能码是否正确,即为GNI,若为GNI+0x80,则传感器模块根据异常码进行相应的处理并开启错误重传机制,若功能码正确,传感器模块则处理通信模块的GNI请求,从flash中读取传感器相关信息并作为GNI正确响应帧的数据体发送给通信模块。\n[0014] 所述通信模块获取传感器模块采集的数据命令具体如下,其中SAR表示获取传感器模块采集的数据信息,GUID表示传感器模块全球唯一ID号:\n[0015] 在通信模块端:通信模块收到RSAR响应帧后,首先检查CRC校验域,如果不正确,则通信模块发送异常码为0x03的异常响应帧给传感器模块,如果正确则检查GUID域,检查是否与要获取的传感器模块的GUID相同,若不同,则通信模块发送异常码为0x01的异常响应帧给传感器模块,若相同,则继续检查功能码是否正确,即为RSAR,若不正确,则通信模块发送异常码为0x02的异常响应帧给传感器模块,若功能码正确,通信模块则存储传感器模块发来的传感器相关信息;\n[0016] 在传感器模块端:传感器模块收到RSAR命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查GUID域,检查是否与自己的ID号相同,若不同,则结束通信过程,若相同,则继续检查功能码是否正确,即为RSAR,若为RSAR+0x80,则传感器模块根据异常码进行相应的处理并开启错误重传机制,若功能码正确,传感器模块则处理通信模块的RSAR请求,将采集的数据作为RSAR正确响应帧的数据体发送给通信模块。\n[0017] 所述通信模块配置传感器模块命令具体如下,其中CSM表示配置传感器模块,GUID表示传感器模块全球唯一ID号:\n[0018] 在通信模块端:通信模块收到CSM响应帧后,首先检查CRC校验域,如果不正确,则通信模块发送异常码为0x03的异常响应帧给传感器模块,如果正确则检查GUID域,检查是否与要获取的传感器模块的GUID相同,若不同,则通信模块发送异常码为0x01的异常响应帧给传感器模块,若相同,则继续检查功能码是否正确,即为CSM,若不正确,则通信模块发送异常码为0x02的异常响应帧给传感器模块,若功能码正确,通信模块则存储传感器模块发来的传感器相关信息;\n[0019] 在传感器模块端:传感器模块收到CSM命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查GUID域,检查是否与自己的ID号相同,若不同,则结束通信过程,若相同,则继续检查功能码是否正确(为CSM),若为CSM+0x80,则传感器模块根据异常码进行相应的处理并开启错误重传机制,若功能码正确,传感器模块则处理通信模块的CSM请求,将通信模块发来的配置信息进行相关的配置并向通信模块发送正确的CSM响应。\n[0020] 所述传感器模块突发上传数据命令具体如下,其中SMSU表示传感器模块突发上传数据,GUID表示传感器模块全球唯一ID号:\n[0021] 在通信模块端:通信模块收到SMSU命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查功能码是否正确,即为SMSU,若为CSM+0x80,则通信模块根据异常码进行相应的处理并开启错误重传机制,若功能码正确,通信模块则处理传感器模块的SMSU请求,将传感器模块发来的传感器采集的数据进行相关的处理并向传感器模块发送正确的SMSU响应;\n[0022] 在传感器模块端:传感器模块收到SMSU响应帧后,首先检查CRC校验域,如果不正确,则传感器模块发送异常码为0x03的异常响应帧给通信模块,如果正确则检查GUID域,检查是否与自己的GUID相同,若不同,则传感器模块发送异常码为0x01的异常响应帧给通信模块,若相同,则继续检查功能码是否正确,即为SMSU,若不正确,则传感器模块发送异常码为0x02的异常响应帧给通信模块,若功能码正确,结束通信,表明传感器采集的数据已经正确送达通信模块。\n[0023] 同时有多个传感器模块要求加入总线时,若一个传感器模块在规定的超时时间内没有收到正确的响应,传感器模块会结束此次过程,然后在过一段时间后继续下一次申请过程;这个时间的选取是通过选取一个随机数,利用这个随机数乘以一个基准时间,得到开启下一次申请过程所需要的时间;在此时间之后开启新的申请过程,直到申请成功。\n[0024] 在通信模块和传感器模块通信过程中,判断相邻两次串口中断之间的时间是否超过30ms,如果超过30ms则表示没有串口数据,立即清空串口缓冲区。\n[0025] 本发明的有益效果是:\n[0026] (1)降低通信模块和传感器模块之间的耦合度;\n[0027] (2)硬件上采用四线制(电源、地、TXD、RXD),硬件连接简单;\n[0028] (3)总线上可以挂载多个传感器模块,并且支持传感器模块的热插拔,实现了通信模块与传感器模块之间数据的透明传输;\n[0029] (4)系统可扩展性强;\n[0030] (5)应用该方法设计的传感器产品和设备的后期维护简单,节约人力和资金成本。\n附图说明\n[0031] 图1是智能传感器应用硬件接口连接框图。\n[0032] 图2是智能传感器协议事务处理的一般过程图。\n[0033] 图3是智能传感器协议中传感器模块请求加入总线命令通信模块端的状态图。\n[0034] 图4是智能传感器协议中传感器模块请求加入总线命令传感器模块端的状态图。\n[0035] 图5是智能传感器协议中通信模块获取传感器模块的相关信息命令通信模块端的状态图。\n[0036] 图6是智能传感器协议中通信模块获取传感器模块的相关信息命令传感器模块端的状态图。\n[0037] 图7是智能传感器协议中通信模块获取传感器模块采集的数据命令通信模块端的状态图。\n[0038] 图8是智能传感器协议中通信模块获取传感器模块采集的数据命令传感器模块端的状态图。\n[0039] 图9是智能传感器协议中通信模块配置传感器命令通信模块端的状态图。\n[0040] 图10是智能传感器协议中通信模块配置传感器命令传感器模块端的状态图。\n[0041] 图11是智能传感器协议中传感器模块突发上传数据命令通信模块端的状态图。\n[0042] 图12是智能传感器协议中传感器模块突发上传数据命令传感器模块端的状态图。\n[0043] 图中CM表示通信模块,SM表示传感器模块,RJB表示申请加入总线,GNI表示获取传感器模块相关信息,RSAR表示获取传感器模块采集的数据信息,CSM表示配置传感器模块,SMSU表示传感器模块突发上传数据,GUID表示传感器模块全球唯一ID号。\n具体实施方式\n[0044] 下面结合附图和实施例对本发明作进一步说明。\n[0045] 本发明将数据传输模块(以下称为通信模块)和传感器模块从硬件上分开,降低它们之间的硬件耦合度。硬件上基于UART接口,设计实现该接口的热插拔功能,即传感器模块可以带电即插即用。\n[0046] 本发明设计的智能传感器协议,用于传感器模块和通信模块之间的数据通信,传感器模块本地存储了一些自身的相关信息,例如传感器类别、生产厂家及出厂日期、GUID(全球唯一ID号)及传感器自身的一些参数等信息,通信模块可以根据协议制定的相关命令接口获得这些信息并收集传感器模块采集的数据,实现通信模块与传感器模块之间的数据传输。智能传感器总线接口上可以挂载多个传感器模块,总线接口不仅提供通信模块与传感器模块的通信链路,并且提供传感器模块的电源供电。在通信模块带电工作的情况下可以随时从总线上卸载传感器模块,也可以挂载新的传感器模块到总线上,实现传感器模块的热插拔功能。\n[0047] 如图1所示,本发明在硬件接口上,采用串行通信接口UART。传感器模块与通信模块之间采用四线制(电源、地、TXD、RXD)硬件连接,总线上可以挂载多个传感器模块,并且支持传感器模块的热插拔,UART接口成为一个智能传感器接口,其中传感器模块具有独立的处理器和存储器,通信模块除了包括处理器和存储器外,还具有无线通信模块、LED指示模块、USB接口模块及电源模块。传感器模块的供电来源是通信模块,通过智能传感器接口给予。\n[0048] 智能传感器协议规定了三种数据帧格式,即请求PDU(协议数据单元)规定的数据格式(请求帧)、正确响应PDU规定的数据格式(正确响应帧)、异常响应PDU规定的数据格式(异常响应帧),规定了六种命令接口,提出了各种命令接口的通信流程及错误检测机制。通信过程中数据采用CRC校验方式,保证通信的可靠性。\n[0049] 智能传感器协议总共设计了六种命令接口,即传感器模块申请加入总线命令、通信模块获取传感器模块相关信息命令、通信模块获取传感器模块采集的数据命令、通信模块配置传感器模块命令、传感器模块突发上传数据命令及通信模块唤醒传感器模块命令。\n以上每种命令均有相应的请求帧、正确响应帧和异常响应帧;请求帧由命令发起方发送,命令接收方接收判断;正确响应帧和异常响应帧由命令接收方发送,命令发起方接收判断;\n[0050] 所述传感器模块申请加入总线命令、传感器模块突发上传数据命令,命令发起方是传感器模块,命令接收方是通信模块;所述通信模块获取传感器模块相关信息命令、通信模块获取传感器模块采集的数据命令、通信模块配置传感器模块命令、通信模块唤醒传感器模块命令,命令发起方是通信模块,命令接收方是传感器模块;命令发起方发送相应的命令请求帧,命令接收方收到请求帧后,发送与请求命令相对应的响应数据帧:在通信过程中如果没有出现错误异常,则命令接收方将向命令发起方发送正确响应帧,如果出现错误异常,命令接收方将向命令发起方发送异常响应帧;命令发起方接收到异常响应帧后将会根据通信错误类型做相应处理。\n[0051] 比如,通信模块与传感器模块的通信流程为:当传感器模块刚加入总线时,传感器模块向通信模块发送申请加入总线命令RJB,格式为请求帧,通信模块收到RJB命令后为传感器模块分配一个有效的地址,该地址和传感器类别一起所表示的信息在总线上是唯一的;通信模块检查总线上是否有有效的地址,如果有,通信模块会发送RJB正确响应帧,传感器模块收到由通信模块发来的正确响应帧后,表明自己已经成功加入总线,可以和通信模块之间进行后续的通信;如果通信模块检查在总线上的传感器模块数目达到规定的数目上限或者出现其它通信错误,通信模块将会向传感器模块发送RJB异常响应帧;传感器模块收到的RJB异常响应帧如果表明是总线上传感器模块数目达到规定数目上限的错误,则传感器模块不再申请加入总线,否则,传感器模块会重新发送RJB命令,直到申请加入总线成功为止。\n[0052] 以上是RJB命令通信过程,命令发起方是传感器模块,命令接收方是通信模块。对于其它的命令,过程类似。其中GNI、RSAR、CSM、RERJB命令发起方是通信模块,SMSU命令发起方是传感器模块。\n[0053] 如图2所示,是本发明中智能传感器协议设计核心部分的事务处理的一般过程。\nSSP表示智能传感器协议(smart sensor protocol)。协议数据帧主要包括传感器类别域、GUID域、功能域、数据域和校验域,协议事务处理主要是对这些域的处理,对于正常通信时不会出现错误。但是在通信出现故障时就需要差错检测机制,本智能传感器协议包含差错检测机制的设计,当通信出现错误时,被请求方会反馈异常响应,并且返回的数据帧中包含异常代码,指示出错的原因。\n[0054] 如图3所示,是本发明中协议设计部分传感器模块申请加入总线命令通信模块端的状态图。CM接收到SM的RJB请求命令,对请求的数据帧继续相关位域的判断,首先检查数据帧的CRC校验是否正确,如果不正确,则直接结束通信过程,如果正确,判断功能码是否正确,如果不是RJB命令码,则直接结束通信过程,如果功能码正确,CM将处理RJB请求,CM将为SM分配一个总线上唯一的地址,如果地址分配错误,则CM将发送异常码为0x04的异常响应帧给SM,表面总线上SM已经满了,不能再挂载SM,如果地址分配成功,CM将发送正确响应帧给SM。\n[0055] 如图4所示,是本发明中协议设计部分传感器模块申请加入总线命令传感器模块端的状态图。SM接收到CM的RJB响应帧后,对响应帧的相关域进行判断,首先检查数据帧的CRC校验是否正确,如果不正确,则直接结束通信过程,准备发送下一次RJB命令。如果正确,判断GUID是否正确,如果GUID和自己的ID号不符,则直接结束通信过程,准备发送下一次RJB命令。如果GUID正确,判断功能码是否是RJB,如果是,则表明CM收到了RJB请求,表明自己已经成功加入总线。如果功能码是RJB+0x80,则表明总线上的SM已经满,SM将结束请求过程。\n[0056] 如图5所示,是本发明中智能传感器协议设计部分通信模块获取传感器模块相关信息命令通信模块端的状态图。CM收到GNI响应帧后,首先检查CRC校验域,如果不正确,则CM发送异常码为0x03的异常响应帧给SM,如果正确则检查GUID域,检查是否与要获取的SM的GUID相同,若不同,则CM发送异常码为0x01的异常响应帧给SM,若相同,则继续检查功能码是否正确(为GNI),若不正确,则CM发送异常码为0x02的异常响应帧给SM,若功能码正确,CM则存储SM发来的传感器相关信息。\n[0057] 如图6所示,是本发明中智能传感器协议设计部分通信模块获取传感器模块相关信息命令传感器模块端的状态图。SM收到GNI命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查GUID域,检查是否与自己的ID号相同,若不同,则结束通信过程,若相同,则继续检查功能码是否正确(为GNI),若为GNI+0x80,则SM根据异常码进行相应的处理并开启错误重传机制,若功能码正确,SM则处理CM的GNI请求,从flash中读取传感器相关信息并作为GNI正确响应帧的数据体发送给CM。\n[0058] 如图7所示,是本发明中智能传感器协议设计部分通信模块获取传感器模块采集的数据命令通信模块端的状态图。CM收到RSAR响应帧后,首先检查CRC校验域,如果不正确,则CM发送异常码为0x03的异常响应帧给SM,如果正确则检查GUID域,检查是否与要获取的SM的GUID相同,若不同,则CM发送异常码为0x01的异常响应帧给SM,若相同,则继续检查功能码是否正确(为RSAR),若不正确,则CM发送异常码为0x02的异常响应帧给SM,若功能码正确,CM则存储SM发来的传感器相关信息。\n[0059] 如图8所示,是本发明中智能传感器协议设计部分通信模块获取传感器模块采集的数据命令传感器模块端的状态图。SM收到RSAR命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查GUID域,检查是否与自己的ID号相同,若不同,则结束通信过程,若相同,则继续检查功能码是否正确(为RSAR),若为RSAR+0x80,则SM根据异常码进行相应的处理并开启错误重传机制,若功能码正确,SM则处理CM的RSAR请求,将采集的数据作为RSAR正确响应帧的数据体发送给CM。\n[0060] 如图9所示,是本发明中智能传感器协议设计部分通信模块配置传感器模块命令通信模块端的状态图。CM收到CSM响应帧后,首先检查CRC校验域,如果不正确,则CM发送异常码为0x03的异常响应帧给SM,如果正确则检查GUID域,检查是否与要获取的SM的GUID相同,若不同,则CM发送异常码为0x01的异常响应帧给SM,若相同,则继续检查功能码是否正确(为CSM),若不正确,则CM发送异常码为0x02的异常响应帧给SM,若功能码正确,CM则存储SM发来的传感器相关信息。\n[0061] 如图10所示,是本发明中智能传感器协议设计部分通信模块配置传感器模块命令传感器模块端的状态图。SM收到CSM命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查GUID域,检查是否与自己的ID号相同,若不同,则结束通信过程,若相同,则继续检查功能码是否正确(为CSM),若为CSM+0x80,则SM根据异常码进行相应的处理并开启错误重传机制,若功能码正确,SM则处理CM的CSM请求,将CM发来的配置信息进行相关的配置并向CM发送正确的CSM响应。\n[0062] 如图11所示,是本发明中智能传感器协议设计部分传感器模块突发上传数据命令通信模块端的状态图。CM收到SMSU命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查功能码是否正确(为SMSU),若为CSM+0x80,则CM根据异常码进行相应的处理并开启错误重传机制,若功能码正确,CM则处理SM的SMSU请求,将SM发来的传感器采集的数据进行相关的处理并向SM发送正确的SMSU响应。\n[0063] 如图12所示,是本发明中智能传感器协议设计部分传感器模块突发上传数据命令传感器模块端的状态图。SM收到SMSU响应帧后,首先检查CRC校验域,如果不正确,则SM发送异常码为0x03的异常响应帧给CM,如果正确则检查GUID域,检查是否与自己的GUID相同,若不同,则SM发送异常码为0x01的异常响应帧给CM,若相同,则继续检查功能码是否正确(为SMSU),若不正确,则SM发送异常码为0x02的异常响应帧给CM,若功能码正确,结束通信,表明传感器采集的数据已经正确送达CM。\n[0064] 对于通信模块唤醒传感器模块命令RERJB,在上述各种命令通信过程中,在通信模块端如果出现错误异常,通信模块会更新相应的当前在总线上的传感器模块的通信错误计数器及传感器模块掉线次数计数器。通信错误计数器是每次通信错误时自增1,当达到预设最大值16后,传感器模块掉线次数计数器自增1,当传感器模块掉线次数计数器达到预设最大值5后,通信模块会清除相应的传感器模块的信息,向相应的传感器模块发送RERJB命令,传感器模块收到RERJB命令后将会重新开始申请加入总线过程,发送申请加入总线命令RJB。此后的过程就和RJB过程一样。以上即为通信模块唤醒传感器模块的过程。\n[0065] 本发明需要解决的问题主要是UART总线竞争冲突的问题,采用的解决方案是软件退避延时算法和串口数据过滤算法,在这两种算法的协同工作下,能够有效的解决总线上的竞争冲突问题,经过测试达到良好的效果。\n[0066] 软件退避延时算法主要用于解决传感器模块加入总线过程中的总线竞争冲突问题。如果同时有多个传感器模块要求加入总线,通信模块不可能同时响应所有的传感器模块,这样传感器模块在规定的超时时间内没有收到正确的响应,传感器模块会结束此次过程,然后在过一段时间后继续下一次申请过程,这个时间的选取是通过选取一个随机数(随机数的是通过采集单片机空闲的模拟口获得),利用这个随机数乘以一个基准时间,得到开启下一次申请过程所需要的时间。在此时间之后开启新的申请过程,直到申请成功。总线上的其他传感器模块也是经历此过程。此算法可以有效的解决竞争冲突问题。\n[0067] 串口数据过滤算法主要解决通信模块和传感器模块通信过程的高效性。主要采用的方法是判断相邻两次串口中断之间的时间是否超过30ms,如果超过30ms则表示没有串口数据,立即清空串口缓冲区,30ms的选定是依据智能传感器协议通信数据帧所需要的时间,即协议帧在这个时间内数据可以传输完毕。及时清空串口缓冲区大大提高了通信过程的可靠性、有效性。\n[0068] 基于此方法设计的传感系统后期维护将变得非常简单,部署时如果要更换或添加传感器模块,可以很方便地从总线上卸载或加载,系统可扩展性强。此过程中软件代码都不需要做修改,并且可以在通信模块正常运行过程中进行,不需要断电重启。研发后期需要重点投入的力量就是如何设计出更低功耗、更安全可靠、更实用的新型传感器模块和通信模块了。\n[0069] 基于此方法设计的传感器节点主要应用场合有例如智能家庭领域、工业远程监控领域及教学领域等。
法律信息
- 2017-03-22
- 2014-04-16
实质审查的生效
IPC(主分类): H04L 29/06
专利申请号: 201310742924.4
申请日: 2013.12.30
- 2014-03-19
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2012-07-25
|
2012-03-19
| | |
2
| |
2012-12-19
|
2012-08-27
| | |
3
| |
2013-05-08
|
2013-01-28
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |