CN103647793B - 用于传感器节点的总线式支持热插拔的传感分开方法 - Google Patents
用于传感器节点的总线式支持热插拔的传感分开方法 Download PDFInfo
- Publication number
- CN103647793B CN103647793B CN201310742924.4A CN201310742924A CN103647793B CN 103647793 B CN103647793 B CN 103647793B CN 201310742924 A CN201310742924 A CN 201310742924A CN 103647793 B CN103647793 B CN 103647793B
- Authority
- CN
- China
- Prior art keywords
- sensor assembly
- communication module
- correct
- sensor
- exception
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000926 separation method Methods 0.000 title abstract 2
- 230000006854 communication Effects 0.000 claims abstract description 247
- 238000004891 communication Methods 0.000 claims abstract description 205
- 230000004044 response Effects 0.000 claims description 109
- 230000006870 function Effects 0.000 claims description 61
- 238000000034 method Methods 0.000 claims description 61
- 230000008569 process Effects 0.000 claims description 43
- 239000003999 initiator Substances 0.000 claims description 26
- 230000007246 mechanism Effects 0.000 claims description 16
- 238000007689 inspection Methods 0.000 claims description 6
- 230000003139 buffering effect Effects 0.000 claims description 4
- 238000012795 verification Methods 0.000 claims description 4
- 230000005856 abnormality Effects 0.000 claims description 3
- 238000012550 audit Methods 0.000 claims description 3
- 230000002159 abnormal effect Effects 0.000 claims 2
- 238000013461 design Methods 0.000 abstract description 21
- 230000005540 biological transmission Effects 0.000 abstract description 6
- 230000001360 synchronised effect Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 21
- 230000000712 assembly Effects 0.000 description 3
- 238000000429 assembly Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000008570 general process Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
Landscapes
- Arrangements For Transmission Of Measured Signals (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明涉及一种用于传感器节点的总线式支持热插拔的传感分开方法,将通信模块和传感器模块从硬件上分开,硬件上基于USART接口,设计实现该接口的热插拔功能。本发明设计了智能传感器协议,传感器模块本地存储了一些自身的相关信息,通信模块可以根据协议制定的相关命令接口获得这些信息并收集传感器模块采集的数据,实现通信模块与传感器模块之间的数据传输。智能传感器总线接口上可以挂载多个传感器模块,总线接口不仅提供通信模块与传感器模块的通信链路,并且提供传感器模块的电源供电。在通信模块带电工作的情况下可以随时从总线上卸载传感器模块,也可以挂载新的传感器模块到总线上,实现传感器模块的热插拔功能。
Description
技术领域
本发明涉及一种总线式的支持热插拔的传感分开方法,用于硬件上分开的数据传输模块和传感器模块的通信,属于智能传感器技术领域。
背景技术
目前,在智能传感器领域,基于总线式的智能传感器标准只有IEEE1451.3标准,该标准定义了一个数字接口,用于连接多个分散的传感器,并且具有不同频谱特性的设备能够共处于一条总线上,该标准利用展频技术,在一根信号电缆上实现数据同步采集、通信和对连接在变送器总线上的电子设备供电。该标准规定了底层特殊的基于协议的硬件接口,这将使设计复杂度大大提高,成本增加,设计开发难度加大。并且国内在智能传感器领域尚未有标准出台。
发明内容
为了解决上述国际标准协议中的缺陷,降低开发难度,减少开发成本,本发明提出一种基于总线式的支持热插拔的传感分开方法,其包括一套智能传感器协议,该智能传感器协议规定了传感器模块与通信模块的数据通信方式及差错检验方式;底层硬件接口是目前常用的UART总线接口,这样硬件接口简单通用,便于开发人员设计。
本发明所采用的技术方案是:在硬件接口上,采用串行通信接口UART。智能传感器协议规定了三种数据帧格式,即请求PDU(协议数据单元)规定的数据格式(请求帧)、正确响应PDU规定的数据格式(正确响应帧)、异常响应PDU规定的数据格式(异常响应帧),规定了六种命令接口,提出了各种命令接口的通信流程及错误检测机制。通信过程中数据采用CRC校验方式,保证通信的可靠性。
智能传感器协议设计了六种命令接口,即:传感器模块申请加入总线命令、通信模块获取传感器模块相关信息命令、通信模块获取传感器模块采集的数据命令、通信模块配置传感器模块命令、传感器模块突发上传数据命令及通信模块唤醒传感器模块命令。以上每种命令均有相应的请求帧、正确响应帧和异常响应帧;请求帧由命令发起方发送,命令接收方接收判断;正确响应帧和异常响应帧由命令接收方发送,命令发起方接收判断。
所述传感器模块申请加入总线命令、传感器模块突发上传数据命令,发起方是传感器模块,命令接收方是通信模块;所述通信模块获取传感器模块相关信息命令、通信模块获取传感器模块采集的数据命令、通信模块配置传感器模块命令、通信模块唤醒传感器模块命令,发起方是通信模块,命令接收方是传感器模块;命令发起方发送相应的命令请求帧,命令接收方收到请求帧后,发送与请求命令相对应的响应数据帧:在通信过程中如果没有出现错误异常,则命令接收方将向命令发起方发送正确响应帧,如果出现错误异常,命令接收方将向命令发起方发送异常响应帧;命令发起方接收到异常响应帧后将会根据通信错误类型做相应处理。
通信协议的数据帧包括:传感器类别域、GUID域、功能域、数据域和校验域,其中GUID表示传感器模块全球唯一ID号;当通信出现错误时,被请求方会反馈异常响应,并且返回的数据帧中包含异常代码,指示出错的原因。
所述传感器模块申请加入总线命令具体如下,其中RJB表示申请加入总线:
在通信模块端:通信模块接收到传感器模块的RJB请求命令,对请求的数据帧继续相关位域的判断,首先检查数据帧的CRC校验是否正确,如果不正确,则直接结束通信过程,如果正确,判断功能码是否正确,如果不是RJB命令码,则直接结束通信过程,如果功能码正确,通信模块将处理RJB请求,通信模块将为传感器模块分配一个总线上唯一的地址,如果地址分配错误,则通信模块将发送异常码为0x04的异常响应帧给传感器模块,表面总线上传感器模块已经满了,不能再挂载传感器模块,如果地址分配成功,通信模块将发送正确响应帧给传感器模块;
在传感器模块端:传感器模块接收到通信模块的RJB响应帧后,对响应帧的相关域进行判断,首先检查数据帧的CRC校验是否正确,如果不正确,则直接结束通信过程,准备发送下一次RJB命令;如果正确,判断GUID是否正确,如果GUID和自己的ID号不符,则直接结束通信过程,准备发送下一次RJB命令;如果GUID正确,判断功能码是否是RJB,如果是,则表明通信模块收到了RJB请求,表明自己已经成功加入总线;如果功能码是RJB+0x80,则表明总线上的传感器模块已经满,传感器模块将结束请求过程。
所述通信模块获取传感器模块相关信息命令具体如下,其中GNI表示获取传感器模块相关信息,GUID表示传感器模块全球唯一ID号:
在通信模块端:通信模块收到GNI响应帧后,首先检查CRC校验域,如果不正确,则通信模块发送异常码为0x03的异常响应帧给传感器模块,如果正确则检查GUID域,检查是否与要获取的传感器模块的GUID相同,若不同,则通信模块发送异常码为0x01的异常响应帧给传感器模块,若相同,则继续检查功能码是否正确,即为GNI,若不正确,则通信模块发送异常码为0x02的异常响应帧给传感器模块,若功能码正确,通信模块则存储传感器模块发来的传感器相关信息;
在传感器模块端:传感器模块收到GNI命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查GUID域,检查是否与自己的ID号相同,若不同,则结束通信过程,若相同,则继续检查功能码是否正确,即为GNI,若为GNI+0x80,则传感器模块根据异常码进行相应的处理并开启错误重传机制,若功能码正确,传感器模块则处理通信模块的GNI请求,从flash中读取传感器相关信息并作为GNI正确响应帧的数据体发送给通信模块。
所述通信模块获取传感器模块采集的数据命令具体如下,其中SAR表示获取传感器模块采集的数据信息,GUID表示传感器模块全球唯一ID号:
在通信模块端:通信模块收到RSAR响应帧后,首先检查CRC校验域,如果不正确,则通信模块发送异常码为0x03的异常响应帧给传感器模块,如果正确则检查GUID域,检查是否与要获取的传感器模块的GUID相同,若不同,则通信模块发送异常码为0x01的异常响应帧给传感器模块,若相同,则继续检查功能码是否正确,即为RSAR,若不正确,则通信模块发送异常码为0x02的异常响应帧给传感器模块,若功能码正确,通信模块则存储传感器模块发来的传感器相关信息;
在传感器模块端:传感器模块收到RSAR命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查GUID域,检查是否与自己的ID号相同,若不同,则结束通信过程,若相同,则继续检查功能码是否正确,即为RSAR,若为RSAR+0x80,则传感器模块根据异常码进行相应的处理并开启错误重传机制,若功能码正确,传感器模块则处理通信模块的RSAR请求,将采集的数据作为RSAR正确响应帧的数据体发送给通信模块。
所述通信模块配置传感器模块命令具体如下,其中CSM表示配置传感器模块,GUID表示传感器模块全球唯一ID号:
在通信模块端:通信模块收到CSM响应帧后,首先检查CRC校验域,如果不正确,则通信模块发送异常码为0x03的异常响应帧给传感器模块,如果正确则检查GUID域,检查是否与要获取的传感器模块的GUID相同,若不同,则通信模块发送异常码为0x01的异常响应帧给传感器模块,若相同,则继续检查功能码是否正确,即为CSM,若不正确,则通信模块发送异常码为0x02的异常响应帧给传感器模块,若功能码正确,通信模块则存储传感器模块发来的传感器相关信息;
在传感器模块端:传感器模块收到CSM命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查GUID域,检查是否与自己的ID号相同,若不同,则结束通信过程,若相同,则继续检查功能码是否正确(为CSM),若为CSM+0x80,则传感器模块根据异常码进行相应的处理并开启错误重传机制,若功能码正确,传感器模块则处理通信模块的CSM请求,将通信模块发来的配置信息进行相关的配置并向通信模块发送正确的CSM响应。
所述传感器模块突发上传数据命令具体如下,其中SMSU表示传感器模块突发上传数据,GUID表示传感器模块全球唯一ID号:
在通信模块端:通信模块收到SMSU命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查功能码是否正确,即为SMSU,若为CSM+0x80,则通信模块根据异常码进行相应的处理并开启错误重传机制,若功能码正确,通信模块则处理传感器模块的SMSU请求,将传感器模块发来的传感器采集的数据进行相关的处理并向传感器模块发送正确的SMSU响应;
在传感器模块端:传感器模块收到SMSU响应帧后,首先检查CRC校验域,如果不正确,则传感器模块发送异常码为0x03的异常响应帧给通信模块,如果正确则检查GUID域,检查是否与自己的GUID相同,若不同,则传感器模块发送异常码为0x01的异常响应帧给通信模块,若相同,则继续检查功能码是否正确,即为SMSU,若不正确,则传感器模块发送异常码为0x02的异常响应帧给通信模块,若功能码正确,结束通信,表明传感器采集的数据已经正确送达通信模块。
同时有多个传感器模块要求加入总线时,若一个传感器模块在规定的超时时间内没有收到正确的响应,传感器模块会结束此次过程,然后在过一段时间后继续下一次申请过程;这个时间的选取是通过选取一个随机数,利用这个随机数乘以一个基准时间,得到开启下一次申请过程所需要的时间;在此时间之后开启新的申请过程,直到申请成功。
在通信模块和传感器模块通信过程中,判断相邻两次串口中断之间的时间是否超过30ms,如果超过30ms则表示没有串口数据,立即清空串口缓冲区。
本发明的有益效果是:
(1)降低通信模块和传感器模块之间的耦合度;
(2)硬件上采用四线制(电源、地、TXD、RXD),硬件连接简单;
(3)总线上可以挂载多个传感器模块,并且支持传感器模块的热插拔,实现了通信模块与传感器模块之间数据的透明传输;
(4)系统可扩展性强;
(5)应用该方法设计的传感器产品和设备的后期维护简单,节约人力和资金成本。
附图说明
图1是智能传感器应用硬件接口连接框图。
图2是智能传感器协议事务处理的一般过程图。
图3是智能传感器协议中传感器模块请求加入总线命令通信模块端的状态图。
图4是智能传感器协议中传感器模块请求加入总线命令传感器模块端的状态图。
图5是智能传感器协议中通信模块获取传感器模块的相关信息命令通信模块端的状态图。
图6是智能传感器协议中通信模块获取传感器模块的相关信息命令传感器模块端的状态图。
图7是智能传感器协议中通信模块获取传感器模块采集的数据命令通信模块端的状态图。
图8是智能传感器协议中通信模块获取传感器模块采集的数据命令传感器模块端的状态图。
图9是智能传感器协议中通信模块配置传感器命令通信模块端的状态图。
图10是智能传感器协议中通信模块配置传感器命令传感器模块端的状态图。
图11是智能传感器协议中传感器模块突发上传数据命令通信模块端的状态图。
图12是智能传感器协议中传感器模块突发上传数据命令传感器模块端的状态图。
图中CM表示通信模块,SM表示传感器模块,RJB表示申请加入总线,GNI表示获取传感器模块相关信息,RSAR表示获取传感器模块采集的数据信息,CSM表示配置传感器模块,SMSU表示传感器模块突发上传数据,GUID表示传感器模块全球唯一ID号。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
本发明将数据传输模块(以下称为通信模块)和传感器模块从硬件上分开,降低它们之间的硬件耦合度。硬件上基于UART接口,设计实现该接口的热插拔功能,即传感器模块可以带电即插即用。
本发明设计的智能传感器协议,用于传感器模块和通信模块之间的数据通信,传感器模块本地存储了一些自身的相关信息,例如传感器类别、生产厂家及出厂日期、GUID(全球唯一ID号)及传感器自身的一些参数等信息,通信模块可以根据协议制定的相关命令接口获得这些信息并收集传感器模块采集的数据,实现通信模块与传感器模块之间的数据传输。智能传感器总线接口上可以挂载多个传感器模块,总线接口不仅提供通信模块与传感器模块的通信链路,并且提供传感器模块的电源供电。在通信模块带电工作的情况下可以随时从总线上卸载传感器模块,也可以挂载新的传感器模块到总线上,实现传感器模块的热插拔功能。
如图1所示,本发明在硬件接口上,采用串行通信接口UART。传感器模块与通信模块之间采用四线制(电源、地、TXD、RXD)硬件连接,总线上可以挂载多个传感器模块,并且支持传感器模块的热插拔,UART接口成为一个智能传感器接口,其中传感器模块具有独立的处理器和存储器,通信模块除了包括处理器和存储器外,还具有无线通信模块、LED指示模块、USB接口模块及电源模块。传感器模块的供电来源是通信模块,通过智能传感器接口给予。
智能传感器协议规定了三种数据帧格式,即请求PDU(协议数据单元)规定的数据格式(请求帧)、正确响应PDU规定的数据格式(正确响应帧)、异常响应PDU规定的数据格式(异常响应帧),规定了六种命令接口,提出了各种命令接口的通信流程及错误检测机制。通信过程中数据采用CRC校验方式,保证通信的可靠性。
智能传感器协议总共设计了六种命令接口,即传感器模块申请加入总线命令、通信模块获取传感器模块相关信息命令、通信模块获取传感器模块采集的数据命令、通信模块配置传感器模块命令、传感器模块突发上传数据命令及通信模块唤醒传感器模块命令。以上每种命令均有相应的请求帧、正确响应帧和异常响应帧;请求帧由命令发起方发送,命令接收方接收判断;正确响应帧和异常响应帧由命令接收方发送,命令发起方接收判断;
所述传感器模块申请加入总线命令、传感器模块突发上传数据命令,命令发起方是传感器模块,命令接收方是通信模块;所述通信模块获取传感器模块相关信息命令、通信模块获取传感器模块采集的数据命令、通信模块配置传感器模块命令、通信模块唤醒传感器模块命令,命令发起方是通信模块,命令接收方是传感器模块;命令发起方发送相应的命令请求帧,命令接收方收到请求帧后,发送与请求命令相对应的响应数据帧:在通信过程中如果没有出现错误异常,则命令接收方将向命令发起方发送正确响应帧,如果出现错误异常,命令接收方将向命令发起方发送异常响应帧;命令发起方接收到异常响应帧后将会根据通信错误类型做相应处理。
比如,通信模块与传感器模块的通信流程为:当传感器模块刚加入总线时,传感器模块向通信模块发送申请加入总线命令RJB,格式为请求帧,通信模块收到RJB命令后为传感器模块分配一个有效的地址,该地址和传感器类别一起所表示的信息在总线上是唯一的;通信模块检查总线上是否有有效的地址,如果有,通信模块会发送RJB正确响应帧,传感器模块收到由通信模块发来的正确响应帧后,表明自己已经成功加入总线,可以和通信模块之间进行后续的通信;如果通信模块检查在总线上的传感器模块数目达到规定的数目上限或者出现其它通信错误,通信模块将会向传感器模块发送RJB异常响应帧;传感器模块收到的RJB异常响应帧如果表明是总线上传感器模块数目达到规定数目上限的错误,则传感器模块不再申请加入总线,否则,传感器模块会重新发送RJB命令,直到申请加入总线成功为止。
以上是RJB命令通信过程,命令发起方是传感器模块,命令接收方是通信模块。对于其它的命令,过程类似。其中GNI、RSAR、CSM、RERJB命令发起方是通信模块,SMSU命令发起方是传感器模块。
如图2所示,是本发明中智能传感器协议设计核心部分的事务处理的一般过程。SSP表示智能传感器协议(smart sensor protocol)。协议数据帧主要包括传感器类别域、GUID域、功能域、数据域和校验域,协议事务处理主要是对这些域的处理,对于正常通信时不会出现错误。但是在通信出现故障时就需要差错检测机制,本智能传感器协议包含差错检测机制的设计,当通信出现错误时,被请求方会反馈异常响应,并且返回的数据帧中包含异常代码,指示出错的原因。
如图3所示,是本发明中协议设计部分传感器模块申请加入总线命令通信模块端的状态图。CM接收到SM的RJB请求命令,对请求的数据帧继续相关位域的判断,首先检查数据帧的CRC校验是否正确,如果不正确,则直接结束通信过程,如果正确,判断功能码是否正确,如果不是RJB命令码,则直接结束通信过程,如果功能码正确,CM将处理RJB请求,CM将为SM分配一个总线上唯一的地址,如果地址分配错误,则CM将发送异常码为0x04的异常响应帧给SM,表面总线上SM已经满了,不能再挂载SM,如果地址分配成功,CM将发送正确响应帧给SM。
如图4所示,是本发明中协议设计部分传感器模块申请加入总线命令传感器模块端的状态图。SM接收到CM的RJB响应帧后,对响应帧的相关域进行判断,首先检查数据帧的CRC校验是否正确,如果不正确,则直接结束通信过程,准备发送下一次RJB命令。如果正确,判断GUID是否正确,如果GUID和自己的ID号不符,则直接结束通信过程,准备发送下一次RJB命令。如果GUID正确,判断功能码是否是RJB,如果是,则表明CM收到了RJB请求,表明自己已经成功加入总线。如果功能码是RJB+0x80,则表明总线上的SM已经满,SM将结束请求过程。
如图5所示,是本发明中智能传感器协议设计部分通信模块获取传感器模块相关信息命令通信模块端的状态图。CM收到GNI响应帧后,首先检查CRC校验域,如果不正确,则CM发送异常码为0x03的异常响应帧给SM,如果正确则检查GUID域,检查是否与要获取的SM的GUID相同,若不同,则CM发送异常码为0x01的异常响应帧给SM,若相同,则继续检查功能码是否正确(为GNI),若不正确,则CM发送异常码为0x02的异常响应帧给SM,若功能码正确,CM则存储SM发来的传感器相关信息。
如图6所示,是本发明中智能传感器协议设计部分通信模块获取传感器模块相关信息命令传感器模块端的状态图。SM收到GNI命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查GUID域,检查是否与自己的ID号相同,若不同,则结束通信过程,若相同,则继续检查功能码是否正确(为GNI),若为GNI+0x80,则SM根据异常码进行相应的处理并开启错误重传机制,若功能码正确,SM则处理CM的GNI请求,从flash中读取传感器相关信息并作为GNI正确响应帧的数据体发送给CM。
如图7所示,是本发明中智能传感器协议设计部分通信模块获取传感器模块采集的数据命令通信模块端的状态图。CM收到RSAR响应帧后,首先检查CRC校验域,如果不正确,则CM发送异常码为0x03的异常响应帧给SM,如果正确则检查GUID域,检查是否与要获取的SM的GUID相同,若不同,则CM发送异常码为0x01的异常响应帧给SM,若相同,则继续检查功能码是否正确(为RSAR),若不正确,则CM发送异常码为0x02的异常响应帧给SM,若功能码正确,CM则存储SM发来的传感器相关信息。
如图8所示,是本发明中智能传感器协议设计部分通信模块获取传感器模块采集的数据命令传感器模块端的状态图。SM收到RSAR命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查GUID域,检查是否与自己的ID号相同,若不同,则结束通信过程,若相同,则继续检查功能码是否正确(为RSAR),若为RSAR+0x80,则SM根据异常码进行相应的处理并开启错误重传机制,若功能码正确,SM则处理CM的RSAR请求,将采集的数据作为RSAR正确响应帧的数据体发送给CM。
如图9所示,是本发明中智能传感器协议设计部分通信模块配置传感器模块命令通信模块端的状态图。CM收到CSM响应帧后,首先检查CRC校验域,如果不正确,则CM发送异常码为0x03的异常响应帧给SM,如果正确则检查GUID域,检查是否与要获取的SM的GUID相同,若不同,则CM发送异常码为0x01的异常响应帧给SM,若相同,则继续检查功能码是否正确(为CSM),若不正确,则CM发送异常码为0x02的异常响应帧给SM,若功能码正确,CM则存储SM发来的传感器相关信息。
如图10所示,是本发明中智能传感器协议设计部分通信模块配置传感器模块命令传感器模块端的状态图。SM收到CSM命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查GUID域,检查是否与自己的ID号相同,若不同,则结束通信过程,若相同,则继续检查功能码是否正确(为CSM),若为CSM+0x80,则SM根据异常码进行相应的处理并开启错误重传机制,若功能码正确,SM则处理CM的CSM请求,将CM发来的配置信息进行相关的配置并向CM发送正确的CSM响应。
如图11所示,是本发明中智能传感器协议设计部分传感器模块突发上传数据命令通信模块端的状态图。CM收到SMSU命令请求后,首先检查CRC校验域,如果不正确,则结束通信过程,如果正确则检查功能码是否正确(为SMSU),若为CSM+0x80,则CM根据异常码进行相应的处理并开启错误重传机制,若功能码正确,CM则处理SM的SMSU请求,将SM发来的传感器采集的数据进行相关的处理并向SM发送正确的SMSU响应。
如图12所示,是本发明中智能传感器协议设计部分传感器模块突发上传数据命令传感器模块端的状态图。SM收到SMSU响应帧后,首先检查CRC校验域,如果不正确,则SM发送异常码为0x03的异常响应帧给CM,如果正确则检查GUID域,检查是否与自己的GUID相同,若不同,则SM发送异常码为0x01的异常响应帧给CM,若相同,则继续检查功能码是否正确(为SMSU),若不正确,则SM发送异常码为0x02的异常响应帧给CM,若功能码正确,结束通信,表明传感器采集的数据已经正确送达CM。
对于通信模块唤醒传感器模块命令RERJB,在上述各种命令通信过程中,在通信模块端如果出现错误异常,通信模块会更新相应的当前在总线上的传感器模块的通信错误计数器及传感器模块掉线次数计数器。通信错误计数器是每次通信错误时自增1,当达到预设最大值16后,传感器模块掉线次数计数器自增1,当传感器模块掉线次数计数器达到预设最大值5后,通信模块会清除相应的传感器模块的信息,向相应的传感器模块发送RERJB命令,传感器模块收到RERJB命令后将会重新开始申请加入总线过程,发送申请加入总线命令RJB。此后的过程就和RJB过程一样。以上即为通信模块唤醒传感器模块的过程。
本发明需要解决的问题主要是UART总线竞争冲突的问题,采用的解决方案是软件退避延时算法和串口数据过滤算法,在这两种算法的协同工作下,能够有效的解决总线上的竞争冲突问题,经过测试达到良好的效果。
软件退避延时算法主要用于解决传感器模块加入总线过程中的总线竞争冲突问题。如果同时有多个传感器模块要求加入总线,通信模块不可能同时响应所有的传感器模块,这样传感器模块在规定的超时时间内没有收到正确的响应,传感器模块会结束此次过程,然后在过一段时间后继续下一次申请过程,这个时间的选取是通过选取一个随机数(随机数的是通过采集单片机空闲的模拟口获得),利用这个随机数乘以一个基准时间,得到开启下一次申请过程所需要的时间。在此时间之后开启新的申请过程,直到申请成功。总线上的其他传感器模块也是经历此过程。此算法可以有效的解决竞争冲突问题。
串口数据过滤算法主要解决通信模块和传感器模块通信过程的高效性。主要采用的方法是判断相邻两次串口中断之间的时间是否超过30ms,如果超过30ms则表示没有串口数据,立即清空串口缓冲区,30ms的选定是依据智能传感器协议通信数据帧所需要的时间,即协议帧在这个时间内数据可以传输完毕。及时清空串口缓冲区大大提高了通信过程的可靠性、有效性。
基于此方法设计的传感系统后期维护将变得非常简单,部署时如果要更换或添加传感器模块,可以很方便地从总线上卸载或加载,系统可扩展性强。此过程中软件代码都不需要做修改,并且可以在通信模块正常运行过程中进行,不需要断电重启。研发后期需要重点投入的力量就是如何设计出更低功耗、更安全可靠、更实用的新型传感器模块和通信模块了。
基于此方法设计的传感器节点主要应用场合有例如智能家庭领域、工业远程监控领域及教学领域等。
Claims (9)
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则表示没有串口数据,立即清空串口缓冲区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310742924.4A CN103647793B (zh) | 2013-12-30 | 2013-12-30 | 用于传感器节点的总线式支持热插拔的传感分开方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310742924.4A CN103647793B (zh) | 2013-12-30 | 2013-12-30 | 用于传感器节点的总线式支持热插拔的传感分开方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103647793A CN103647793A (zh) | 2014-03-19 |
CN103647793B true CN103647793B (zh) | 2017-03-22 |
Family
ID=50252949
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310742924.4A Expired - Fee Related CN103647793B (zh) | 2013-12-30 | 2013-12-30 | 用于传感器节点的总线式支持热插拔的传感分开方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103647793B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106292342B (zh) * | 2015-05-15 | 2018-11-02 | 北京四维拓智教育科技有限公司 | 处理器、外接器件、控制系统及其热插拔方法 |
CN110365576A (zh) * | 2018-03-26 | 2019-10-22 | 江苏智慧新吴信息科技有限公司 | 一种物联网网关热插拔进入云端的方法 |
CN110365563A (zh) * | 2018-03-26 | 2019-10-22 | 江苏智慧新吴信息科技有限公司 | 一种热插拔传感器模块 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7685323B1 (en) * | 2007-07-31 | 2010-03-23 | Hewlett-Packard Development Company, L.P. | Automatic configuration of devices in a network |
CN102608930A (zh) * | 2012-03-19 | 2012-07-25 | 大连理工大学 | 一种支持多接口的即插即用传感器模块 |
CN102829826A (zh) * | 2012-08-27 | 2012-12-19 | 大连理工大学 | 一种基于无线传感器网络技术的集装箱监测系统 |
CN103092115A (zh) * | 2013-01-28 | 2013-05-08 | 王泰戈 | 基于微型通用串行总线的传感器转接测控系统 |
-
2013
- 2013-12-30 CN CN201310742924.4A patent/CN103647793B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7685323B1 (en) * | 2007-07-31 | 2010-03-23 | Hewlett-Packard Development Company, L.P. | Automatic configuration of devices in a network |
CN102608930A (zh) * | 2012-03-19 | 2012-07-25 | 大连理工大学 | 一种支持多接口的即插即用传感器模块 |
CN102829826A (zh) * | 2012-08-27 | 2012-12-19 | 大连理工大学 | 一种基于无线传感器网络技术的集装箱监测系统 |
CN103092115A (zh) * | 2013-01-28 | 2013-05-08 | 王泰戈 | 基于微型通用串行总线的传感器转接测控系统 |
Non-Patent Citations (1)
Title |
---|
《AgileSN:一种轻便易用的智能传感器应用层协议》;张江滨等;《传感技术学报》;20070228;第20卷(第2期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103647793A (zh) | 2014-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108366006A (zh) | 一种智能家电配网方法、装置及系统 | |
CN104536417B (zh) | 一种热水器的监测方法、服务器及系统 | |
CN102840992B (zh) | 一种基于星上网的星载自测试方法 | |
KR101256944B1 (ko) | 데이터 복구가 가능한 원격 검침 시스템 및 원격 검침 시스템의 데이터 복구 방법 | |
CN103647793B (zh) | 用于传感器节点的总线式支持热插拔的传感分开方法 | |
CN102196041A (zh) | 一种无线智能传感器及该传感器即插即用的实现方法 | |
CN208707674U (zh) | 一种基于lin协议的转换器及测试系统 | |
CN105335316A (zh) | 一种基于云计算的电机装配线串口服务器 | |
CN104796464A (zh) | 一种基于modbus的多协议转换警情信息远程传输系统和方法 | |
CN102709758A (zh) | 一种用于家居或物联网系统的智能插座 | |
CN107065706A (zh) | 一种分布式遥测站工况监测系统 | |
CN111366208B (zh) | 基于平台、远传设备、水表间上下层通讯的数据采集方法 | |
CN103995472B (zh) | 一种支持多种通信接口方式的现场维护设备检定装置 | |
CN105446837A (zh) | 检测iic接口器件是否连接的方法、装置以及系统 | |
CN105472377A (zh) | 电视机调试方法及装置 | |
CN106789372A (zh) | 一种基于lin总线的编址与报警的系统及方法 | |
CN102594871B (zh) | 一种数据封装方法、系统、适配器及物联网中间件 | |
CN207790730U (zh) | 一种基于4g网络的轨道交通列车故障数据在线检测系统 | |
CN103593205B (zh) | x73‑PHD系统及其固件自动更新方法 | |
CN204465598U (zh) | 一种基于modbus的多协议转换警情信息远程传输系统 | |
CN103812609B (zh) | 完整采集dali信号的方法及dali信号分析仪 | |
CN106373361A (zh) | 无线采集传输设备和方法 | |
CN100518130C (zh) | 嵌入式网络接入设备及方法 | |
CN211651891U (zh) | 一种温度检测装置及空调 | |
CN201274495Y (zh) | 一种主机通讯模块 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170322 |