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