無(wú)線傳感器網(wǎng)絡(luò)的CAN總線互聯(lián)
摘要: 本文基于無(wú)線傳感器網(wǎng)絡(luò)給出一種連接CAN總線的無(wú)線通道設(shè)計(jì),,主要包括CAN總線無(wú)線接入控制模塊電路設(shè)計(jì)以及無(wú)線傳感器節(jié)點(diǎn)的通信協(xié)議設(shè)計(jì)等內(nèi)容,。目前,,該系統(tǒng)已經(jīng)實(shí)現(xiàn),,實(shí)際使用效果良好,。本文內(nèi)容對(duì)于一般的信息采集無(wú)線傳輸系統(tǒng)設(shè)計(jì)具有較好的借鑒意義,。
Abstract:
Key words :
</a>CAN" title="CAN">CAN" title="CAN">CAN總線連接,,某些情況下,,車輛上裝和下裝之間的旋轉(zhuǎn)連接器由于沒(méi)有連線空間,,需要無(wú)線通信模塊為上裝和下裝的CAN總線提供一個(gè)透明的無(wú)線通道。本文基于無(wú)線傳感器網(wǎng)絡(luò)給出一種無(wú)線通道的設(shè)計(jì),,主要包括CAN總線無(wú)線接入控制模塊電路設(shè)計(jì)以及無(wú)線傳感器節(jié)點(diǎn)的通信協(xié)議設(shè)計(jì)等內(nèi)容,。
2 電路設(shè)計(jì)
以無(wú)線傳感器網(wǎng)絡(luò)為基礎(chǔ)的CAN總線擴(kuò)展系統(tǒng)總體結(jié)構(gòu)如圖1所示,其主要由兩塊CAN總線無(wú)線接入控制模塊構(gòu)成,,每個(gè)模塊的組成及各部分的作用是:無(wú)線傳感器節(jié)點(diǎn)的微控制器及存儲(chǔ)器模塊,,接收對(duì)端無(wú)線接人控制模塊傳來(lái)的數(shù)據(jù)并存儲(chǔ),然后將數(shù)據(jù)交CAN控制器待發(fā),,同時(shí)接收CAN控制器傳來(lái)的數(shù)據(jù)并通過(guò)傳感器網(wǎng)絡(luò)將數(shù)據(jù)發(fā)送到對(duì)端無(wú)線接入控制模塊,;CAN控制器采用SJA1000,運(yùn)行CAN協(xié)議,,為傳感器網(wǎng)絡(luò)結(jié)點(diǎn)提供CAN總線服務(wù),;收發(fā)器采用TJA1050作為CAN控制器與物理媒體的物理接口,為CAN控制器提供比特流服務(wù),。

3 無(wú)線傳感器節(jié)點(diǎn)
3.1 無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)硬件結(jié)構(gòu)
圖2所示為無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的硬件,,包括傳感器模塊、微處理器模塊和無(wú)線通信模塊等三個(gè)功能部分,。GAINTS系列節(jié)點(diǎn)使用AT-MEGA128單片機(jī)作為控制器和處理核心,,無(wú)線通信模塊核心采用工作在433 MHz的單芯片低電壓CC1000收發(fā)器,該射頻芯片具有工作電壓低(2.1~3.6V均可工作),、能耗低,、體積小等非常適合于集成的特點(diǎn)。它采用FSK調(diào)制方式,,外部采用SPI的接口,,可以和微控制器直接相聯(lián),。CC1000使用頻率為14.745 MHz的晶振作為驅(qū)動(dòng),在該驅(qū)動(dòng)下面CC1000可以提供的最大數(shù)據(jù)傳輸率為19.2KB/s,,也就是說(shuō)每ms不到3個(gè)字節(jié),,這個(gè)數(shù)據(jù)對(duì)MAC層的協(xié)議是很有用的,在設(shè)置ACK等待時(shí)間和RTS-CTS等待時(shí)間的時(shí)候需要考慮這些參數(shù),。

