苗曙光,李崢,方振國,李淮江
淮北師范大學物理與電子信息學院,安徽淮北235000
由于汽車工業和智能制造業的飛速發展,導致大量企業對CAN 總線人才的需求旺盛.CAN 是控制器局域網(Controller Area Network,CAN)的簡稱,是由德國博世公司開發的,最初主要應用在汽車上. 由于CAN 總線具有其他總線(如RS485、RS232)所無法比擬的優點,使得其應用非常廣泛. 目前,CAN 總線的應用已經不僅僅局限于汽車行業,而擴展到機械工程、紡織機械、農用機械、機器人、數控機床、醫療器械、家用家電以及智能傳感器等領域.CAN 總線已經形成國際標準,它具有較高的性價比,被公認為最有前途的現場總線之一[1].作為培養應用型人才為主的電子信息工程等專業,單片機通信類實驗教學還主要停留在RS232 串口通信,但是RS232 存在傳輸距離短和抗干擾性差等缺點,不適合工業現場通信,難以滿足企業用人的需求[2].另外很多高校缺少專門的CAN 總線實驗平臺,導致了CAN 總線實驗課程無法正常開設,學生的動手能力不足.本文基于高校CAN 總線實驗課程現狀,以51 單片機為基礎設計開發了一款口袋式的智能CAN 總線實驗平臺,為高校CAN 總線實驗教學提供保障.
典型的CAN 總線系統實現方法,如圖1 所示.從圖中可以看出,CAN 總線節點主要由單片機控制器模塊、CAN 控制器模塊、CAN 收發器模塊和相關傳感器模塊組成,各個節點通過兩根CAN 信號線CANH 和CANL 并聯在一起,構成一套完整的CAN 總線網絡.

圖1 典型的CAN 總線系統框圖Fig.1 Diagram of typical CAN-bus system
常用的獨立CAN 控制器主要有SJA1000 和MCP2515,由于SJA1000 應用較廣泛,內部帶有FIFO 結構,采用并行總線接口,速度較快,性能優于MCP2515. SJA1000 芯片是Philips 半導體公司PCA82C200 CAN 控制器(BasicCAN)的替代品,而且還擴展了PeliCAN 模式,對CAN2.0B 協議也有很好的支持[3,4],因此本文CAN 控制器選型為SJA1000.
CAN 收發器提供了CAN 控制器與物理總線之間橋梁,是影響網絡系統的安全性、穩定性、電磁兼容性和可靠性的主要因素,因此CAN 總線收發器在CAN 網絡中具有重要作用. 常用的CAN 收發器有PCA82C250 和TJA1050 等,它們都可以提供對總線的差動發送和接收功能,都遵從ISO11898 標準的高速CAN 總線驅動器,可以在汽車和工廠現場控制中使用.但是,TJA1050 除了具有PCA82C250 的主要特性以外,在很多方面還做了進一步優化. TJA1050 的設計采用了最新的EMC 技術,它采用先進的絕緣硅(Silicon-on-Insulator,SoI)技術進行處理[5,6],因此TJA1050 比PCA82C250 的抗電磁干擾性能提高了20 dB,本文的CAN 收發器選型為TJA1050.

圖2 CAN 總線節點設計Fig.2 CAN-bus node designp
基于以上選型分析,本文以目前常用的STC89C52RC 型51 單片機為基礎,設計CAN 總線節點.節點原理框圖如圖2 所示,CAN 節點包括單片機控制模塊、SJA1000 總線控制器、TJA1050 總線收發器、供電模塊、顯示單元、外設接口模塊和CAN 信號線等.由于該節點是作為實驗室CAN 實驗平臺使用,所以沒有增加光耦隔離電路.
CAN 總線節點的軟件設計主要包括三大部分:CAN 初始化、CAN 數據發送和CAN 數據接收.
CAN 總線的初始化程序設計主要是通過對SJAl000 的寄存器寫入相應的控制字,從而確定SJAl000的工作方式.在對SJAl000 的寄存器寫入控制字時,要在SJAl000 的復位模式下采用軟件復位模式[7]. 其初始化流程圖如圖3 所示.
報文的發送通常是由CAN 控制器根據CAN 協議規范自動完成的.首先由單片機將要發送的報文傳送到發送緩沖器中,并置位命令寄存器中的發送請求標志[8].其發送流程圖如圖4 所示.

