基礎(chǔ)信息
權(quán)利要求
說(shuō)明書
PDF全文
法律信息
引證文獻(xiàn)
著錄項(xiàng)信息
專利名稱 | 用于傳感器節(jié)點(diǎn)的總線式支持熱插拔的傳感分開方法 |
申請(qǐng)?zhí)?/td> | CN201310742924.4 | 申請(qǐng)日期 | 2013-12-30 |
法律狀態(tài) | 授權(quán) | 申報(bào)國(guó)家 | 中國(guó) |
公開/公告日 | 2014-03-19 | 公開/公告號(hào) | CN103647793A |
優(yōu)先權(quán) | 暫無(wú) | 優(yōu)先權(quán)號(hào) | 暫無(wú) |
主分類號(hào) | H04L29/06 | IPC分類號(hào) | H;0;4;L;2;9;/;0;6;;;G;0;6;F;1;3;/;4;0查看分類表>
|
申請(qǐng)人 | 無(wú)錫清華信息科學(xué)與技術(shù)國(guó)家實(shí)驗(yàn)室物聯(lián)網(wǎng)技術(shù)中心 | 申請(qǐng)人地址 | 江蘇省無(wú)錫市國(guó)家高新技術(shù)產(chǎn)業(yè)開發(fā)區(qū)太科園大學(xué)科技園清源路A區(qū)502號(hào)房
變更
專利地址、主體等相關(guān)變化,請(qǐng)及時(shí)變更,防止失效 |
權(quán)利人 | 無(wú)錫清華信息科學(xué)與技術(shù)國(guó)家實(shí)驗(yàn)室物聯(lián)網(wǎng)技術(shù)中心 | 當(dāng)前權(quán)利人 | 無(wú)錫清華信息科學(xué)與技術(shù)國(guó)家實(shí)驗(yàn)室物聯(lián)網(wǎng)技術(shù)中心 |
發(fā)明人 | 毛續(xù)飛;韓建康;葉勝東 |
代理機(jī)構(gòu) | 無(wú)錫市大為專利商標(biāo)事務(wù)所(普通合伙) | 代理人 | 曹祖良;韓鳳 |
摘要
本發(fā)明涉及一種用于傳感器節(jié)點(diǎn)的總線式支持熱插拔的傳感分開方法,將通信模塊和傳感器模塊從硬件上分開,硬件上基于USART接口,設(shè)計(jì)實(shí)現(xiàn)該接口的熱插拔功能。本發(fā)明設(shè)計(jì)了智能傳感器協(xié)議,傳感器模塊本地存儲(chǔ)了一些自身的相關(guān)信息,通信模塊可以根據(jù)協(xié)議制定的相關(guān)命令接口獲得這些信息并收集傳感器模塊采集的數(shù)據(jù),實(shí)現(xiàn)通信模塊與傳感器模塊之間的數(shù)據(jù)傳輸。智能傳感器總線接口上可以掛載多個(gè)傳感器模塊,總線接口不僅提供通信模塊與傳感器模塊的通信鏈路,并且提供傳感器模塊的電源供電。在通信模塊帶電工作的情況下可以隨時(shí)從總線上卸載傳感器模塊,也可以掛載新的傳感器模塊到總線上,實(shí)現(xiàn)傳感器模塊的熱插拔功能。
1.用于傳感器節(jié)點(diǎn)的總線式支持熱插拔的傳感分開方法,其特征是,采用三種數(shù)據(jù)幀格式,即請(qǐng)求幀、正確響應(yīng)幀、異常響應(yīng)幀,以及六種命令接口,即傳感器模塊申請(qǐng)加入總線命令、通信模塊獲取傳感器模塊相關(guān)信息命令、通信模塊獲取傳感器模塊采集的數(shù)據(jù)命令、通信模塊配置傳感器模塊命令、傳感器模塊突發(fā)上傳數(shù)據(jù)命令及通信模塊喚醒傳感器模塊命令;以上每種命令均有相應(yīng)的請(qǐng)求幀、正確響應(yīng)幀和異常響應(yīng)幀;請(qǐng)求幀由命令發(fā)起方發(fā)送,命令接收方接收判斷;正確響應(yīng)幀和異常響應(yīng)幀由命令接收方發(fā)送,命令發(fā)起方接收判斷;
所述傳感器模塊申請(qǐng)加入總線命令、傳感器模塊突發(fā)上傳數(shù)據(jù)命令,發(fā)起方是傳感器模塊,命令接收方是通信模塊;所述通信模塊獲取傳感器模塊相關(guān)信息命令、通信模塊獲取傳感器模塊采集的數(shù)據(jù)命令、通信模塊配置傳感器模塊命令、通信模塊喚醒傳感器模塊命令,發(fā)起方是通信模塊,命令接收方是傳感器模塊;命令發(fā)起方發(fā)送相應(yīng)的命令請(qǐng)求幀,命令接收方收到請(qǐng)求幀后,發(fā)送與請(qǐng)求命令相對(duì)應(yīng)的響應(yīng)數(shù)據(jù)幀:在通信過(guò)程中如果沒有出現(xiàn)錯(cuò)誤異常,則命令接收方將向命令發(fā)起方發(fā)送正確響應(yīng)幀,如果出現(xiàn)錯(cuò)誤異常,命令接收方將向命令發(fā)起方發(fā)送異常響應(yīng)幀;命令發(fā)起方接收到異常響應(yīng)幀后將會(huì)根據(jù)通信錯(cuò)誤類型做相應(yīng)處理;
同時(shí)有多個(gè)傳感器模塊要求加入總線時(shí),若一個(gè)傳感器模塊在規(guī)定的超時(shí)時(shí)間內(nèi)沒有收到正確的響應(yīng),傳感器模塊會(huì)結(jié)束此次過(guò)程,然后在過(guò)一段時(shí)間后繼續(xù)下一次申請(qǐng)過(guò)程;
這個(gè)時(shí)間的選取是通過(guò)選取一個(gè)隨機(jī)數(shù),利用這個(gè)隨機(jī)數(shù)乘以一個(gè)基準(zhǔn)時(shí)間,得到開啟下一次申請(qǐng)過(guò)程所需要的時(shí)間;在此時(shí)間之后開啟新的申請(qǐng)過(guò)程,直到申請(qǐng)成功。
2.如權(quán)利要求1所述用于傳感器節(jié)點(diǎn)的總線式支持熱插拔的傳感分開方法,其特征是,通信過(guò)程中數(shù)據(jù)采用CRC校驗(yàn)方式。
3.如權(quán)利要求1或2所述用于傳感器節(jié)點(diǎn)的總線式支持熱插拔的傳感分開方法,其特征是,通信協(xié)議的數(shù)據(jù)幀包括:傳感器類別域、GUID域、功能域、數(shù)據(jù)域和校驗(yàn)域,其中GUID表示傳感器模塊全球唯一ID號(hào);當(dāng)通信出現(xiàn)錯(cuò)誤時(shí),被請(qǐng)求方會(huì)反饋異常響應(yīng),并且返回的數(shù)據(jù)幀中包含異常代碼,指示出錯(cuò)的原因。
4.如權(quán)利要求3所述用于傳感器節(jié)點(diǎn)的總線式支持熱插拔的傳感分開方法,其特征是,所述傳感器模塊申請(qǐng)加入總線命令具體如下,其中RJB表示申請(qǐng)加入總線:
在通信模塊端:通信模塊接收到傳感器模塊的RJB請(qǐng)求命令,對(duì)請(qǐng)求的數(shù)據(jù)幀繼續(xù)相關(guān)位域的判斷,首先檢查數(shù)據(jù)幀的CRC校驗(yàn)是否正確,如果不正確,則直接結(jié)束通信過(guò)程,如果正確,判斷功能碼是否正確,如果不是RJB命令碼,則直接結(jié)束通信過(guò)程,如果功能碼正確,通信模塊將處理RJB請(qǐng)求,通信模塊將為傳感器模塊分配一個(gè)總線上唯一的地址,如果地址分配錯(cuò)誤,則通信模塊將發(fā)送異常碼為0x04的異常響應(yīng)幀給傳感器模塊,表明總線上傳感器模塊已經(jīng)滿了,不能再掛載傳感器模塊,如果地址分配成功,通信模塊將發(fā)送正確響應(yīng)幀給傳感器模塊;
在傳感器模塊端:傳感器模塊接收到通信模塊的RJB響應(yīng)幀后,對(duì)響應(yīng)幀的相關(guān)域進(jìn)行判斷,首先檢查數(shù)據(jù)幀的CRC校驗(yàn)是否正確,如果不正確,則直接結(jié)束通信過(guò)程,準(zhǔn)備發(fā)送下一次RJB命令;如果正確,判斷GUID是否正確,如果GUID和自己的ID號(hào)不符,則直接結(jié)束通信過(guò)程,準(zhǔn)備發(fā)送下一次RJB命令;如果GUID正確,判斷功能碼是否是RJB,如果是,則表明通信模塊收到了RJB請(qǐng)求,表明自己已經(jīng)成功加入總線;如果功能碼是RJB+0x80,則表明總線上的傳感器模塊已經(jīng)滿,傳感器模塊將結(jié)束請(qǐng)求過(guò)程。
5.如權(quán)利要求3所述用于傳感器節(jié)點(diǎn)的總線式支持熱插拔的傳感分開方法,其特征是,所述通信模塊獲取傳感器模塊相關(guān)信息命令具體如下,其中GNI表示獲取傳感器模塊相關(guān)信息,GUID表示傳感器模塊全球唯一ID號(hào):
在通信模塊端:通信模塊收到GNI響應(yīng)幀后,首先檢查CRC校驗(yàn)域,如果不正確,則通信模塊發(fā)送異常碼為0x03的異常響應(yīng)幀給傳感器模塊,如果正確則檢查GUID域,檢查是否與要獲取的傳感器模塊的GUID相同,若不同,則通信模塊發(fā)送異常碼為0x01的異常響應(yīng)幀給傳感器模塊,若相同,則繼續(xù)檢查功能碼是否正確,即為GNI,若不正確,則通信模塊發(fā)送異常碼為0x02的異常響應(yīng)幀給傳感器模塊,若功能碼正確,通信模塊則存儲(chǔ)傳感器模塊發(fā)來(lái)的傳感器相關(guān)信息;
在傳感器模塊端:傳感器模塊收到GNI命令請(qǐng)求后,首先檢查CRC校驗(yàn)域,如果不正確,則結(jié)束通信過(guò)程,如果正確則檢查GUID域,檢查是否與自己的ID號(hào)相同,若不同,則結(jié)束通信過(guò)程,若相同,則繼續(xù)檢查功能碼是否正確,即為GNI,若為GNI+0x80,則傳感器模塊根據(jù)異常碼進(jìn)行相應(yīng)的處理并開啟錯(cuò)誤重傳機(jī)制,若功能碼正確,傳感器模塊則處理通信模塊的GNI請(qǐng)求,從flash中讀取傳感器相關(guān)信息并作為GNI正確響應(yīng)幀的數(shù)據(jù)體發(fā)送給通信模塊。
6.如權(quán)利要求3所述用于傳感器節(jié)點(diǎn)的總線式支持熱插拔的傳感分開方法,其特征是,所述通信模塊獲取傳感器模塊采集的數(shù)據(jù)命令具體如下,其中SAR表示獲取傳感器模塊采集的數(shù)據(jù)信息,GUID表示傳感器模塊全球唯一ID號(hào):
在通信模塊端:通信模塊收到RSAR響應(yīng)幀后,首先檢查CRC校驗(yàn)域,如果不正確,則通信模塊發(fā)送異常碼為0x03的異常響應(yīng)幀給傳感器模塊,如果正確則檢查GUID域,檢查是否與要獲取的傳感器模塊的GUID相同,若不同,則通信模塊發(fā)送異常碼為0x01的異常響應(yīng)幀給傳感器模塊,若相同,則繼續(xù)檢查功能碼是否正確,即為RSAR,若不正確,則通信模塊發(fā)送異常碼為0x02的異常響應(yīng)幀給傳感器模塊,若功能碼正確,通信模塊則存儲(chǔ)傳感器模塊發(fā)來(lái)的傳感器相關(guān)信息;
在傳感器模塊端:傳感器模塊收到RSAR命令請(qǐng)求后,首先檢查CRC校驗(yàn)域,如果不正確,則結(jié)束通信過(guò)程,如果正確則檢查GUID域,檢查是否與自己的ID號(hào)相同,若不同,則結(jié)束通信過(guò)程,若相同,則繼續(xù)檢查功能碼是否正確,即為RSAR,若為RSAR+0x80,則傳感器模塊根據(jù)異常碼進(jìn)行相應(yīng)的處理并開啟錯(cuò)誤重傳機(jī)制,若功能碼正確,傳感器模塊則處理通信模塊的RSAR請(qǐng)求,將采集的數(shù)據(jù)作為RSAR正確響應(yīng)幀的數(shù)據(jù)體發(fā)送給通信模塊。
7.如權(quán)利要求3所述用于傳感器節(jié)點(diǎn)的總線式支持熱插拔的傳感分開方法,其特征是,所述通信模塊配置傳感器模塊命令具體如下,其中CSM表示配置傳感器模塊,GUID表示傳感器模塊全球唯一ID號(hào):
在通信模塊端:通信模塊收到CSM響應(yīng)幀后,首先檢查CRC校驗(yàn)域,如果不正確,則通信模塊發(fā)送異常碼為0x03的異常響應(yīng)幀給傳感器模塊,如果正確則檢查GUID域,檢查是否與要獲取的傳感器模塊的GUID相同,若不同,則通信模塊發(fā)送異常碼為0x01的異常響應(yīng)幀給傳感器模塊,若相同,則繼續(xù)檢查功能碼是否正確,即為CSM,若不正確,則通信模塊發(fā)送異常碼為0x02的異常響應(yīng)幀給傳感器模塊,若功能碼正確,通信模塊則存儲(chǔ)傳感器模塊發(fā)來(lái)的傳感器相關(guān)信息;
在傳感器模塊端:傳感器模塊收到CSM命令請(qǐng)求后,首先檢查CRC校驗(yàn)域,如果不正確,則結(jié)束通信過(guò)程,如果正確則檢查GUID域,檢查是否與自己的ID號(hào)相同,若不同,則結(jié)束通信過(guò)程,若相同,則繼續(xù)檢查功能碼是否正確,即為CSM,若為CSM+0x80,則傳感器模塊根據(jù)異常碼進(jìn)行相應(yīng)的處理并開啟錯(cuò)誤重傳機(jī)制,若功能碼正確,傳感器模塊則處理通信模塊的CSM請(qǐng)求,將通信模塊發(fā)來(lái)的配置信息進(jìn)行相關(guān)的配置并向通信模塊發(fā)送正確的CSM響應(yīng)。
8.如權(quán)利要求3所述用于傳感器節(jié)點(diǎn)的總線式支持熱插拔的傳感分開方法,其特征是,所述傳感器模塊突發(fā)上傳數(shù)據(jù)命令具體如下,其中SMSU表示傳感器模塊突發(fā)上傳數(shù)據(jù),GUID表示傳感器模塊全球唯一ID號(hào):
在通信模塊端:通信模塊收到SMSU命令請(qǐng)求后,首先檢查CRC校驗(yàn)域,如果不正確,則結(jié)束通信過(guò)程,如果正確則檢查功能碼是否正確,即為SMSU,若為CSM+0x80,則通信模塊根據(jù)異常碼進(jìn)行相應(yīng)的處理并開啟錯(cuò)誤重傳機(jī)制,若功能碼正確,通信模塊則處理傳感器模塊的SMSU請(qǐng)求,將傳感器模塊發(fā)來(lái)的傳感器采集的數(shù)據(jù)進(jìn)行相關(guān)的處理并向傳感器模塊發(fā)送正確的SMSU響應(yīng);
在傳感器模塊端:傳感器模塊收到SMSU響應(yīng)幀后,首先檢查CRC校驗(yàn)域,如果不正確,則傳感器模塊發(fā)送異常碼為0x03的異常響應(yīng)幀給通信模塊,如果正確則檢查GUID域,檢查是否與自己的GUID相同,若不同,則傳感器模塊發(fā)送異常碼為0x01的異常響應(yīng)幀給通信模塊,若相同,則繼續(xù)檢查功能碼是否正確,即為SMSU,若不正確,則傳感器模塊發(fā)送異常碼為
0x02的異常響應(yīng)幀給通信模塊,若功能碼正確,結(jié)束通信,表明傳感器采集的數(shù)據(jù)已經(jīng)正確送達(dá)通信模塊。
9.如權(quán)利要求1所述用于傳感器節(jié)點(diǎn)的總線式支持熱插拔的傳感分開方法,其特征是,在通信模塊和傳感器模塊通信過(guò)程中,判斷相鄰兩次串口中斷之間的時(shí)間是否超過(guò)30ms,如果超過(guò)30ms則表示沒有串口數(shù)據(jù),立即清空串口緩沖區(qū)。
用于傳感器節(jié)點(diǎn)的總線式支持熱插拔的傳感分開方法\n技術(shù)領(lǐng)域\n[0001] 本發(fā)明涉及一種總線式的支持熱插拔的傳感分開方法,用于硬件上分開的數(shù)據(jù)傳輸模塊和傳感器模塊的通信,屬于智能傳感器技術(shù)領(lǐng)域。\n背景技術(shù)\n[0002] 目前,在智能傳感器領(lǐng)域,基于總線式的智能傳感器標(biāo)準(zhǔn)只有IEEE1451.3標(biāo)準(zhǔn),該標(biāo)準(zhǔn)定義了一個(gè)數(shù)字接口,用于連接多個(gè)分散的傳感器,并且具有不同頻譜特性的設(shè)備能夠共處于一條總線上,該標(biāo)準(zhǔn)利用展頻技術(shù),在一根信號(hào)電纜上實(shí)現(xiàn)數(shù)據(jù)同步采集、通信和對(duì)連接在變送器總線上的電子設(shè)備供電。該標(biāo)準(zhǔn)規(guī)定了底層特殊的基于協(xié)議的硬件接口,這將使設(shè)計(jì)復(fù)雜度大大提高,成本增加,設(shè)計(jì)開發(fā)難度加大。并且國(guó)內(nèi)在智能傳感器領(lǐng)域尚未有標(biāo)準(zhǔn)出臺(tái)。\n發(fā)明內(nèi)容\n[0003] 為了解決上述國(guó)際標(biāo)準(zhǔn)協(xié)議中的缺陷,降低開發(fā)難度,減少開發(fā)成本,本發(fā)明提出一種基于總線式的支持熱插拔的傳感分開方法,其包括一套智能傳感器協(xié)議,該智能傳感器協(xié)議規(guī)定了傳感器模塊與通信模塊的數(shù)據(jù)通信方式及差錯(cuò)檢驗(yàn)方式;底層硬件接口是目前常用的UART總線接口,這樣硬件接口簡(jiǎn)單通用,便于開發(fā)人員設(shè)計(jì)。\n[0004] 本發(fā)明所采用的技術(shù)方案是:在硬件接口上,采用串行通信接口UART。智能傳感器協(xié)議規(guī)定了三種數(shù)據(jù)幀格式,即請(qǐng)求PDU(協(xié)議數(shù)據(jù)單元)規(guī)定的數(shù)據(jù)格式(請(qǐng)求幀)、正確響應(yīng)PDU規(guī)定的數(shù)據(jù)格式(正確響應(yīng)幀)、異常響應(yīng)PDU規(guī)定的數(shù)據(jù)格式(異常響應(yīng)幀),規(guī)定了六種命令接口,提出了各種命令接口的通信流程及錯(cuò)誤檢測(cè)機(jī)制。通信過(guò)程中數(shù)據(jù)采用CRC校驗(yàn)方式,保證通信的可靠性。\n[0005] 智能傳感器協(xié)議設(shè)計(jì)了六種命令接口,即:傳感器模塊申請(qǐng)加入總線命令、通信模塊獲取傳感器模塊相關(guān)信息命令、通信模塊獲取傳感器模塊采集的數(shù)據(jù)命令、通信模塊配置傳感器模塊命令、傳感器模塊突發(fā)上傳數(shù)據(jù)命令及通信模塊喚醒傳感器模塊命令。以上每種命令均有相應(yīng)的請(qǐng)求幀、正確響應(yīng)幀和異常響應(yīng)幀;請(qǐng)求幀由命令發(fā)起方發(fā)送,命令接收方接收判斷;正確響應(yīng)幀和異常響應(yīng)幀由命令接收方發(fā)送,命令發(fā)起方接收判斷。\n[0006] 所述傳感器模塊申請(qǐng)加入總線命令、傳感器模塊突發(fā)上傳數(shù)據(jù)命令,發(fā)起方是傳感器模塊,命令接收方是通信模塊;所述通信模塊獲取傳感器模塊相關(guān)信息命令、通信模塊獲取傳感器模塊采集的數(shù)據(jù)命令、通信模塊配置傳感器模塊命令、通信模塊喚醒傳感器模塊命令,發(fā)起方是通信模塊,命令接收方是傳感器模塊;命令發(fā)起方發(fā)送相應(yīng)的命令請(qǐng)求幀,命令接收方收到請(qǐng)求幀后,發(fā)送與請(qǐng)求命令相對(duì)應(yīng)的響應(yīng)數(shù)據(jù)幀:在通信過(guò)程中如果沒有出現(xiàn)錯(cuò)誤異常,則命令接收方將向命令發(fā)起方發(fā)送正確響應(yīng)幀,如果出現(xiàn)錯(cuò)誤異常,命令接收方將向命令發(fā)起方發(fā)送異常響應(yīng)幀;命令發(fā)起方接收到異常響應(yīng)幀后將會(huì)根據(jù)通信錯(cuò)誤類型做相應(yīng)處理。\n[0007] 通信協(xié)議的數(shù)據(jù)幀包括:傳感器類別域、GUID域、功能域、數(shù)據(jù)域和校驗(yàn)域,其中GUID表示傳感器模塊全球唯一ID號(hào);當(dāng)通信出現(xiàn)錯(cuò)誤時(shí),被請(qǐng)求方會(huì)反饋異常響應(yīng),并且返回的數(shù)據(jù)幀中包含異常代碼,指示出錯(cuò)的原因。\n[0008] 所述傳感器模塊申請(qǐng)加入總線命令具體如下,其中RJB表示申請(qǐng)加入總線:\n[0009] 在通信模塊端:通信模塊接收到傳感器模塊的RJB請(qǐng)求命令,對(duì)請(qǐng)求的數(shù)據(jù)幀繼續(xù)相關(guān)位域的判斷,首先檢查數(shù)據(jù)幀的CRC校驗(yàn)是否正確,如果不正確,則直接結(jié)束通信過(guò)程,如果正確,判斷功能碼是否正確,如果不是RJB命令碼,則直接結(jié)束通信過(guò)程,如果功能碼正確,通信模塊將處理RJB請(qǐng)求,通信模塊將為傳感器模塊分配一個(gè)總線上唯一的地址,如果地址分配錯(cuò)誤,則通信模塊將發(fā)送異常碼為0x04的異常響應(yīng)幀給傳感器模塊,表面總線上傳感器模塊已經(jīng)滿了,不能再掛載傳感器模塊,如果地址分配成功,通信模塊將發(fā)送正確響應(yīng)幀給傳感器模塊;\n[0010] 在傳感器模塊端:傳感器模塊接收到通信模塊的RJB響應(yīng)幀后,對(duì)響應(yīng)幀的相關(guān)域進(jìn)行判斷,首先檢查數(shù)據(jù)幀的CRC校驗(yàn)是否正確,如果不正確,則直接結(jié)束通信過(guò)程,準(zhǔn)備發(fā)送下一次RJB命令;如果正確,判斷GUID是否正確,如果GUID和自己的ID號(hào)不符,則直接結(jié)束通信過(guò)程,準(zhǔn)備發(fā)送下一次RJB命令;如果GUID正確,判斷功能碼是否是RJB,如果是,則表明通信模塊收到了RJB請(qǐng)求,表明自己已經(jīng)成功加入總線;如果功能碼是RJB+0x80,則表明總線上的傳感器模塊已經(jīng)滿,傳感器模塊將結(jié)束請(qǐng)求過(guò)程。\n[0011] 所述通信模塊獲取傳感器模塊相關(guān)信息命令具體如下,其中GNI表示獲取傳感器模塊相關(guān)信息,GUID表示傳感器模塊全球唯一ID號(hào):\n[0012] 在通信模塊端:通信模塊收到GNI響應(yīng)幀后,首先檢查CRC校驗(yàn)域,如果不正確,則通信模塊發(fā)送異常碼為0x03的異常響應(yīng)幀給傳感器模塊,如果正確則檢查GUID域,檢查是否與要獲取的傳感器模塊的GUID相同,若不同,則通信模塊發(fā)送異常碼為0x01的異常響應(yīng)幀給傳感器模塊,若相同,則繼續(xù)檢查功能碼是否正確,即為GNI,若不正確,則通信模塊發(fā)送異常碼為0x02的異常響應(yīng)幀給傳感器模塊,若功能碼正確,通信模塊則存儲(chǔ)傳感器模塊發(fā)來(lái)的傳感器相關(guān)信息;\n[0013] 在傳感器模塊端:傳感器模塊收到GNI命令請(qǐng)求后,首先檢查CRC校驗(yàn)域,如果不正確,則結(jié)束通信過(guò)程,如果正確則檢查GUID域,檢查是否與自己的ID號(hào)相同,若不同,則結(jié)束通信過(guò)程,若相同,則繼續(xù)檢查功能碼是否正確,即為GNI,若為GNI+0x80,則傳感器模塊根據(jù)異常碼進(jìn)行相應(yīng)的處理并開啟錯(cuò)誤重傳機(jī)制,若功能碼正確,傳感器模塊則處理通信模塊的GNI請(qǐng)求,從flash中讀取傳感器相關(guān)信息并作為GNI正確響應(yīng)幀的數(shù)據(jù)體發(fā)送給通信模塊。\n[0014] 所述通信模塊獲取傳感器模塊采集的數(shù)據(jù)命令具體如下,其中SAR表示獲取傳感器模塊采集的數(shù)據(jù)信息,GUID表示傳感器模塊全球唯一ID號(hào):\n[0015] 在通信模塊端:通信模塊收到RSAR響應(yīng)幀后,首先檢查CRC校驗(yàn)域,如果不正確,則通信模塊發(fā)送異常碼為0x03的異常響應(yīng)幀給傳感器模塊,如果正確則檢查GUID域,檢查是否與要獲取的傳感器模塊的GUID相同,若不同,則通信模塊發(fā)送異常碼為0x01的異常響應(yīng)幀給傳感器模塊,若相同,則繼續(xù)檢查功能碼是否正確,即為RSAR,若不正確,則通信模塊發(fā)送異常碼為0x02的異常響應(yīng)幀給傳感器模塊,若功能碼正確,通信模塊則存儲(chǔ)傳感器模塊發(fā)來(lái)的傳感器相關(guān)信息;\n[0016] 在傳感器模塊端:傳感器模塊收到RSAR命令請(qǐng)求后,首先檢查CRC校驗(yàn)域,如果不正確,則結(jié)束通信過(guò)程,如果正確則檢查GUID域,檢查是否與自己的ID號(hào)相同,若不同,則結(jié)束通信過(guò)程,若相同,則繼續(xù)檢查功能碼是否正確,即為RSAR,若為RSAR+0x80,則傳感器模塊根據(jù)異常碼進(jìn)行相應(yīng)的處理并開啟錯(cuò)誤重傳機(jī)制,若功能碼正確,傳感器模塊則處理通信模塊的RSAR請(qǐng)求,將采集的數(shù)據(jù)作為RSAR正確響應(yīng)幀的數(shù)據(jù)體發(fā)送給通信模塊。\n[0017] 所述通信模塊配置傳感器模塊命令具體如下,其中CSM表示配置傳感器模塊,GUID表示傳感器模塊全球唯一ID號(hào):\n[0018] 在通信模塊端:通信模塊收到CSM響應(yīng)幀后,首先檢查CRC校驗(yàn)域,如果不正確,則通信模塊發(fā)送異常碼為0x03的異常響應(yīng)幀給傳感器模塊,如果正確則檢查GUID域,檢查是否與要獲取的傳感器模塊的GUID相同,若不同,則通信模塊發(fā)送異常碼為0x01的異常響應(yīng)幀給傳感器模塊,若相同,則繼續(xù)檢查功能碼是否正確,即為CSM,若不正確,則通信模塊發(fā)送異常碼為0x02的異常響應(yīng)幀給傳感器模塊,若功能碼正確,通信模塊則存儲(chǔ)傳感器模塊發(fā)來(lái)的傳感器相關(guān)信息;\n[0019] 在傳感器模塊端:傳感器模塊收到CSM命令請(qǐng)求后,首先檢查CRC校驗(yàn)域,如果不正確,則結(jié)束通信過(guò)程,如果正確則檢查GUID域,檢查是否與自己的ID號(hào)相同,若不同,則結(jié)束通信過(guò)程,若相同,則繼續(xù)檢查功能碼是否正確(為CSM),若為CSM+0x80,則傳感器模塊根據(jù)異常碼進(jìn)行相應(yīng)的處理并開啟錯(cuò)誤重傳機(jī)制,若功能碼正確,傳感器模塊則處理通信模塊的CSM請(qǐng)求,將通信模塊發(fā)來(lái)的配置信息進(jìn)行相關(guān)的配置并向通信模塊發(fā)送正確的CSM響應(yīng)。\n[0020] 所述傳感器模塊突發(fā)上傳數(shù)據(jù)命令具體如下,其中SMSU表示傳感器模塊突發(fā)上傳數(shù)據(jù),GUID表示傳感器模塊全球唯一ID號(hào):\n[0021] 在通信模塊端:通信模塊收到SMSU命令請(qǐng)求后,首先檢查CRC校驗(yàn)域,如果不正確,則結(jié)束通信過(guò)程,如果正確則檢查功能碼是否正確,即為SMSU,若為CSM+0x80,則通信模塊根據(jù)異常碼進(jìn)行相應(yīng)的處理并開啟錯(cuò)誤重傳機(jī)制,若功能碼正確,通信模塊則處理傳感器模塊的SMSU請(qǐng)求,將傳感器模塊發(fā)來(lái)的傳感器采集的數(shù)據(jù)進(jìn)行相關(guān)的處理并向傳感器模塊發(fā)送正確的SMSU響應(yīng);\n[0022] 在傳感器模塊端:傳感器模塊收到SMSU響應(yīng)幀后,首先檢查CRC校驗(yàn)域,如果不正確,則傳感器模塊發(fā)送異常碼為0x03的異常響應(yīng)幀給通信模塊,如果正確則檢查GUID域,檢查是否與自己的GUID相同,若不同,則傳感器模塊發(fā)送異常碼為0x01的異常響應(yīng)幀給通信模塊,若相同,則繼續(xù)檢查功能碼是否正確,即為SMSU,若不正確,則傳感器模塊發(fā)送異常碼為0x02的異常響應(yīng)幀給通信模塊,若功能碼正確,結(jié)束通信,表明傳感器采集的數(shù)據(jù)已經(jīng)正確送達(dá)通信模塊。\n[0023] 同時(shí)有多個(gè)傳感器模塊要求加入總線時(shí),若一個(gè)傳感器模塊在規(guī)定的超時(shí)時(shí)間內(nèi)沒有收到正確的響應(yīng),傳感器模塊會(huì)結(jié)束此次過(guò)程,然后在過(guò)一段時(shí)間后繼續(xù)下一次申請(qǐng)過(guò)程;這個(gè)時(shí)間的選取是通過(guò)選取一個(gè)隨機(jī)數(shù),利用這個(gè)隨機(jī)數(shù)乘以一個(gè)基準(zhǔn)時(shí)間,得到開啟下一次申請(qǐng)過(guò)程所需要的時(shí)間;在此時(shí)間之后開啟新的申請(qǐng)過(guò)程,直到申請(qǐng)成功。\n[0024] 在通信模塊和傳感器模塊通信過(guò)程中,判斷相鄰兩次串口中斷之間的時(shí)間是否超過(guò)30ms,如果超過(guò)30ms則表示沒有串口數(shù)據(jù),立即清空串口緩沖區(qū)。\n[0025] 本發(fā)明的有益效果是:\n[0026] (1)降低通信模塊和傳感器模塊之間的耦合度;\n[0027] (2)硬件上采用四線制(電源、地、TXD、RXD),硬件連接簡(jiǎn)單;\n[0028] (3)總線上可以掛載多個(gè)傳感器模塊,并且支持傳感器模塊的熱插拔,實(shí)現(xiàn)了通信模塊與傳感器模塊之間數(shù)據(jù)的透明傳輸;\n[0029] (4)系統(tǒng)可擴(kuò)展性強(qiáng);\n[0030] (5)應(yīng)用該方法設(shè)計(jì)的傳感器產(chǎn)品和設(shè)備的后期維護(hù)簡(jiǎn)單,節(jié)約人力和資金成本。\n附圖說(shuō)明\n[0031] 圖1是智能傳感器應(yīng)用硬件接口連接框圖。\n[0032] 圖2是智能傳感器協(xié)議事務(wù)處理的一般過(guò)程圖。\n[0033] 圖3是智能傳感器協(xié)議中傳感器模塊請(qǐng)求加入總線命令通信模塊端的狀態(tài)圖。\n[0034] 圖4是智能傳感器協(xié)議中傳感器模塊請(qǐng)求加入總線命令傳感器模塊端的狀態(tài)圖。\n[0035] 圖5是智能傳感器協(xié)議中通信模塊獲取傳感器模塊的相關(guān)信息命令通信模塊端的狀態(tài)圖。\n[0036] 圖6是智能傳感器協(xié)議中通信模塊獲取傳感器模塊的相關(guān)信息命令傳感器模塊端的狀態(tài)圖。\n[0037] 圖7是智能傳感器協(xié)議中通信模塊獲取傳感器模塊采集的數(shù)據(jù)命令通信模塊端的狀態(tài)圖。\n[0038] 圖8是智能傳感器協(xié)議中通信模塊獲取傳感器模塊采集的數(shù)據(jù)命令傳感器模塊端的狀態(tài)圖。\n[0039] 圖9是智能傳感器協(xié)議中通信模塊配置傳感器命令通信模塊端的狀態(tài)圖。\n[0040] 圖10是智能傳感器協(xié)議中通信模塊配置傳感器命令傳感器模塊端的狀態(tài)圖。\n[0041] 圖11是智能傳感器協(xié)議中傳感器模塊突發(fā)上傳數(shù)據(jù)命令通信模塊端的狀態(tài)圖。\n[0042] 圖12是智能傳感器協(xié)議中傳感器模塊突發(fā)上傳數(shù)據(jù)命令傳感器模塊端的狀態(tài)圖。\n[0043] 圖中CM表示通信模塊,SM表示傳感器模塊,RJB表示申請(qǐng)加入總線,GNI表示獲取傳感器模塊相關(guān)信息,RSAR表示獲取傳感器模塊采集的數(shù)據(jù)信息,CSM表示配置傳感器模塊,SMSU表示傳感器模塊突發(fā)上傳數(shù)據(jù),GUID表示傳感器模塊全球唯一ID號(hào)。\n具體實(shí)施方式\n[0044] 下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。\n[0045] 本發(fā)明將數(shù)據(jù)傳輸模塊(以下稱為通信模塊)和傳感器模塊從硬件上分開,降低它們之間的硬件耦合度。硬件上基于UART接口,設(shè)計(jì)實(shí)現(xiàn)該接口的熱插拔功能,即傳感器模塊可以帶電即插即用。\n[0046] 本發(fā)明設(shè)計(jì)的智能傳感器協(xié)議,用于傳感器模塊和通信模塊之間的數(shù)據(jù)通信,傳感器模塊本地存儲(chǔ)了一些自身的相關(guān)信息,例如傳感器類別、生產(chǎn)廠家及出廠日期、GUID(全球唯一ID號(hào))及傳感器自身的一些參數(shù)等信息,通信模塊可以根據(jù)協(xié)議制定的相關(guān)命令接口獲得這些信息并收集傳感器模塊采集的數(shù)據(jù),實(shí)現(xiàn)通信模塊與傳感器模塊之間的數(shù)據(jù)傳輸。智能傳感器總線接口上可以掛載多個(gè)傳感器模塊,總線接口不僅提供通信模塊與傳感器模塊的通信鏈路,并且提供傳感器模塊的電源供電。在通信模塊帶電工作的情況下可以隨時(shí)從總線上卸載傳感器模塊,也可以掛載新的傳感器模塊到總線上,實(shí)現(xiàn)傳感器模塊的熱插拔功能。\n[0047] 如圖1所示,本發(fā)明在硬件接口上,采用串行通信接口UART。傳感器模塊與通信模塊之間采用四線制(電源、地、TXD、RXD)硬件連接,總線上可以掛載多個(gè)傳感器模塊,并且支持傳感器模塊的熱插拔,UART接口成為一個(gè)智能傳感器接口,其中傳感器模塊具有獨(dú)立的處理器和存儲(chǔ)器,通信模塊除了包括處理器和存儲(chǔ)器外,還具有無(wú)線通信模塊、LED指示模塊、USB接口模塊及電源模塊。傳感器模塊的供電來(lái)源是通信模塊,通過(guò)智能傳感器接口給予。\n[0048] 智能傳感器協(xié)議規(guī)定了三種數(shù)據(jù)幀格式,即請(qǐng)求PDU(協(xié)議數(shù)據(jù)單元)規(guī)定的數(shù)據(jù)格式(請(qǐng)求幀)、正確響應(yīng)PDU規(guī)定的數(shù)據(jù)格式(正確響應(yīng)幀)、異常響應(yīng)PDU規(guī)定的數(shù)據(jù)格式(異常響應(yīng)幀),規(guī)定了六種命令接口,提出了各種命令接口的通信流程及錯(cuò)誤檢測(cè)機(jī)制。通信過(guò)程中數(shù)據(jù)采用CRC校驗(yàn)方式,保證通信的可靠性。\n[0049] 智能傳感器協(xié)議總共設(shè)計(jì)了六種命令接口,即傳感器模塊申請(qǐng)加入總線命令、通信模塊獲取傳感器模塊相關(guān)信息命令、通信模塊獲取傳感器模塊采集的數(shù)據(jù)命令、通信模塊配置傳感器模塊命令、傳感器模塊突發(fā)上傳數(shù)據(jù)命令及通信模塊喚醒傳感器模塊命令。\n以上每種命令均有相應(yīng)的請(qǐng)求幀、正確響應(yīng)幀和異常響應(yīng)幀;請(qǐng)求幀由命令發(fā)起方發(fā)送,命令接收方接收判斷;正確響應(yīng)幀和異常響應(yīng)幀由命令接收方發(fā)送,命令發(fā)起方接收判斷;\n[0050] 所述傳感器模塊申請(qǐng)加入總線命令、傳感器模塊突發(fā)上傳數(shù)據(jù)命令,命令發(fā)起方是傳感器模塊,命令接收方是通信模塊;所述通信模塊獲取傳感器模塊相關(guān)信息命令、通信模塊獲取傳感器模塊采集的數(shù)據(jù)命令、通信模塊配置傳感器模塊命令、通信模塊喚醒傳感器模塊命令,命令發(fā)起方是通信模塊,命令接收方是傳感器模塊;命令發(fā)起方發(fā)送相應(yīng)的命令請(qǐng)求幀,命令接收方收到請(qǐng)求幀后,發(fā)送與請(qǐng)求命令相對(duì)應(yīng)的響應(yīng)數(shù)據(jù)幀:在通信過(guò)程中如果沒有出現(xiàn)錯(cuò)誤異常,則命令接收方將向命令發(fā)起方發(fā)送正確響應(yīng)幀,如果出現(xiàn)錯(cuò)誤異常,命令接收方將向命令發(fā)起方發(fā)送異常響應(yīng)幀;命令發(fā)起方接收到異常響應(yīng)幀后將會(huì)根據(jù)通信錯(cuò)誤類型做相應(yīng)處理。\n[0051] 比如,通信模塊與傳感器模塊的通信流程為:當(dāng)傳感器模塊剛加入總線時(shí),傳感器模塊向通信模塊發(fā)送申請(qǐng)加入總線命令RJB,格式為請(qǐng)求幀,通信模塊收到RJB命令后為傳感器模塊分配一個(gè)有效的地址,該地址和傳感器類別一起所表示的信息在總線上是唯一的;通信模塊檢查總線上是否有有效的地址,如果有,通信模塊會(huì)發(fā)送RJB正確響應(yīng)幀,傳感器模塊收到由通信模塊發(fā)來(lái)的正確響應(yīng)幀后,表明自己已經(jīng)成功加入總線,可以和通信模塊之間進(jìn)行后續(xù)的通信;如果通信模塊檢查在總線上的傳感器模塊數(shù)目達(dá)到規(guī)定的數(shù)目上限或者出現(xiàn)其它通信錯(cuò)誤,通信模塊將會(huì)向傳感器模塊發(fā)送RJB異常響應(yīng)幀;傳感器模塊收到的RJB異常響應(yīng)幀如果表明是總線上傳感器模塊數(shù)目達(dá)到規(guī)定數(shù)目上限的錯(cuò)誤,則傳感器模塊不再申請(qǐng)加入總線,否則,傳感器模塊會(huì)重新發(fā)送RJB命令,直到申請(qǐng)加入總線成功為止。\n[0052] 以上是RJB命令通信過(guò)程,命令發(fā)起方是傳感器模塊,命令接收方是通信模塊。對(duì)于其它的命令,過(guò)程類似。其中GNI、RSAR、CSM、RERJB命令發(fā)起方是通信模塊,SMSU命令發(fā)起方是傳感器模塊。\n[0053] 如圖2所示,是本發(fā)明中智能傳感器協(xié)議設(shè)計(jì)核心部分的事務(wù)處理的一般過(guò)程。\nSSP表示智能傳感器協(xié)議(smart?sensor?protocol)。協(xié)議數(shù)據(jù)幀主要包括傳感器類別域、GUID域、功能域、數(shù)據(jù)域和校驗(yàn)域,協(xié)議事務(wù)處理主要是對(duì)這些域的處理,對(duì)于正常通信時(shí)不會(huì)出現(xiàn)錯(cuò)誤。但是在通信出現(xiàn)故障時(shí)就需要差錯(cuò)檢測(cè)機(jī)制,本智能傳感器協(xié)議包含差錯(cuò)檢測(cè)機(jī)制的設(shè)計(jì),當(dāng)通信出現(xiàn)錯(cuò)誤時(shí),被請(qǐng)求方會(huì)反饋異常響應(yīng),并且返回的數(shù)據(jù)幀中包含異常代碼,指示出錯(cuò)的原因。\n[0054] 如圖3所示,是本發(fā)明中協(xié)議設(shè)計(jì)部分傳感器模塊申請(qǐng)加入總線命令通信模塊端的狀態(tài)圖。CM接收到SM的RJB請(qǐng)求命令,對(duì)請(qǐng)求的數(shù)據(jù)幀繼續(xù)相關(guān)位域的判斷,首先檢查數(shù)據(jù)幀的CRC校驗(yàn)是否正確,如果不正確,則直接結(jié)束通信過(guò)程,如果正確,判斷功能碼是否正確,如果不是RJB命令碼,則直接結(jié)束通信過(guò)程,如果功能碼正確,CM將處理RJB請(qǐng)求,CM將為SM分配一個(gè)總線上唯一的地址,如果地址分配錯(cuò)誤,則CM將發(fā)送異常碼為0x04的異常響應(yīng)幀給SM,表面總線上SM已經(jīng)滿了,不能再掛載SM,如果地址分配成功,CM將發(fā)送正確響應(yīng)幀給SM。\n[0055] 如圖4所示,是本發(fā)明中協(xié)議設(shè)計(jì)部分傳感器模塊申請(qǐng)加入總線命令傳感器模塊端的狀態(tài)圖。SM接收到CM的RJB響應(yīng)幀后,對(duì)響應(yīng)幀的相關(guān)域進(jìn)行判斷,首先檢查數(shù)據(jù)幀的CRC校驗(yàn)是否正確,如果不正確,則直接結(jié)束通信過(guò)程,準(zhǔn)備發(fā)送下一次RJB命令。如果正確,判斷GUID是否正確,如果GUID和自己的ID號(hào)不符,則直接結(jié)束通信過(guò)程,準(zhǔn)備發(fā)送下一次RJB命令。如果GUID正確,判斷功能碼是否是RJB,如果是,則表明CM收到了RJB請(qǐng)求,表明自己已經(jīng)成功加入總線。如果功能碼是RJB+0x80,則表明總線上的SM已經(jīng)滿,SM將結(jié)束請(qǐng)求過(guò)程。\n[0056] 如圖5所示,是本發(fā)明中智能傳感器協(xié)議設(shè)計(jì)部分通信模塊獲取傳感器模塊相關(guān)信息命令通信模塊端的狀態(tài)圖。CM收到GNI響應(yīng)幀后,首先檢查CRC校驗(yàn)域,如果不正確,則CM發(fā)送異常碼為0x03的異常響應(yīng)幀給SM,如果正確則檢查GUID域,檢查是否與要獲取的SM的GUID相同,若不同,則CM發(fā)送異常碼為0x01的異常響應(yīng)幀給SM,若相同,則繼續(xù)檢查功能碼是否正確(為GNI),若不正確,則CM發(fā)送異常碼為0x02的異常響應(yīng)幀給SM,若功能碼正確,CM則存儲(chǔ)SM發(fā)來(lái)的傳感器相關(guān)信息。\n[0057] 如圖6所示,是本發(fā)明中智能傳感器協(xié)議設(shè)計(jì)部分通信模塊獲取傳感器模塊相關(guān)信息命令傳感器模塊端的狀態(tài)圖。SM收到GNI命令請(qǐng)求后,首先檢查CRC校驗(yàn)域,如果不正確,則結(jié)束通信過(guò)程,如果正確則檢查GUID域,檢查是否與自己的ID號(hào)相同,若不同,則結(jié)束通信過(guò)程,若相同,則繼續(xù)檢查功能碼是否正確(為GNI),若為GNI+0x80,則SM根據(jù)異常碼進(jìn)行相應(yīng)的處理并開啟錯(cuò)誤重傳機(jī)制,若功能碼正確,SM則處理CM的GNI請(qǐng)求,從flash中讀取傳感器相關(guān)信息并作為GNI正確響應(yīng)幀的數(shù)據(jù)體發(fā)送給CM。\n[0058] 如圖7所示,是本發(fā)明中智能傳感器協(xié)議設(shè)計(jì)部分通信模塊獲取傳感器模塊采集的數(shù)據(jù)命令通信模塊端的狀態(tài)圖。CM收到RSAR響應(yīng)幀后,首先檢查CRC校驗(yàn)域,如果不正確,則CM發(fā)送異常碼為0x03的異常響應(yīng)幀給SM,如果正確則檢查GUID域,檢查是否與要獲取的SM的GUID相同,若不同,則CM發(fā)送異常碼為0x01的異常響應(yīng)幀給SM,若相同,則繼續(xù)檢查功能碼是否正確(為RSAR),若不正確,則CM發(fā)送異常碼為0x02的異常響應(yīng)幀給SM,若功能碼正確,CM則存儲(chǔ)SM發(fā)來(lái)的傳感器相關(guān)信息。\n[0059] 如圖8所示,是本發(fā)明中智能傳感器協(xié)議設(shè)計(jì)部分通信模塊獲取傳感器模塊采集的數(shù)據(jù)命令傳感器模塊端的狀態(tài)圖。SM收到RSAR命令請(qǐng)求后,首先檢查CRC校驗(yàn)域,如果不正確,則結(jié)束通信過(guò)程,如果正確則檢查GUID域,檢查是否與自己的ID號(hào)相同,若不同,則結(jié)束通信過(guò)程,若相同,則繼續(xù)檢查功能碼是否正確(為RSAR),若為RSAR+0x80,則SM根據(jù)異常碼進(jìn)行相應(yīng)的處理并開啟錯(cuò)誤重傳機(jī)制,若功能碼正確,SM則處理CM的RSAR請(qǐng)求,將采集的數(shù)據(jù)作為RSAR正確響應(yīng)幀的數(shù)據(jù)體發(fā)送給CM。\n[0060] 如圖9所示,是本發(fā)明中智能傳感器協(xié)議設(shè)計(jì)部分通信模塊配置傳感器模塊命令通信模塊端的狀態(tài)圖。CM收到CSM響應(yīng)幀后,首先檢查CRC校驗(yàn)域,如果不正確,則CM發(fā)送異常碼為0x03的異常響應(yīng)幀給SM,如果正確則檢查GUID域,檢查是否與要獲取的SM的GUID相同,若不同,則CM發(fā)送異常碼為0x01的異常響應(yīng)幀給SM,若相同,則繼續(xù)檢查功能碼是否正確(為CSM),若不正確,則CM發(fā)送異常碼為0x02的異常響應(yīng)幀給SM,若功能碼正確,CM則存儲(chǔ)SM發(fā)來(lái)的傳感器相關(guān)信息。\n[0061] 如圖10所示,是本發(fā)明中智能傳感器協(xié)議設(shè)計(jì)部分通信模塊配置傳感器模塊命令傳感器模塊端的狀態(tài)圖。SM收到CSM命令請(qǐng)求后,首先檢查CRC校驗(yàn)域,如果不正確,則結(jié)束通信過(guò)程,如果正確則檢查GUID域,檢查是否與自己的ID號(hào)相同,若不同,則結(jié)束通信過(guò)程,若相同,則繼續(xù)檢查功能碼是否正確(為CSM),若為CSM+0x80,則SM根據(jù)異常碼進(jìn)行相應(yīng)的處理并開啟錯(cuò)誤重傳機(jī)制,若功能碼正確,SM則處理CM的CSM請(qǐng)求,將CM發(fā)來(lái)的配置信息進(jìn)行相關(guān)的配置并向CM發(fā)送正確的CSM響應(yīng)。\n[0062] 如圖11所示,是本發(fā)明中智能傳感器協(xié)議設(shè)計(jì)部分傳感器模塊突發(fā)上傳數(shù)據(jù)命令通信模塊端的狀態(tài)圖。CM收到SMSU命令請(qǐng)求后,首先檢查CRC校驗(yàn)域,如果不正確,則結(jié)束通信過(guò)程,如果正確則檢查功能碼是否正確(為SMSU),若為CSM+0x80,則CM根據(jù)異常碼進(jìn)行相應(yīng)的處理并開啟錯(cuò)誤重傳機(jī)制,若功能碼正確,CM則處理SM的SMSU請(qǐng)求,將SM發(fā)來(lái)的傳感器采集的數(shù)據(jù)進(jìn)行相關(guān)的處理并向SM發(fā)送正確的SMSU響應(yīng)。\n[0063] 如圖12所示,是本發(fā)明中智能傳感器協(xié)議設(shè)計(jì)部分傳感器模塊突發(fā)上傳數(shù)據(jù)命令傳感器模塊端的狀態(tài)圖。SM收到SMSU響應(yīng)幀后,首先檢查CRC校驗(yàn)域,如果不正確,則SM發(fā)送異常碼為0x03的異常響應(yīng)幀給CM,如果正確則檢查GUID域,檢查是否與自己的GUID相同,若不同,則SM發(fā)送異常碼為0x01的異常響應(yīng)幀給CM,若相同,則繼續(xù)檢查功能碼是否正確(為SMSU),若不正確,則SM發(fā)送異常碼為0x02的異常響應(yīng)幀給CM,若功能碼正確,結(jié)束通信,表明傳感器采集的數(shù)據(jù)已經(jīng)正確送達(dá)CM。\n[0064] 對(duì)于通信模塊喚醒傳感器模塊命令RERJB,在上述各種命令通信過(guò)程中,在通信模塊端如果出現(xiàn)錯(cuò)誤異常,通信模塊會(huì)更新相應(yīng)的當(dāng)前在總線上的傳感器模塊的通信錯(cuò)誤計(jì)數(shù)器及傳感器模塊掉線次數(shù)計(jì)數(shù)器。通信錯(cuò)誤計(jì)數(shù)器是每次通信錯(cuò)誤時(shí)自增1,當(dāng)達(dá)到預(yù)設(shè)最大值16后,傳感器模塊掉線次數(shù)計(jì)數(shù)器自增1,當(dāng)傳感器模塊掉線次數(shù)計(jì)數(shù)器達(dá)到預(yù)設(shè)最大值5后,通信模塊會(huì)清除相應(yīng)的傳感器模塊的信息,向相應(yīng)的傳感器模塊發(fā)送RERJB命令,傳感器模塊收到RERJB命令后將會(huì)重新開始申請(qǐng)加入總線過(guò)程,發(fā)送申請(qǐng)加入總線命令RJB。此后的過(guò)程就和RJB過(guò)程一樣。以上即為通信模塊喚醒傳感器模塊的過(guò)程。\n[0065] 本發(fā)明需要解決的問(wèn)題主要是UART總線競(jìng)爭(zhēng)沖突的問(wèn)題,采用的解決方案是軟件退避延時(shí)算法和串口數(shù)據(jù)過(guò)濾算法,在這兩種算法的協(xié)同工作下,能夠有效的解決總線上的競(jìng)爭(zhēng)沖突問(wèn)題,經(jīng)過(guò)測(cè)試達(dá)到良好的效果。\n[0066] 軟件退避延時(shí)算法主要用于解決傳感器模塊加入總線過(guò)程中的總線競(jìng)爭(zhēng)沖突問(wèn)題。如果同時(shí)有多個(gè)傳感器模塊要求加入總線,通信模塊不可能同時(shí)響應(yīng)所有的傳感器模塊,這樣傳感器模塊在規(guī)定的超時(shí)時(shí)間內(nèi)沒有收到正確的響應(yīng),傳感器模塊會(huì)結(jié)束此次過(guò)程,然后在過(guò)一段時(shí)間后繼續(xù)下一次申請(qǐng)過(guò)程,這個(gè)時(shí)間的選取是通過(guò)選取一個(gè)隨機(jī)數(shù)(隨機(jī)數(shù)的是通過(guò)采集單片機(jī)空閑的模擬口獲得),利用這個(gè)隨機(jī)數(shù)乘以一個(gè)基準(zhǔn)時(shí)間,得到開啟下一次申請(qǐng)過(guò)程所需要的時(shí)間。在此時(shí)間之后開啟新的申請(qǐng)過(guò)程,直到申請(qǐng)成功。總線上的其他傳感器模塊也是經(jīng)歷此過(guò)程。此算法可以有效的解決競(jìng)爭(zhēng)沖突問(wèn)題。\n[0067] 串口數(shù)據(jù)過(guò)濾算法主要解決通信模塊和傳感器模塊通信過(guò)程的高效性。主要采用的方法是判斷相鄰兩次串口中斷之間的時(shí)間是否超過(guò)30ms,如果超過(guò)30ms則表示沒有串口數(shù)據(jù),立即清空串口緩沖區(qū),30ms的選定是依據(jù)智能傳感器協(xié)議通信數(shù)據(jù)幀所需要的時(shí)間,即協(xié)議幀在這個(gè)時(shí)間內(nèi)數(shù)據(jù)可以傳輸完畢。及時(shí)清空串口緩沖區(qū)大大提高了通信過(guò)程的可靠性、有效性。\n[0068] 基于此方法設(shè)計(jì)的傳感系統(tǒng)后期維護(hù)將變得非常簡(jiǎn)單,部署時(shí)如果要更換或添加傳感器模塊,可以很方便地從總線上卸載或加載,系統(tǒng)可擴(kuò)展性強(qiáng)。此過(guò)程中軟件代碼都不需要做修改,并且可以在通信模塊正常運(yùn)行過(guò)程中進(jìn)行,不需要斷電重啟。研發(fā)后期需要重點(diǎn)投入的力量就是如何設(shè)計(jì)出更低功耗、更安全可靠、更實(shí)用的新型傳感器模塊和通信模塊了。\n[0069] 基于此方法設(shè)計(jì)的傳感器節(jié)點(diǎn)主要應(yīng)用場(chǎng)合有例如智能家庭領(lǐng)域、工業(yè)遠(yuǎn)程監(jiān)控領(lǐng)域及教學(xué)領(lǐng)域等。
法律信息
- 2017-03-22
- 2014-04-16
實(shí)質(zhì)審查的生效
IPC(主分類): H04L 29/06
專利申請(qǐng)?zhí)? 201310742924.4
申請(qǐng)日: 2013.12.30
- 2014-03-19
引用專利(該專利引用了哪些專利)
序號(hào) | 公開(公告)號(hào) | 公開(公告)日 | 申請(qǐng)日 | 專利名稱 | 申請(qǐng)人 |
1
| |
2012-07-25
|
2012-03-19
| | |
2
| |
2012-12-19
|
2012-08-27
| | |
3
| |
2013-05-08
|
2013-01-28
| | |
被引用專利(該專利被哪些專利引用)
序號(hào) | 公開(公告)號(hào) | 公開(公告)日 | 申請(qǐng)日 | 專利名稱 | 申請(qǐng)人 | 該專利沒有被任何外部專利所引用! |