3.2 通信協(xié)議設(shè)計(jì)
本文基于TinyOS底層通信接口進(jìn)行通信協(xié)議設(shè)計(jì),。對(duì)TinyOS編程采用的是nesC語(yǔ)言,這是一種類似C的語(yǔ)言,,是對(duì)C的擴(kuò)展,,也是結(jié)構(gòu)化的語(yǔ)言,是基于組件式的編程,,模塊化的設(shè)計(jì),。nesC組件有兩種:Module(模塊)和Configuration(連接配置文件)。Module在模塊中主要實(shí)現(xiàn)代碼的編制,,可以使用和提供接口,,在它的實(shí)現(xiàn)部分必須對(duì)提供接口里的command和使用接口里的event進(jìn)行實(shí)現(xiàn)。
2 電路設(shè)計(jì)
以無(wú)線傳感器網(wǎng)絡(luò)為基礎(chǔ)的CAN總線擴(kuò)展系統(tǒng)總體結(jié)構(gòu)如圖1所示,其主要由兩塊CAN總線無(wú)線接入控制模塊構(gòu)成,,每個(gè)模塊的組成及各部分的作用是:無(wú)線傳感器節(jié)點(diǎn)的微控制器及存儲(chǔ)器模塊,,接收對(duì)端無(wú)線接人控制模塊傳來(lái)的數(shù)據(jù)并存儲(chǔ),然后將數(shù)據(jù)交CAN控制器待發(fā),,同時(shí)接收CAN控制器傳來(lái)的數(shù)據(jù)并通過(guò)傳感器網(wǎng)絡(luò)將數(shù)據(jù)發(fā)送到對(duì)端無(wú)線接入控制模塊,;CAN控制器采用SJA1000,運(yùn)行CAN協(xié)議,,為傳感器網(wǎng)絡(luò)結(jié)點(diǎn)提供CAN總線服務(wù),;收發(fā)器采用TJA1050作為CAN控制器與物理媒體的物理接口,為CAN控制器提供比特流服務(wù),。

3 無(wú)線傳感器節(jié)點(diǎn)
3.1 無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)硬件結(jié)構(gòu)
圖2所示為無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的硬件,,包括傳感器模塊、微處理器模塊和無(wú)線通信模塊等三個(gè)功能部分,。GAINTS系列節(jié)點(diǎn)使用AT-MEGA128單片機(jī)作為控制器和處理核心,,無(wú)線通信模塊核心采用工作在433 MHz的單芯片低電壓CC1000收發(fā)器,該射頻芯片具有工作電壓低(2.1~3.6V均可工作),、能耗低,、體積小等非常適合于集成的特點(diǎn)。它采用FSK調(diào)制方式,,外部采用SPI的接口,,可以和微控制器直接相聯(lián),。CC1000使用頻率為14.745 MHz的晶振作為驅(qū)動(dòng),在該驅(qū)動(dòng)下面CC1000可以提供的最大數(shù)據(jù)傳輸率為19.2KB/s,,也就是說(shuō)每ms不到3個(gè)字節(jié),,這個(gè)數(shù)據(jù)對(duì)MAC層的協(xié)議是很有用的,在設(shè)置ACK等待時(shí)間和RTS-CTS等待時(shí)間的時(shí)候需要考慮這些參數(shù),。

