劉輝 譚延亮 焦鉻
摘 要: 首先對CAN總線通訊協(xié)議進行分析,然后對嵌入式硬件仿真環(huán)境SkyEye的結(jié)構(gòu)進行詳細的研究,利用SkyEye構(gòu)建了CAN總線通訊仿真環(huán)境。為了評估所設計的CAN仿真節(jié)點的性能,對CAN節(jié)點進行了仿真實驗。仿真實驗表明,我們所設計的CAN節(jié)點不僅能正確實現(xiàn)節(jié)點間的數(shù)據(jù)通信,還能達到較高的CAN網(wǎng)絡通信速率。最后闡述了在計算機實踐課教學中的應用。
關鍵詞: CAN總線; SkyEye; 仿真; 計算機實踐課教學
中圖分類號:TP311 文獻標志碼:A 文章編號:1006-8228(2014)06-44-03
0 引言
由于在汽車工業(yè)的快速發(fā)展過程中,需要安裝在汽車上的電子設備不繼增加,因此點對點連接這些汽車電子設備的專用電子線路迅速膨脹,連接起來更加復雜和繁瑣。為進一步提高系統(tǒng)的可靠性和故障診斷能力,將連接線路進行簡化,使數(shù)據(jù)資源在各電控單元之間進行共享更加方便,汽車網(wǎng)絡總線技術就是有效解決這個問題的方法[1-2]。
在車載網(wǎng)絡通信中,由于CAN總線具有布線簡單、典型的總線型結(jié)構(gòu)、能夠有效地節(jié)約布線和維護成本、性能穩(wěn)定可靠、實時性與抗干擾能力強、傳輸?shù)木嚯x遠等一系列優(yōu)點,因此在現(xiàn)代工業(yè)控制中應用廣泛。由于CAN總線通信網(wǎng)絡的設計有很多參數(shù)需要設置,而CAN總線工作性能直接受到這些參數(shù)設定的影響,但是在沒有輔助工具幫助的情況下,參數(shù)的有效設定只能憑汽車工程師的經(jīng)驗和不斷地嘗試摸索。因此,需要有合適的工具和可行的方法對CAN總線網(wǎng)絡進行有效的仿真和評估,從而提高汽車工程師設計CAN總線網(wǎng)絡以及在評估CAN總線網(wǎng)絡性能方面的效率[4]。
1 CAN總線協(xié)議分析
為了能實現(xiàn)對CAN總線網(wǎng)絡的仿真,非常有必要對CAN總線通訊協(xié)議進行深入研究。須建立起任意兩個或多個CAN設備之間的兼容性,這是CAN總線通訊協(xié)議定義的目的。
CAN總線具有以下特性[5]:①報文的優(yōu)先權(quán);②保證延遲時間;③設置靈活;④系統(tǒng)內(nèi)數(shù)據(jù)的一致性(System Wide Data Consistency);⑤多主機(對等);⑥錯誤檢測和錯誤標定;⑦當總線處于空閑時,能夠自動將破壞的報文重新傳輸;⑧能夠?qū)⒕W(wǎng)絡節(jié)點的永久性錯誤和暫時性錯誤區(qū)分開,并且可以將CAN的錯誤節(jié)點自動關閉。
CAN的ISO/OSI參考模型的分層結(jié)構(gòu)如圖1所示[6]。
從其參考模型的分層結(jié)構(gòu)可以看出,CAN通訊協(xié)議的結(jié)構(gòu)劃分為兩層:數(shù)據(jù)鏈路層(Data Link Layer)與物理層(Physical Layer)。在CAN中,為了解決不同通信節(jié)點之間進行消息傳輸時的電氣屬性,物理層為所有通信節(jié)點共享使用。
2 嵌入式硬件仿真環(huán)境SkyEye的結(jié)構(gòu)
利用仿真軟件來對嵌入式系統(tǒng)的各種硬件進行模擬,開發(fā)人員不需要利用開發(fā)板,直接在仿真環(huán)境中運行嵌入式系統(tǒng),實現(xiàn)嵌入式軟件的開發(fā)、調(diào)試、運行,能夠大大提高開發(fā)速度并降低開發(fā)成本。SkyEye是一個開源軟件項目,中文名字為“天目”[7],能夠在通用的Windows操作系統(tǒng)和Linux操作平臺上對目前主流的嵌入式開發(fā)板及外部設備進行軟件仿真,實現(xiàn)一個可擴展的硬件模擬框架,使系統(tǒng)軟件能夠在仿真平臺上運行。SkyEye軟件的核心在于目標模擬模塊,操作系統(tǒng)與系統(tǒng)軟件在SkyEye仿真環(huán)境中運行時可以使人根本意識不到是在一個計算機的虛擬系統(tǒng)上運行。SkyEye目前在教學、科研等眾多領域都得到了廣泛應用。
目前SkyEye的最新版本已經(jīng)完全和原先的GDB/ARMulator分離,并對原先的GDB/ARMulator進行了全面的擴充和改變[8]。總體上分為四個模塊倉庫:①體系結(jié)構(gòu)模塊倉庫(Architecture Module Repository);②外設模塊倉庫(Device Module Repository);③接口模塊倉庫(Interface Module Repository);④功能模塊倉庫(Function Module Repository)。
SkyEye仿真環(huán)境結(jié)構(gòu)如圖2所示[9]。
3 軟件仿真平臺的構(gòu)建和實現(xiàn)
為了實現(xiàn)對CAN總線通訊協(xié)議進行仿真,我們需要在不具備硬件環(huán)境的條件下來構(gòu)建軟件仿真平臺。通過這個軟件仿真平臺,能夠一目了然地觀察到CAN總線的數(shù)據(jù)正常發(fā)送、接收、處理和總線的仲裁,以及錯誤節(jié)點的故障界定等運行過程。SkyEye仿真平臺還可以運行自定義的CAN總線應用層協(xié)議[10]。
構(gòu)建軟件仿真實驗平臺的主要步驟為:第一步,在電腦的操作系統(tǒng)里安裝虛擬計算機軟件VMware Workstation;第二步,打開虛擬計算機軟件VMware Workstation,將紅帽子Ylmf Linux Y1.5系統(tǒng)直接安裝在虛擬環(huán)境中;第三步,打開Linux操作系統(tǒng),在Linux環(huán)境中將SkyEye仿真軟件進行安裝。程序采用Microsoft VC實現(xiàn),采用的實驗環(huán)境為Dell Inspiron 15R-5537筆記本,2.30GHz主頻,內(nèi)存4GB,100Mbps的網(wǎng)絡帶寬 [2]。
仿真CAN總線發(fā)送和接收數(shù)據(jù)的具體實驗步驟如下。
⑴ 用超級用戶登錄紅帽子Linux系統(tǒng)。
⑵ 打開一個終端。
⑶ 切換到/dev/shm/目錄:cd /dev/shm/。
⑷ 創(chuàng)建目錄can_vbus:mkdir can_vbus。
⑸ 更改目錄can_vbus的訪問權(quán)限為0666:chmod 0666 can_vbus。
⑹ 切換到用戶根目錄:cd /home/lh1111/。
⑺ 進入CAN 目錄:cd CAN/。
⑻ 進入Sja1000-vcan目錄:cd Sja1000-vcan。
⑼ 進入vcanbus目錄:cd vcanbus。
⑽ 運行vcanbus程序:./vcanbus。
⑾ 打開另外一個終端。
⑿ 切換到用戶根目錄:cd /home/lh1111/。
⒀ 進入asp目錄:cd asp。
⒁ 因為SkyEye已經(jīng)被安裝在/bin目錄下,所以運行SkyEye的命令為:skyeye -e asp -c skyeye.conf(-e選項表示要執(zhí)行的目標文件,-c選項表示配置文件),這時可以在終端上看到顯示信息(該窗口表示的是發(fā)送節(jié)點)如圖3所示。
按上述步驟所設計的仿真方案,我們可以利用SkyEye軟件仿真平臺較為真實地模擬出汽車類CAN網(wǎng)絡應用程序開發(fā)的環(huán)境和過程。
4 實驗結(jié)果分析
四種傳輸速率下的測試平均時間如圖5所示。從圖5可以直觀地看出:它是一個從高到低的平均傳輸時間,考慮系統(tǒng)負載方面,負載越大,則系統(tǒng)運行越慢。最左邊的矩形表示:在200ms的傳輸速度下,相比其他三種傳輸速度下的延遲時間要高得多,系統(tǒng)的負載是最高的,也就是說系統(tǒng)的反應時間就越長。當傳輸速率達到500ms以后,傳輸延遲時間開始趨于平均,這說明系統(tǒng)的負載(即運行負荷)沒有那么大了。從以上仿真實驗可以看出,通過SkyEye硬件模擬平臺對CAN通訊協(xié)議進行仿真,我們所設計的CAN節(jié)點不但在節(jié)點間的數(shù)據(jù)通信上是正確的,而且CAN通信網(wǎng)絡也能達到較高的傳輸速率。實驗結(jié)果表明,所設計的仿真方案是有效和可行的。
5 在計算機實踐課教學中的應用
目前各高校在計算機實踐課教學,特別是實驗室建設方面都有很大投入,但是由于各種原因,比如學生人數(shù)多、實驗室教學任務繁重,而有些實驗需要移除計算機還原卡等保護工具,從而導致實驗室維護起來困難。在實際的計算機實踐課教學過程中,造成了部分實驗由于缺少實驗環(huán)境而無法按要求實現(xiàn),這是影響教學質(zhì)量提高的一個瓶頸。因此創(chuàng)建可行的實驗環(huán)境就顯得尤其重要。仿真環(huán)境的構(gòu)建,即利用虛擬機技術就可以很好地解決這個問題。通過安裝虛擬機軟件,在原有的計算機硬件設備配置不變的前提下,構(gòu)建SkyEye軟件仿真平臺,虛擬計算機、網(wǎng)絡設備等,可以輕松地構(gòu)建虛擬的計算機網(wǎng)絡實驗環(huán)境。目前虛擬機技術在我校實驗室中得到了推廣應用,在“操作系統(tǒng)”和“計算機網(wǎng)絡”課程的教學過程中,使用虛擬機技術構(gòu)建仿真實驗環(huán)境進行實踐課的教學,取得了較好的教學效果,有助于教學質(zhì)量的提高。
6 結(jié)束語
為了方便CAN總線網(wǎng)絡應用的開發(fā),需要有可行的方法和合適工具對CAN總線網(wǎng)絡進行有效而快速的仿真和評估。本文研究的目的在于開發(fā)一套基于SkyEye的CAN總線通信協(xié)議仿真工具,借助于SkeEye虛擬機的功能,并加入CAN網(wǎng)絡協(xié)議的支持,用于CAN總線應用的分析和評估。仿真實驗表明,該方案是有效、可行的。在目前的計算機實踐課教學中,使用虛擬機技術構(gòu)建仿真實驗環(huán)境進行實踐課的教學,可以充分利用實驗室的資源,取得良好的教學效果,提高教學質(zhì)量。
參考文獻:
[1] 姚竹亭,吳立新,潘宏俠等.基于CAN總線的車輛控制系統(tǒng)設計與實現(xiàn)[J].火力與指揮控制,2009.34(6):138-140
[2] 劉輝.基于SkyEye的CAN網(wǎng)絡節(jié)點的仿真研究[D].湖南大學湖南大學碩士論文,2012:1-20
[3] 才紅玉.基于CAN總線的車載網(wǎng)絡通信軟件的研究與實現(xiàn)[D].西南交通大學西南交通大學碩士論文,2010:1-2
[4] Luis M P, Francisco V.Reliable Real-Time Communication inCAN Networks[J]. IEEE Trans.on Computers,2003.52(12):1594-1607
[5] Witkowski T, Blanc N, Kroening D, et al.Model CheckingConcurrent Linux Device Drivers[C]. In:Proc of the 22nd IEEE/ACM international conference on Automated software engineering.Atlanta,2007.501-504
[6] 汪瞳.CAN總線網(wǎng)絡仿真系統(tǒng)開發(fā)[D].哈爾濱工程大學哈爾濱工程大學碩士論文,2007:3-15
[7] 尹文超,陳渝,康爍等.SkyEye模擬器的LCD及TouchScreen模擬模塊的設計、實現(xiàn)與驗證[J].計算機科學,2005.32(6):189-192
[8] 鄧小武,李森林,胡萍.SkyEye開源軟件在嵌入式系統(tǒng)仿真中的應用研究[J].電腦與電信,2012.7:32-34
[9] Lee O, Jung S C, Ahn H C, et al. APROV: Another Program
Verifier for Embedded Linux Device Drivers[C]. In:Proc of 10th International Conference on Advanced Communication Technology.Korea,2008:105-109
[10] Wang A P, Hsu H H. Remote Monitoring and Control via the
Intelligem Database Gateway for the CAN-based Wheelchair[C].IEEE International Conference on Networking.Sensing and Control,2009.1:445-450
[11] 王邦繼,劉慶想,李相強等.CAN總線應用層協(xié)議的研究與實現(xiàn)[J].計算機工程與應用,2011.47(20):14-16
[12] 夏繼強,薛利強,滿慶豐等.時間觸發(fā)CAN總線實時性分析及評估方法[J].北京航空航天大學學報,2012.38(2):1-6