苗曙光,李崢,方振國,李淮江
淮北師范大學(xué)物理與電子信息學(xué)院,安徽淮北235000
由于汽車工業(yè)和智能制造業(yè)的飛速發(fā)展,導(dǎo)致大量企業(yè)對CAN 總線人才的需求旺盛.CAN 是控制器局域網(wǎng)(Controller Area Network,CAN)的簡稱,是由德國博世公司開發(fā)的,最初主要應(yīng)用在汽車上. 由于CAN 總線具有其他總線(如RS485、RS232)所無法比擬的優(yōu)點(diǎn),使得其應(yīng)用非常廣泛. 目前,CAN 總線的應(yīng)用已經(jīng)不僅僅局限于汽車行業(yè),而擴(kuò)展到機(jī)械工程、紡織機(jī)械、農(nóng)用機(jī)械、機(jī)器人、數(shù)控機(jī)床、醫(yī)療器械、家用家電以及智能傳感器等領(lǐng)域.CAN 總線已經(jīng)形成國際標(biāo)準(zhǔn),它具有較高的性價比,被公認(rèn)為最有前途的現(xiàn)場總線之一[1].作為培養(yǎng)應(yīng)用型人才為主的電子信息工程等專業(yè),單片機(jī)通信類實(shí)驗教學(xué)還主要停留在RS232 串口通信,但是RS232 存在傳輸距離短和抗干擾性差等缺點(diǎn),不適合工業(yè)現(xiàn)場通信,難以滿足企業(yè)用人的需求[2].另外很多高校缺少專門的CAN 總線實(shí)驗平臺,導(dǎo)致了CAN 總線實(shí)驗課程無法正常開設(shè),學(xué)生的動手能力不足.本文基于高校CAN 總線實(shí)驗課程現(xiàn)狀,以51 單片機(jī)為基礎(chǔ)設(shè)計開發(fā)了一款口袋式的智能CAN 總線實(shí)驗平臺,為高校CAN 總線實(shí)驗教學(xué)提供保障.
典型的CAN 總線系統(tǒng)實(shí)現(xiàn)方法,如圖1 所示.從圖中可以看出,CAN 總線節(jié)點(diǎn)主要由單片機(jī)控制器模塊、CAN 控制器模塊、CAN 收發(fā)器模塊和相關(guān)傳感器模塊組成,各個節(jié)點(diǎn)通過兩根CAN 信號線CANH 和CANL 并聯(lián)在一起,構(gòu)成一套完整的CAN 總線網(wǎng)絡(luò).
圖1 典型的CAN 總線系統(tǒng)框圖Fig.1 Diagram of typical CAN-bus system
常用的獨(dú)立CAN 控制器主要有SJA1000 和MCP2515,由于SJA1000 應(yīng)用較廣泛,內(nèi)部帶有FIFO 結(jié)構(gòu),采用并行總線接口,速度較快,性能優(yōu)于MCP2515. SJA1000 芯片是Philips 半導(dǎo)體公司PCA82C200 CAN 控制器(BasicCAN)的替代品,而且還擴(kuò)展了PeliCAN 模式,對CAN2.0B 協(xié)議也有很好的支持[3,4],因此本文CAN 控制器選型為SJA1000.
CAN 收發(fā)器提供了CAN 控制器與物理總線之間橋梁,是影響網(wǎng)絡(luò)系統(tǒng)的安全性、穩(wěn)定性、電磁兼容性和可靠性的主要因素,因此CAN 總線收發(fā)器在CAN 網(wǎng)絡(luò)中具有重要作用. 常用的CAN 收發(fā)器有PCA82C250 和TJA1050 等,它們都可以提供對總線的差動發(fā)送和接收功能,都遵從ISO11898 標(biāo)準(zhǔn)的高速CAN 總線驅(qū)動器,可以在汽車和工廠現(xiàn)場控制中使用.但是,TJA1050 除了具有PCA82C250 的主要特性以外,在很多方面還做了進(jìn)一步優(yōu)化. TJA1050 的設(shè)計采用了最新的EMC 技術(shù),它采用先進(jìn)的絕緣硅(Silicon-on-Insulator,SoI)技術(shù)進(jìn)行處理[5,6],因此TJA1050 比PCA82C250 的抗電磁干擾性能提高了20 dB,本文的CAN 收發(fā)器選型為TJA1050.
圖2 CAN 總線節(jié)點(diǎn)設(shè)計Fig.2 CAN-bus node designp
基于以上選型分析,本文以目前常用的STC89C52RC 型51 單片機(jī)為基礎(chǔ),設(shè)計CAN 總線節(jié)點(diǎn).節(jié)點(diǎn)原理框圖如圖2 所示,CAN 節(jié)點(diǎn)包括單片機(jī)控制模塊、SJA1000 總線控制器、TJA1050 總線收發(fā)器、供電模塊、顯示單元、外設(shè)接口模塊和CAN 信號線等.由于該節(jié)點(diǎn)是作為實(shí)驗室CAN 實(shí)驗平臺使用,所以沒有增加光耦隔離電路.
CAN 總線節(jié)點(diǎn)的軟件設(shè)計主要包括三大部分:CAN 初始化、CAN 數(shù)據(jù)發(fā)送和CAN 數(shù)據(jù)接收.
CAN 總線的初始化程序設(shè)計主要是通過對SJAl000 的寄存器寫入相應(yīng)的控制字,從而確定SJAl000的工作方式.在對SJAl000 的寄存器寫入控制字時,要在SJAl000 的復(fù)位模式下采用軟件復(fù)位模式[7]. 其初始化流程圖如圖3 所示.
報文的發(fā)送通常是由CAN 控制器根據(jù)CAN 協(xié)議規(guī)范自動完成的.首先由單片機(jī)將要發(fā)送的報文傳送到發(fā)送緩沖器中,并置位命令寄存器中的發(fā)送請求標(biāo)志[8].其發(fā)送流程圖如圖4 所示.
圖3 CAN 總線初始化Fig.3 CAN-bus initialization
當(dāng)接收緩沖區(qū)狀態(tài)標(biāo)志為滿的時候,即表明已接收一個或者多個報文.此時單片機(jī)將從CAN 控制器取出第一個報文,并置位命令寄存器中的釋放接收緩沖區(qū)標(biāo)志[9].其接收流程圖如圖5 所示.
點(diǎn)對點(diǎn)測試框圖如下圖6 所示,其中一塊板設(shè)定為A 板,另外一塊板設(shè)定為B 板,CAN 總線波特率為125 Kbps. A 板通過按鍵發(fā)送0x01-0x0f 數(shù)據(jù)給B板,B板接收后在本地顯示,通過USB-CAN總線分析儀到計算機(jī)調(diào)試軟件界面顯示,結(jié)果如圖7 所示.
圖4 CAN 數(shù)據(jù)發(fā)送流程圖Fig.4 Flowchartof CAN data transmission
圖5 CAN 數(shù)據(jù)接收流程圖Fig.5 Flowchart of CAN data receive
圖6 點(diǎn)對點(diǎn)測試框圖Fig.6 Diagram of point to point test
圖7 USB-CAN 分析儀接收到的CAN 報文Fig.7 CAN message received by USB-CAN analyzer
按照圖6 進(jìn)行CAN 設(shè)備連接測試,通過USB-CAN 分析儀能夠收到數(shù)據(jù)長度為1,數(shù)據(jù)內(nèi)容為0x01-0x0f 的CAN 報文,與發(fā)送端發(fā)送的報文信息一致,測試結(jié)果如圖7 所示,表明本文設(shè)計的CAN 總線實(shí)驗平臺的能夠應(yīng)用于點(diǎn)對點(diǎn)通信實(shí)驗教學(xué).
溫度采集網(wǎng)絡(luò)結(jié)構(gòu)如下圖8 所示,其中三塊CAN 實(shí)驗板負(fù)責(zé)溫濕度采集(溫濕度傳感器為DHT11),另外一塊板負(fù)責(zé)CAN232 協(xié)議轉(zhuǎn)換,所有節(jié)點(diǎn)并聯(lián)在一起,實(shí)現(xiàn)CAN 總線溫度采集到計算機(jī)端顯示的功能[10].
圖8 溫濕度采集實(shí)驗框圖Fig.8 Diagram of temperature and humidity acquisition experiment
上位機(jī)軟件采用VB6.0 開發(fā)了一個CAN 總線溫濕度采集界面,通過PC 端采集到溫濕度數(shù)據(jù)如下圖9 所示.串口號選擇的是COM4,串口波特率是9 600 bps,CAN 總線波特率為125 Kbps.1 號節(jié)點(diǎn)采集到的濕度是34 %,溫度是25 攝氏度;2 號節(jié)點(diǎn)采集到的濕度是33 %,溫度是24 攝氏度;3 號節(jié)點(diǎn)作為僅做本地采集顯示,數(shù)碼管顯示濕度為33%,溫度為24攝氏度,軟件還可以顯示CAN協(xié)議格式對應(yīng)的數(shù)值. 由于在實(shí)驗室環(huán)境測試,節(jié)點(diǎn)間距離比較近,兩個節(jié)點(diǎn)的溫濕度值比較接近,通過和標(biāo)準(zhǔn)溫濕度計比較,誤差在比較小,能夠滿足基本的應(yīng)用需求.
本文以單片機(jī)為基礎(chǔ),設(shè)計開發(fā)了一款適用于CAN 總線實(shí)驗教學(xué)的平臺,通過該平臺的實(shí)踐教學(xué)可知,相比較傳統(tǒng)的教學(xué)方法,具有以下優(yōu)點(diǎn):(1)該CAN 總線實(shí)驗教學(xué)平臺,不僅能夠滿足基本的CAN 總線通信功能的實(shí)驗需求,而且可以擴(kuò)展相關(guān)傳感器模塊,實(shí)現(xiàn)簡單的CAN 網(wǎng)絡(luò)項目實(shí)驗. 通過實(shí)驗,能夠提高學(xué)生對CAN 總線的基本原理和設(shè)計方法的掌握水平. (2)該平臺以51 單片機(jī)為基礎(chǔ),做到了實(shí)驗平臺的微型化“口袋式”,這樣學(xué)生的實(shí)驗不僅僅局限于實(shí)驗室,方便學(xué)生課下進(jìn)一步擴(kuò)展設(shè)計,進(jìn)而推動項目驅(qū)動型教學(xué)模式的開展.
圖9 溫濕度數(shù)據(jù)采集結(jié)果Fig.9 Results of temperature and humidity data collection
綜上所述,采用自制CAN 總線實(shí)驗教學(xué)平臺,有助于提高CAN 總線課程教學(xué)質(zhì)量,對于培養(yǎng)應(yīng)用型CAN 總線人才具有重要作用.