3.2 通信協(xié)議設(shè)計(jì)
本文基于TinyOS底層通信接口進(jìn)行通信協(xié)議設(shè)計(jì),。對(duì)TinyOS編程采用的是nesC語(yǔ)言,這是一種類似C的語(yǔ)言,,是對(duì)C的擴(kuò)展,,也是結(jié)構(gòu)化的語(yǔ)言,是基于組件式的編程,,模塊化的設(shè)計(jì),。nesC組件有兩種:Module(模塊)和Configuration(連接配置文件)。Module在模塊中主要實(shí)現(xiàn)代碼的編制,,可以使用和提供接口,,在它的實(shí)現(xiàn)部分必須對(duì)提供接口里的command和使用接口里的event進(jìn)行實(shí)現(xiàn)。
TinyOS是基于一種組件架構(gòu)方式的開(kāi)源的嵌入式操作系統(tǒng),,一個(gè)應(yīng)用程序可以通過(guò)連接配置文件(a wiring specification)將各種組件連接起來(lái),,以完成它所需要的功能。TinyOS的應(yīng)用程序都是基于事件驅(qū)動(dòng)模式的,,采用事件觸發(fā)去喚醒傳感器工作,。tasks一般用在對(duì)于時(shí)間要求不是很高的應(yīng)用中,且tasks之間是平等的,,即在執(zhí)行時(shí)是按先后順序,,一般為了減少tasks的運(yùn)行時(shí)間,要求每一個(gè)task都很短小,,能夠使系統(tǒng)的負(fù)擔(dān)較輕;events一般用在對(duì)于時(shí)間要求很嚴(yán)格的應(yīng)用中,,而且它可以優(yōu)先于tasks和其他events執(zhí)行,,可以被一個(gè)操作完成或是來(lái)自外部環(huán)境的事件觸發(fā),在TinyOS中一般由硬件中斷處理來(lái)驅(qū)動(dòng)事件,。在TinyOS中由于tasks之間不能互相占先執(zhí)行,,所以TinyOS沒(méi)有提供任何阻塞操作,為了讓一個(gè)耗時(shí)較長(zhǎng)的操作盡快完成,,一般都是將對(duì)這個(gè)操作的需求及其完成分開(kāi)來(lái)實(shí)現(xiàn),,以便獲得較高的執(zhí)行效率。由于在Tiny-OS中沒(méi)有進(jìn)程管理的概念,,它對(duì)任務(wù)是按簡(jiǎn)單的FIFO隊(duì)列進(jìn)行處理的,,對(duì)資源采取預(yù)先分配,,且這個(gè)隊(duì)列里最多只能有7個(gè)未解決的任務(wù)。我們?cè)O(shè)計(jì)時(shí),,主要處理三類事件,,即串口接收數(shù)據(jù)事件、無(wú)線接收數(shù)據(jù)事件和定時(shí)器事件,。
①串口接收數(shù)據(jù)事件,。每次節(jié)點(diǎn)從串口接收到一個(gè)字節(jié)的數(shù)據(jù)將觸發(fā)該事件。對(duì)于信息采集任務(wù)來(lái)說(shuō),,其信息是定時(shí)采集的,。同時(shí),CAN總線的速率遠(yuǎn)遠(yuǎn)大于無(wú)線傳輸的速率,。因此,,在節(jié)點(diǎn)開(kāi)辟了一段較大的緩存區(qū),對(duì)CAN總線傳過(guò)來(lái)的數(shù)據(jù)進(jìn)行緩存,。該緩存區(qū)的大小取決于無(wú)線傳輸?shù)乃俾室约癈AN總線在一個(gè)定時(shí)采集周期的數(shù)據(jù)量大小,。假設(shè)無(wú)線傳輸?shù)乃俾蕿閂、緩存區(qū)大小為Mem,、采集周期為T,、每個(gè)采集周期的數(shù)據(jù)量為Data,注意V為傳輸有效數(shù)據(jù)的速率,,即要去掉協(xié)議開(kāi)銷以及管理和控制開(kāi)銷,,則至少滿足V×T≥Data,Mem≥Data,。為提高無(wú)線傳輸?shù)男?,不是每次從串口接受到一個(gè)字節(jié)就從無(wú)線接口發(fā)走,而是每次緩存的字節(jié)數(shù)達(dá)到無(wú)線傳輸一個(gè)數(shù)據(jù)包的大小時(shí),,啟動(dòng)任務(wù)一UARTRcvdTask,。這種采用任務(wù)的方式進(jìn)行實(shí)際的無(wú)線數(shù)據(jù)傳輸可以避免阻塞其他event事件。
②無(wú)線接受數(shù)據(jù)事件,。每次節(jié)點(diǎn)從無(wú)線接口接受到一個(gè)數(shù)據(jù)包將觸發(fā)該事件,。事件處理程序主要從協(xié)議數(shù)據(jù)包中獲取傳輸數(shù)據(jù),并且緩存于接受緩存區(qū),,具體地怎么處理無(wú)線接受的數(shù)據(jù)的工作,,通過(guò)啟動(dòng)任務(wù)——RadioRcvdTask來(lái)完成,以避免阻塞其他event事件,。
③定時(shí)器事件,。該事件定時(shí)觸發(fā)。該事件處理程序主要定時(shí)判斷串口接受數(shù)據(jù)緩存區(qū)是否有數(shù)據(jù),如果有的話,,則啟動(dòng)任務(wù)——UARTRcvdTask,,以避免到串口收到的數(shù)據(jù)不足一個(gè)協(xié)議數(shù)據(jù)包時(shí),會(huì)長(zhǎng)期滯留在串口接受數(shù)據(jù)緩存區(qū)中,。
4 性能分析和實(shí)驗(yàn)
整個(gè)系統(tǒng)的性能主要取決于無(wú)線傳輸?shù)乃俾?。無(wú)線CC1000使用頻率為14.745 MHz的晶振作為驅(qū)動(dòng),在該驅(qū)動(dòng)下面CC1000可以提供的最大數(shù)據(jù)傳輸率為19.2 KB/s,??紤]無(wú)線傳輸協(xié)議消耗,無(wú)線傳輸數(shù)據(jù)報(bào)的格式如下:

