摘要:介紹了CAN總線技術(shù)及特點(diǎn),,提出了一種基于CAN總線的溫度測量節(jié)點(diǎn)的設(shè)計(jì),,該系統(tǒng)采用單片機(jī)技術(shù)和CAN總線技術(shù)實(shí)現(xiàn),給出了溫度測量節(jié)點(diǎn)的硬件,、軟件的設(shè)計(jì),。經(jīng)實(shí)際應(yīng)用,使用CAN總線的溫度測量節(jié)點(diǎn)在信號傳輸?shù)膶?shí)時(shí)性,、可靠性,、傳輸距離和測量精度有著顯著的提高。
關(guān)鍵詞:CAN總線,;節(jié)點(diǎn),;CAN通信
0 引言
CAN是Controller Area Network的縮寫,即控制器局部網(wǎng),,通常稱為CAN bus(CAN總線),,是一種支持分布式控制的串行通信協(xié)議。CAN最初出現(xiàn)在汽車工業(yè)中,,是20世紀(jì)80年代德國Boech公司為汽車的監(jiān)控,、控制系統(tǒng)而設(shè)計(jì)的,主要是解決汽車中的電子控制裝置之間的通信,,減少不斷增加的信號線,。CAN總線的直接通信距離最遠(yuǎn)可以達(dá)到10 km,此時(shí)通信速率為5 kbps以下,;而通信速率最高可達(dá)1 Mbps,,此時(shí)通信距離長為40 m。同時(shí)CAN總線的通信媒介采用雙絞線或光纖,,選擇靈活,,其結(jié)構(gòu)較簡單,總線接口芯片支持8位,、16位的CPU,。
由于CAN總線采用短幀結(jié)構(gòu),在標(biāo)準(zhǔn)格式中,,短幀的字節(jié)數(shù)為8個(gè),,因此傳輸時(shí)間短,受干擾的概率低,,重新發(fā)數(shù)據(jù)幀的時(shí)間短,,并且每幀信息都有CBC校驗(yàn)及其他檢錯(cuò)措施,,這樣可以保證極低的數(shù)據(jù)出錯(cuò)率。CAN總線上的節(jié)點(diǎn)在錯(cuò)誤嚴(yán)重時(shí),,可以自動(dòng)關(guān)閉總線的功能,,使總線上的其它操作不受到影響。由于CAN總線的數(shù)據(jù)通信具有卓越的特性及極高的可靠性,,因而非常適合工業(yè)過程監(jiān)控設(shè)備互連,也是最有前途的現(xiàn)場總線之一,。由于CAN總線的特點(diǎn),,使得其廣泛地應(yīng)用于電力、航空航天,、治金,、交通工具、機(jī)器人,、醫(yī)療設(shè)備,、環(huán)境監(jiān)控和家用電器等眾多領(lǐng)域。本文提出基于CAN總線的溫度測量節(jié)點(diǎn)的設(shè)計(jì),。
1 系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)
根據(jù)系統(tǒng)的設(shè)計(jì)要求,,其總體設(shè)計(jì)結(jié)構(gòu)如圖1所示。整個(gè)系統(tǒng)由主站節(jié)點(diǎn),、分布式溫度測量節(jié)點(diǎn)兩部分組成,。由于基于CAN總線的溫度測量節(jié)點(diǎn)是一種分布式、實(shí)時(shí)的通信系統(tǒng),,可采用主從方式通信,,其特點(diǎn)就是系統(tǒng)中任一節(jié)點(diǎn)設(shè)一為主站節(jié)點(diǎn),其余均為從站節(jié)點(diǎn),,主站節(jié)點(diǎn)通過CAN總線與各個(gè)從站節(jié)點(diǎn)進(jìn)行通信,。我們只需設(shè)一個(gè)主站節(jié)點(diǎn)作為主監(jiān)控器,以點(diǎn)對點(diǎn)方式進(jìn)行通信,,其余的從站均為各個(gè)溫度測量節(jié)點(diǎn),。各個(gè)節(jié)點(diǎn)都通過CAN總線實(shí)現(xiàn)信號數(shù)據(jù)的連接,各個(gè)溫度測量節(jié)點(diǎn)具有較強(qiáng)的獨(dú)立性,,具有工作可靠性,、性能穩(wěn)定、測量精確,、安裝調(diào)試方便,、造價(jià)低廉等特點(diǎn)。
2 溫度測量節(jié)點(diǎn)的硬件電路設(shè)計(jì)
CAN總線溫度測量節(jié)點(diǎn)主要任務(wù)是溫度采集與CAN通信,,其硬件結(jié)構(gòu)框圖如圖2所示,。硬件電路由微處理器STC89C52,、總線控制器SJA10 00、總線驅(qū)動(dòng)器PCA82CS0和傳感器DS18B20四個(gè)部份組成,。微處理器負(fù)責(zé)對SJA1000和DS18B20進(jìn)行初始化,,通過總線控制器SJA1000實(shí)現(xiàn)數(shù)據(jù)的接收和發(fā)送等通信任務(wù)。
2.1 溫度傳感器DS18B20
DS18B20是美國DALLAS公司推出的第一片支持“一線總線”接口的溫度傳感器,,該傳感器只需一個(gè)端口引腳進(jìn)行通信,,就可以實(shí)現(xiàn)多點(diǎn)分布的應(yīng)用,具有低功耗,、高性能,、抗干擾強(qiáng)等優(yōu)點(diǎn)。其傳感器的特性為:
(1)溫度測量范圍寬,,能測到-55℃~125℃的溫度,,在-10℃~+85℃時(shí)精度為正負(fù)0.5℃。
(2)提供9—12位的測量分辯率,,對應(yīng)的溫度精度分別為0.5℃,、0.25℃、0.125℃和0.0625℃,,實(shí)現(xiàn)了高精度的測量,。
(3)接口方式獨(dú)特,僅需一條信號線就可以實(shí)現(xiàn)與微處理器的雙向通信,。
(4)測量出的溫度能直接轉(zhuǎn)化成串行數(shù)字信號供CPU處理,,同時(shí)還傳送CRC校驗(yàn)碼,具有很強(qiáng)的抗干擾糾錯(cuò)能力,。
溫度傳感器的電路設(shè)計(jì)由單片機(jī)的引腳P3.5與傳感器DS18B20的DQ腳相連,,實(shí)現(xiàn)微處理器與傳感器的雙向數(shù)據(jù)的通信。同時(shí)DQ單總線外接一4.7 k的上拉電阻,。溫度傳感器的電路圖如圖3所示,。
2.2 CAN通信電路的設(shè)計(jì)
CAN通信電路是整個(gè)系統(tǒng)實(shí)現(xiàn)通信的關(guān)鍵部分,系統(tǒng)中各個(gè)節(jié)點(diǎn)和節(jié)點(diǎn)控制器是通過CAN通信電路接入CAN總線網(wǎng)絡(luò)上的,,實(shí)現(xiàn)信號數(shù)據(jù)的傳輸,。CAN通信電路采用STC89C52處理器、PHILIPS公司的總線控制器SJA1000,、NXP公司的總線收發(fā)器82C250和高速光電耦合器6N137等器件組成,。在CAN通信電路中微處理器負(fù)責(zé)對SJA1000進(jìn)行初始化,各信號通過CAN總線控制器實(shí)現(xiàn)信號數(shù)據(jù)的接收和發(fā)送等通信任務(wù),。同時(shí)為了增加CAN總線節(jié)點(diǎn)的抗干擾能力,,更好地實(shí)現(xiàn)了總線上各CAN節(jié)點(diǎn)間的電氣隔離,SJA1000的TX和RX引腳通過連接光耦6N137后再與總線收發(fā)器PCA82C250相連,,總線收發(fā)器82C250的TXD和RXD分別接光耦6N137的輸出OUT和輸入IN端,,再通過具有差動(dòng)發(fā)送和接收功能的總線終端CAN_H和CAN_L連接入總線電纜中,,完成通信的傳輸。
3 溫度測量節(jié)點(diǎn)的軟件設(shè)計(jì)
溫度測量節(jié)點(diǎn)的軟件設(shè)計(jì)包括CAN總線初始化,、發(fā)送子程序及中斷接收程序軟件設(shè)計(jì)和溫度傳感器DS18B20的程序設(shè)計(jì),。其節(jié)點(diǎn)流程圖如圖4所示。
3.1 CAN初始化程序
CAN初始化即初始化CAN節(jié)點(diǎn),。要保證通信正確可靠則必須先對控制器SJA1000進(jìn)行初始化參數(shù)設(shè)置,。初始化設(shè)置是通過微處理器對SJA1 000的寄存器進(jìn)行初始化,這些初始化包括控制寄存器的配置,、命令寄存器的配置,、狀態(tài)寄存器的配置、中斷管理寄存器的設(shè)置,、總線定時(shí)寄存器的配置、輸出控制寄存器的設(shè)置以及時(shí)鐘分頻寄存器的設(shè)置等,。
系統(tǒng)上電后,,對CAN初始化只有在復(fù)位模式下才可以開始,初始化設(shè)置完成后,,CAN控制器就可以回到工作狀態(tài),,即進(jìn)入工作模式,執(zhí)行正常的通信任務(wù),。CAN控制器初始化流程圖如圖5所示,。
3.2 CAN通信電路程序
CAN總線節(jié)點(diǎn)要完成通信任務(wù)則還必須包括發(fā)送子程序及中斷接收程序。發(fā)送子程序負(fù)責(zé)各節(jié)點(diǎn)報(bào)文的發(fā)送任務(wù),。發(fā)送時(shí)只需將待發(fā)送的數(shù)據(jù)信息按特定的格式組合成一幀報(bào)文,,送入CAN控制器SJA1000的發(fā)送緩沖器中,啟動(dòng)SJA1000發(fā)送即可完成發(fā)送報(bào)文任務(wù),。在向SJA1000發(fā)送緩沖器發(fā)送報(bào)文之前,,可先做一些判斷,判斷其是否正在接收數(shù)據(jù),、先前發(fā)送是否成功以及發(fā)送緩沖器是否鎖定等等,,以確保數(shù)據(jù)發(fā)送的可靠性。
中斷接收程序主要是負(fù)責(zé)節(jié)點(diǎn)報(bào)文的接收以及其它中斷情況的處理,。當(dāng)進(jìn)入中斷后要進(jìn)行是否有數(shù)據(jù)的判斷,,以防干擾誤中斷。
3.3 溫度傳感器的程序設(shè)計(jì)
溫度測量節(jié)點(diǎn)電路上電后也要進(jìn)行初始化設(shè)置,,初始化完成后,,溫度測量節(jié)點(diǎn)中的溫度傳感器對采集到的數(shù)據(jù)信息實(shí)時(shí)處理、現(xiàn)場數(shù)據(jù)實(shí)時(shí)顯示,,并判斷采集的信息是否超過正常值,,如出現(xiàn)異常,,則報(bào)警提示并通過CAN通信電路進(jìn)行通信。
4 結(jié)束語
本設(shè)計(jì)應(yīng)用性很強(qiáng),,在實(shí)際應(yīng)用中表明,,其溫度測量的精度和穩(wěn)定性都得到很好的提高,準(zhǔn)確地反應(yīng)了工作狀況和實(shí)際狀況,,達(dá)到了預(yù)期目標(biāo),。