圖3 CAN 總線初始化Fig.3 CAN-bus initialization
當接收緩沖區狀態標志為滿的時候,即表明已接收一個或者多個報文.此時單片機將從CAN 控制器取出第一個報文,并置位命令寄存器中的釋放接收緩沖區標志[9].其接收流程圖如圖5 所示.
點對點測試框圖如下圖6 所示,其中一塊板設定為A 板,另外一塊板設定為B 板,CAN 總線波特率為125 Kbps. A 板通過按鍵發送0x01-0x0f 數據給B板,B板接收后在本地顯示,通過USB-CAN總線分析儀到計算機調試軟件界面顯示,結果如圖7 所示.

圖4 CAN 數據發送流程圖Fig.4 Flowchartof CAN data transmission

圖5 CAN 數據接收流程圖Fig.5 Flowchart of CAN data receive

圖6 點對點測試框圖Fig.6 Diagram of point to point test

圖7 USB-CAN 分析儀接收到的CAN 報文Fig.7 CAN message received by USB-CAN analyzer
按照圖6 進行CAN 設備連接測試,通過USB-CAN 分析儀能夠收到數據長度為1,數據內容為0x01-0x0f 的CAN 報文,與發送端發送的報文信息一致,測試結果如圖7 所示,表明本文設計的CAN 總線實驗平臺的能夠應用于點對點通信實驗教學.
溫度采集網絡結構如下圖8 所示,其中三塊CAN 實驗板負責溫濕度采集(溫濕度傳感器為DHT11),另外一塊板負責CAN232 協議轉換,所有節點并聯在一起,實現CAN 總線溫度采集到計算機端顯示的功能[10].

圖8 溫濕度采集實驗框圖Fig.8 Diagram of temperature and humidity acquisition experiment
上位機軟件采用VB6.0 開發了一個CAN 總線溫濕度采集界面,通過PC 端采集到溫濕度數據如下圖9 所示.串口號選擇的是COM4,串口波特率是9 600 bps,CAN 總線波特率為125 Kbps.1 號節點采集到的濕度是34 %,溫度是25 攝氏度;2 號節點采集到的濕度是33 %,溫度是24 攝氏度;3 號節點作為僅做本地采集顯示,數碼管顯示濕度為33%,溫度為24攝氏度,軟件還可以顯示CAN協議格式對應的數值. 由于在實驗室環境測試,節點間距離比較近,兩個節點的溫濕度值比較接近,通過和標準溫濕度計比較,誤差在比較小,能夠滿足基本的應用需求.
本文以單片機為基礎,設計開發了一款適用于CAN 總線實驗教學的平臺,通過該平臺的實踐教學可知,相比較傳統的教學方法,具有以下優點:(1)該CAN 總線實驗教學平臺,不僅能夠滿足基本的CAN 總線通信功能的實驗需求,而且可以擴展相關傳感器模塊,實現簡單的CAN 網絡項目實驗. 通過實驗,能夠提高學生對CAN 總線的基本原理和設計方法的掌握水平. (2)該平臺以51 單片機為基礎,做到了實驗平臺的微型化“口袋式”,這樣學生的實驗不僅僅局限于實驗室,方便學生課下進一步擴展設計,進而推動項目驅動型教學模式的開展.

圖9 溫濕度數據采集結果Fig.9 Results of temperature and humidity data collection
綜上所述,采用自制CAN 總線實驗教學平臺,有助于提高CAN 總線課程教學質量,對于培養應用型CAN 總線人才具有重要作用.