其中TOSH_DATA_LENGTH=29,,故協(xié)議的理論有效數(shù)據(jù)比率約為70%,。同時(shí),為提高無(wú)線傳輸?shù)男?,不是每次從串口接受到一個(gè)字節(jié)就從無(wú)線接口發(fā)走,,而是每次緩存的字節(jié)數(shù)達(dá)到無(wú)線傳輸一個(gè)數(shù)據(jù)包的大小時(shí),才啟動(dòng)發(fā)送任務(wù),,故無(wú)線有效傳輸速率約為13.4 KB/s,,,對(duì)于本系統(tǒng)應(yīng)用來(lái)說(shuō),CAN總線的采樣周期為10 s,,每次采樣數(shù)據(jù)為1 K數(shù)據(jù),。雖然,CAN總線速率相對(duì)來(lái)說(shuō)較高,,但是通過(guò)緩存完全可以滿足需求,。在性能測(cè)試中,該系統(tǒng)持續(xù)運(yùn)行20多個(gè)小時(shí),,收發(fā)均無(wú)問(wèn)題,。
5 結(jié) 論
本文基于無(wú)線傳感器網(wǎng)絡(luò)給出一種連接CAN總線的無(wú)線通道設(shè)計(jì),主要包括CAN總線無(wú)線接入控制模塊電路設(shè)計(jì)以及無(wú)線傳感器節(jié)點(diǎn)的通信協(xié)議設(shè)計(jì)等內(nèi)容,。目前,,該系統(tǒng)已經(jīng)實(shí)現(xiàn),實(shí)際使用效果良好,。本文內(nèi)容對(duì)于一般的信息采集無(wú)線傳輸系統(tǒng)設(shè)計(jì)具有較好的借鑒意義,。
①串口接收數(shù)據(jù)事件,。每次節(jié)點(diǎn)從串口接收到一個(gè)字節(jié)的數(shù)據(jù)將觸發(fā)該事件。對(duì)于信息采集任務(wù)來(lái)說(shuō),,其信息是定時(shí)采集的,。同時(shí),CAN總線的速率遠(yuǎn)遠(yuǎn)大于無(wú)線傳輸的速率,。因此,,在節(jié)點(diǎn)開(kāi)辟了一段較大的緩存區(qū),對(duì)CAN總線傳過(guò)來(lái)的數(shù)據(jù)進(jìn)行緩存,。該緩存區(qū)的大小取決于無(wú)線傳輸?shù)乃俾室约癈AN總線在一個(gè)定時(shí)采集周期的數(shù)據(jù)量大小,。假設(shè)無(wú)線傳輸?shù)乃俾蕿閂、緩存區(qū)大小為Mem,、采集周期為T,、每個(gè)采集周期的數(shù)據(jù)量為Data,注意V為傳輸有效數(shù)據(jù)的速率,,即要去掉協(xié)議開(kāi)銷以及管理和控制開(kāi)銷,,則至少滿足V×T≥Data,Mem≥Data,。為提高無(wú)線傳輸?shù)男?,不是每次從串口接受到一個(gè)字節(jié)就從無(wú)線接口發(fā)走,而是每次緩存的字節(jié)數(shù)達(dá)到無(wú)線傳輸一個(gè)數(shù)據(jù)包的大小時(shí),,啟動(dòng)任務(wù)一UARTRcvdTask,。這種采用任務(wù)的方式進(jìn)行實(shí)際的無(wú)線數(shù)據(jù)傳輸可以避免阻塞其他event事件。
②無(wú)線接受數(shù)據(jù)事件,。每次節(jié)點(diǎn)從無(wú)線接口接受到一個(gè)數(shù)據(jù)包將觸發(fā)該事件,。事件處理程序主要從協(xié)議數(shù)據(jù)包中獲取傳輸數(shù)據(jù),并且緩存于接受緩存區(qū),,具體地怎么處理無(wú)線接受的數(shù)據(jù)的工作,,通過(guò)啟動(dòng)任務(wù)——RadioRcvdTask來(lái)完成,以避免阻塞其他event事件,。
③定時(shí)器事件,。該事件定時(shí)觸發(fā)。該事件處理程序主要定時(shí)判斷串口接受數(shù)據(jù)緩存區(qū)是否有數(shù)據(jù),如果有的話,,則啟動(dòng)任務(wù)——UARTRcvdTask,,以避免到串口收到的數(shù)據(jù)不足一個(gè)協(xié)議數(shù)據(jù)包時(shí),會(huì)長(zhǎng)期滯留在串口接受數(shù)據(jù)緩存區(qū)中,。
4 性能分析和實(shí)驗(yàn)
整個(gè)系統(tǒng)的性能主要取決于無(wú)線傳輸?shù)乃俾?。無(wú)線CC1000使用頻率為14.745 MHz的晶振作為驅(qū)動(dòng),在該驅(qū)動(dòng)下面CC1000可以提供的最大數(shù)據(jù)傳輸率為19.2 KB/s,??紤]無(wú)線傳輸協(xié)議消耗,無(wú)線傳輸數(shù)據(jù)報(bào)的格式如下:

其中TOSH_DATA_LENGTH=29,,故協(xié)議的理論有效數(shù)據(jù)比率約為70%,。同時(shí),為提高無(wú)線傳輸?shù)男?,不是每次從串口接受到一個(gè)字節(jié)就從無(wú)線接口發(fā)走,,而是每次緩存的字節(jié)數(shù)達(dá)到無(wú)線傳輸一個(gè)數(shù)據(jù)包的大小時(shí),才啟動(dòng)發(fā)送任務(wù),,故無(wú)線有效傳輸速率約為13.4 KB/s,,,對(duì)于本系統(tǒng)應(yīng)用來(lái)說(shuō),CAN總線的采樣周期為10 s,,每次采樣數(shù)據(jù)為1 K數(shù)據(jù),。雖然,CAN總線速率相對(duì)來(lái)說(shuō)較高,,但是通過(guò)緩存完全可以滿足需求,。在性能測(cè)試中,該系統(tǒng)持續(xù)運(yùn)行20多個(gè)小時(shí),,收發(fā)均無(wú)問(wèn)題,。
5 結(jié) 論
本文基于無(wú)線傳感器網(wǎng)絡(luò)給出一種連接CAN總線的無(wú)線通道設(shè)計(jì),主要包括CAN總線無(wú)線接入控制模塊電路設(shè)計(jì)以及無(wú)線傳感器節(jié)點(diǎn)的通信協(xié)議設(shè)計(jì)等內(nèi)容,。目前,,該系統(tǒng)已經(jīng)實(shí)現(xiàn),實(shí)際使用效果良好,。本文內(nèi)容對(duì)于一般的信息采集無(wú)線傳輸系統(tǒng)設(shè)計(jì)具有較好的借鑒意義,。
此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。