《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于CAN總線的重型卡車嵌入式車載儀表系統(tǒng)設(shè)計
基于CAN總線的重型卡車嵌入式車載儀表系統(tǒng)設(shè)計
來源:電子技術(shù)應(yīng)用2010年第12期
王雪梅, 吳曉娜, 倪文波
西南交通大學(xué) 機械工程學(xué)院, 四川 成都610031
摘要: 設(shè)計了基于CAN總線的重型卡車車載網(wǎng)絡(luò)系統(tǒng)。該網(wǎng)絡(luò)系統(tǒng)由牽引車網(wǎng)段和拖車網(wǎng)段組成,中間通過橋接設(shè)備相互連接。主橋接設(shè)備是整個網(wǎng)絡(luò)系統(tǒng)的核心,以嵌入式微處理器S3C2410A為核心,完成了該主橋接設(shè)備的硬件結(jié)構(gòu)設(shè)計和基于Linux的監(jiān)測、顯示軟件設(shè)計。
中圖分類號:TP216
文獻標(biāo)識碼:B
文章編號: 0258-7998(2010)12-0082-04
Design of heavy-duty truck embedded instrument system based on CAN bus
WANG Xue Mei, WU Xiao Na, NI Wen Bo
School of Mechanical Engineering, Southwest Jiaotong University, Chengdu 610031,China
Abstract: Vehicle network system based on CAN bus was designed. The system consists of tractor segment and trailer segment, between which is bridge devices. Bridge master not only is main control device of tractor, but also is key of connection with trailer. Bridge master adopted S3C2410A embedded microprocessor. On the basis of the design of hardware, measurement software based on Linux embedded operation system is also programmed.
Key words : CAN bus; embedded technique; heavy-duty truck

    重型卡車因其具有運輸量大、運輸成本低等特點,在工程建設(shè)、貨物運輸、城市垃圾清運等方面得到了越來越多的應(yīng)用。但近年來重型卡車行車時引起的交通事故頻繁發(fā)生,給人民生命財產(chǎn)安全造成了巨大損失。隨著汽車電子技術(shù)的快速發(fā)展,基于CAN總線的重型卡車車載網(wǎng)絡(luò)技術(shù)已成為保證重型卡車可靠、安全運行的一種有效技術(shù)措施[1]。采用分布式網(wǎng)絡(luò)控制,不僅可以減少線束,而且能夠提高各電子控制系統(tǒng)的運行可靠性,實現(xiàn)各子系統(tǒng)之間的資源共享和在線故障診斷。
    目前,國外基于CAN總線技術(shù)和J1939協(xié)議標(biāo)準(zhǔn)的重型卡車網(wǎng)絡(luò)系統(tǒng)的研究己經(jīng)進入商用化階段,取得了顯著的社會經(jīng)濟效益[2]。在國內(nèi),一汽、上汽和中國重汽等集團公司相繼都在其不同型號的重卡上采用CAN總線技術(shù)。但目前國內(nèi)還沒有自主知識產(chǎn)權(quán)的成熟產(chǎn)品,基本上還是采用直接引進國外著名汽車電子供應(yīng)商的產(chǎn)品的方式,很難掌握其關(guān)鍵技術(shù),嚴(yán)重阻礙了我國重型卡車車載網(wǎng)絡(luò)技術(shù)的發(fā)展[1]。
    本文設(shè)計了一個基于CAN總線的重型卡車車載儀表系統(tǒng)。該車載儀表系統(tǒng)是整個車載網(wǎng)絡(luò)系統(tǒng)的核心模塊,綜合應(yīng)用了CAN總線技術(shù)、嵌入式技術(shù)和智能儀器等技術(shù),主要實現(xiàn)車況信息的收集與處理、行駛數(shù)據(jù)記錄、通信和顯示等功能,不僅為駕駛員判斷是否發(fā)生故障以及發(fā)生故障的狀況提供了依據(jù),而且為運輸公司的經(jīng)營和事故處理提供依據(jù)。該研究工作對于我國汽車電子技術(shù),特別是重型卡車設(shè)備的電子化、網(wǎng)絡(luò)化發(fā)展,參與國際競爭具有積極的促進作用。
1 重型卡車車載網(wǎng)絡(luò)系統(tǒng)總體設(shè)計
    重型卡車通常由牽引車和拖車組成。由于牽引車要掛接一個或多個拖車,并可能需要頻繁地卸載和加掛拖車,因而應(yīng)在牽引車、拖車內(nèi)各自采用單獨的網(wǎng)段,由多網(wǎng)段組成的網(wǎng)絡(luò)來支持系統(tǒng)工作。如圖1所示是本文設(shè)計的基于CAN總線的重型卡車車載網(wǎng)絡(luò)系統(tǒng)的拓?fù)浣Y(jié)構(gòu),它由牽引車網(wǎng)段和拖車網(wǎng)段組成。當(dāng)存在多個網(wǎng)段時,必須有相應(yīng)的橋接設(shè)備提供從一個網(wǎng)段到另一個網(wǎng)段的消息傳遞功能。各網(wǎng)段的信息通過橋接設(shè)備進行報文的轉(zhuǎn)發(fā)、過濾、地址轉(zhuǎn)換和重新打包等,從而減少每個子網(wǎng)的數(shù)據(jù)信息流量,使每個子網(wǎng)工作更有效,也提高了整個網(wǎng)絡(luò)的效率。
    圖1中的網(wǎng)絡(luò)互連ECU即為實現(xiàn)牽引車網(wǎng)段和拖車網(wǎng)段互聯(lián)的橋接設(shè)備,牽引車端的是主橋接設(shè)備(Bridge Master),拖車端的是從橋接設(shè)備(Bridge Slave)。在牽引車網(wǎng)段和拖車網(wǎng)段內(nèi),各個電子控制單元ECU通過CAN總線與網(wǎng)絡(luò)互連ECU連接,構(gòu)成主從式分布式系統(tǒng),網(wǎng)橋設(shè)備作為主節(jié)點,各個電子控制單元ECU作為從節(jié)點。主節(jié)點向從節(jié)點發(fā)出命令幀,從節(jié)點接收到命令幀后向主節(jié)點發(fā)送響應(yīng)幀,從而實現(xiàn)數(shù)據(jù)交換。網(wǎng)橋具有兩個CAN通信端口,一方面可以連接同一網(wǎng)段中各個電子控制單元ECU,另一方面可以實現(xiàn)牽引車和拖車之間的報文轉(zhuǎn)發(fā)。牽引車的網(wǎng)橋周期地輪詢拖車系統(tǒng)中的網(wǎng)橋,當(dāng)拖車網(wǎng)橋接收到輪詢消息時,開始對其網(wǎng)段中的各個電子控制單元ECU進行監(jiān)測,接收電子控制單元ECU發(fā)送的報文信息,并將拖車網(wǎng)段中生成的報文傳到牽引車網(wǎng)橋。如果拖車系統(tǒng)已經(jīng)卸載,牽引車的網(wǎng)段仍然能正常工作,連接拖車網(wǎng)橋的CAN網(wǎng)絡(luò)處于等待狀態(tài),一旦拖車系統(tǒng)被掛接上,便開始對其進行輪詢檢測。


2 嵌入式車載儀表硬件結(jié)構(gòu)設(shè)計
     位于牽引車端的網(wǎng)絡(luò)互聯(lián)ECU,即主橋接設(shè)備是整個網(wǎng)絡(luò)系統(tǒng)的核心。它不僅是牽引車的主控設(shè)備,也是連接后面的拖車系統(tǒng)的關(guān)鍵設(shè)備,整個網(wǎng)絡(luò)系統(tǒng)的信息在此匯集、處理、存儲和顯示,據(jù)此可以判斷發(fā)動機的燃油液位是否過低、發(fā)動機冷卻液溫度是否過高、發(fā)動機機油壓力是否過低以及車燈是否發(fā)生故障,將這些故障信息以圖形的方式顯示出來,使駕駛員能夠隨時全面地監(jiān)測卡車運行狀態(tài)。
    網(wǎng)絡(luò)互連ECU采用Samsung公司的S3C2410作為微處理器。S3C2410是一款低價格、低功耗、高性能的16/32 bit且具有ARM920T內(nèi)核的微處理器。主頻203 MHz,處理能力完全滿足該系統(tǒng)的需要,并且能夠方便地移植Linux操作系統(tǒng),為設(shè)計具有良好人機交互界面的車載儀表系統(tǒng)創(chuàng)造了條件。
    整個硬件電路主要包括電源電路、復(fù)位電路、時鐘電路、存儲器擴展電路、液晶顯示電路和兩路CAN通信接口電路,其基本結(jié)構(gòu)如圖2所示。

    系統(tǒng)采用SJA1000 CAN控制器和PCA82C250總線收發(fā)器設(shè)計CAN通信接口。SJA1000是PHILIPS公司推出的一款CAN通信控制器,支持CAN2.0A、2.0B協(xié)議。由于其設(shè)計是基于早期的80C51單片機應(yīng)用,內(nèi)嵌鎖存器可以使80C51單片機無需任何外接器件就可以直接連接。但是,S3C2410A的地址總線和數(shù)據(jù)總線是分開的,不能直接連接SJA1000,所以需要模擬出類似80C51單片機的外部存儲器時序才能使用。圖3電路中,使用了一個“或”門74LS32和一個“或非”門74LS02的組合,配合地址總線,首先模擬出一個ALE(地址鎖存信號),把SJA1000的內(nèi)部寄存器地址寫入鎖存器,然后再向SJA1000內(nèi)部寄存器寫入數(shù)據(jù)。這樣,使用ARM的兩條外部存儲器訪問指令,就可以模擬出SJA1000所需要的時序了。利用S3C2410A的片選信號nGCS4和地址總線LADDR2,經(jīng)過“或非”門模擬出的SJA1000的物理端口地址為0x20000008,片選信號nGCS4和地址總線LADDR3,經(jīng)過 “或”門,模擬出的SJA1000的數(shù)據(jù)端口地址為0x20000004。

3 嵌入式車載儀表軟件設(shè)計
3.1 嵌入式Linux下CAN設(shè)備驅(qū)動程序開發(fā)

    網(wǎng)絡(luò)互連ECU在Linux系統(tǒng)下使用CAN通信技術(shù),因此需設(shè)計基于Linux的CAN設(shè)備驅(qū)動程序。
  設(shè)備驅(qū)動程序是操作系統(tǒng)內(nèi)核和機器硬件之間的接口。Linux內(nèi)核有三種類型的設(shè)備驅(qū)動程序:字符設(shè)備驅(qū)動程序、塊設(shè)備驅(qū)動程序和網(wǎng)絡(luò)設(shè)備驅(qū)動程序[4]。SJA1000控制器屬于字符型設(shè)備,CAN設(shè)備驅(qū)動程序?qū)嶋H上是Linux內(nèi)核直接對SJA1000器件的初始化與讀寫操作。而這些操作方式其實就是一些標(biāo)準(zhǔn)的系統(tǒng)調(diào)用,如open()、read()、write()、close()等。定義把系統(tǒng)調(diào)用和驅(qū)動程序關(guān)聯(lián)起來的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)file_operations,結(jié)構(gòu)體中的每一個成員都是一個函數(shù)指針,實現(xiàn)了對于不同操作的函數(shù)跳轉(zhuǎn)功能。具體的聲明如下:
    struct file_operations sja1000_can_fops =
    {
        owner: THIS_MODULE,
         ioctl: can_ioctl,                  //設(shè)置通信參數(shù)
         open: can_open, //完成SJA1000初始化,中斷申請,
                                      增加次數(shù)計數(shù)器的使用次數(shù)
         write: can_write,                       //發(fā)送數(shù)據(jù)
        read:  can_read,                       //接收數(shù)據(jù)
         release : can_release,   //關(guān)閉CAN設(shè)備,關(guān)閉中斷,
                                            減少次數(shù)計數(shù)器的使用次數(shù)
    };
    驅(qū)動程序加載到內(nèi)核中時,首先運行驅(qū)動程序的初始化函數(shù),然后等待系統(tǒng)調(diào)用在file_operations結(jié)構(gòu)中定義的相關(guān)函數(shù),實現(xiàn)對設(shè)備的操作。CAN設(shè)備的初始化函數(shù)負(fù)責(zé)創(chuàng)建CAN設(shè)備文件,注冊CAN設(shè)備驅(qū)動程序。
    對于字符設(shè)備,Linux通過調(diào)用register_chrdev()向系統(tǒng)注冊;卸載驅(qū)動時,注銷設(shè)備函數(shù)為unregister_chrdev()。設(shè)備驅(qū)動程序一般以模塊形式加入內(nèi)核,使用module_init和module_exit宏對模塊初始化函數(shù)can_init()和模塊清除函數(shù)can_cleanup()進行標(biāo)記(通常在文件末尾)。程序如下:
  module_init(can_init);
  module_exit(can_cleanup);
    驅(qū)動程序編寫完成并編譯通過后,可使用命令:#insmod can_sja1000_dev.ko進行動態(tài)加載。加載后,用戶程序就可以通過文件直接操作CAN控制器,實現(xiàn)CAN總線通信。使用驅(qū)動程序完成CAN總線數(shù)據(jù)收發(fā)的原理如圖4所示。在系統(tǒng)初始化完畢后,發(fā)送命令幀給監(jiān)測系統(tǒng)的電子控制單元ECU,通過系統(tǒng)調(diào)用將命令幀從用戶空間拷貝到內(nèi)核空間,發(fā)送數(shù)據(jù)處理函數(shù)將內(nèi)核層的命令幀寫入SJA1000控制器;當(dāng)電子控制單元ECU采集的卡車運行狀態(tài)數(shù)據(jù)到來時,中斷被觸發(fā),喚醒處于睡眠狀態(tài)的進程,接收數(shù)據(jù)處理函數(shù)將從SJA1000控制器讀取數(shù)據(jù)到接收緩沖區(qū),用戶通過系統(tǒng)調(diào)用讀取到完整的數(shù)據(jù)。

3.2 基于MiniGUI的車載儀表顯示程序設(shè)計
    MiniGUI是嵌入式圖形用戶界面系統(tǒng),它通過窗口系統(tǒng)來管理應(yīng)用程序在屏幕上的顯示[5]。本系統(tǒng)的人機界面包含的窗口類型有:對話框、按鈕、靜態(tài)框、位圖和填充條,使用對話框作為主窗口,基于MiniGUI人機界面的程序流程圖如圖5所示。

    本系統(tǒng)的圖形用戶界面主要顯示車速、轉(zhuǎn)速、水溫、油壓、燃油量、車內(nèi)溫度,冷卻水溫度過低、油壓過低、燃油過低報警信號和大燈、尾燈、左右轉(zhuǎn)向燈、制動燈等燈光信號。使用MiniGUI的按鈕通知消息MSG_COMMOND,該消息是在狀態(tài)監(jiān)測按鈕按下后發(fā)送到窗口過程函數(shù),執(zhí)行CAN通信子程序,接收各電子控制單元ECU上傳的卡車運行狀態(tài)信息,實時地顯示在液晶屏上,并以不同的顏色表示報警信號和車燈信號,使駕駛員能夠隨時全面地監(jiān)測卡車的運行狀態(tài),提高卡車運行的安全性。
    本文針對我國重型卡車的發(fā)展現(xiàn)狀,在完成重型卡車車載網(wǎng)絡(luò)系統(tǒng)總體結(jié)構(gòu)設(shè)計的基礎(chǔ)上,對基于CAN總線的嵌入式車載儀表系統(tǒng)的軟硬件設(shè)計方法進行了詳細(xì)闡述。該系統(tǒng)能對重型卡車的車速、發(fā)動機轉(zhuǎn)速、水溫、油溫、油壓、燃油量以及車燈開關(guān)量等狀態(tài)信息進行實時監(jiān)測,及時有效地發(fā)現(xiàn)和識別卡車運行過程中發(fā)生的各種故障,對于保證卡車安全運行起到了重要作用。測試表明,本文所設(shè)計的重型卡車車載儀表系統(tǒng)工作性能穩(wěn)定、可靠,具有較好的人機界面。
參考文獻
[1] 位堂杰,劉金朝.HOWO重型載貨汽車的車載網(wǎng)絡(luò)系統(tǒng)[J]. 汽車電器,2009(1):1-3.
[2] FELLMETH P, L?魻FFLER T.Networking heavy-duty vehicles based on SAE J1939[J]. Vector Corporation,2008.
[3] 陽憲惠. 現(xiàn)場總線技術(shù)及其應(yīng)用(第2版)[M].北京:清華大學(xué)出版社,2008.
[4] 李俊.嵌入式Linux設(shè)備驅(qū)動開發(fā)詳解[M].北京:人民郵電出版社,2008.
[5] 周立功.ARM嵌入式MiniGUI初步與應(yīng)用開發(fā)范例[M]. 北京:北京航空航天大學(xué)出版社,2005.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产欧美精品久久| 亚洲精品视频免费观看| 欧美多人爱爱视频网站| 久久久久久久一区二区| 欧美一区二区三区在线| 亚洲欧美激情诱惑| 亚洲在线观看免费| 亚洲主播在线| 午夜精品久久久久久久男人的天堂| 在线亚洲激情| 亚洲天堂男人| 亚洲电影免费观看高清完整版| 欧美伦理a级免费电影| 欧美女主播在线| 欧美精品日韩一本| 欧美人与禽猛交乱配视频| 欧美精品播放| 欧美久久综合| 欧美三级电影大全| 国产精品久久久久秋霞鲁丝| 国产精品久久久久秋霞鲁丝 | 国产精品中文字幕欧美| 国产九九精品| 国内精品久久久久伊人av| 狠狠色综合色综合网络| 永久免费精品影视网站| 在线播放豆国产99亚洲| 韩曰欧美视频免费观看| 一色屋精品亚洲香蕉网站| 尤物网精品视频| 最新国产精品拍自在线播放| 日韩午夜在线视频| 亚洲尤物在线视频观看| 欧美一级在线亚洲天堂| 亚洲黄色免费| 在线一区二区视频| 午夜久久黄色| 国产欧美日韩视频一区二区| 亚洲福利视频免费观看| 国产人成一区二区三区影院| 国产日韩欧美视频在线| 在线观看一区| 99视频热这里只有精品免费| 午夜精品美女久久久久av福利| 久久成人免费视频| 亚洲精品日韩一| 亚洲欧美国产77777| 久久青草福利网站| 欧美日韩国产经典色站一区二区三区 | 久久精品亚洲一区| 欧美成人免费在线| 欧美三区在线| 国产在线观看精品一区二区三区| 亚洲精美视频| 亚洲一区精品电影| 久久精品日韩| 亚洲影音一区| 欧美91大片| 国产精品素人视频| 在线不卡视频| 亚洲天堂黄色| 亚洲日韩欧美视频| 性欧美videos另类喷潮| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美日韩免费一区| 激情亚洲网站| 亚洲一区制服诱惑| 亚洲精品久久久久久久久久久| 亚洲欧美国产高清| 欧美激情在线免费观看| 国产日韩精品一区二区| 99国产精品久久久久久久久久| 欧美一区二区三区精品 | 久久久久久穴| 欧美日韩在线精品一区二区三区| 国产一区二区中文字幕免费看| 亚洲美女电影在线| 久久国产精品久久久久久电车| 国产精品99久久久久久久女警| 久久婷婷影院| 国产精品视频一区二区三区| 亚洲第一中文字幕| 欧美在线免费一级片| 亚洲欧美国产日韩天堂区| 欧美电影在线播放| 国产一区二区三区无遮挡| 一区二区三区精品| 亚洲精美视频| 久久国产精彩视频| 国产精品a级| 亚洲精品国精品久久99热| 亚洲经典在线看| 久久婷婷久久| 国产一区二区三区自拍| 亚洲欧美日韩另类精品一区二区三区| 9色国产精品| 欧美韩日一区二区| 在线成人免费观看| 亚洲大胆人体在线| 久久国产主播| 国产欧美一区二区精品秋霞影院| 日韩一级成人av| 99精品热视频只有精品10| 牛牛国产精品| 激情五月***国产精品| 久久大逼视频| 久久综合图片| 在线电影一区| 亚洲国产小视频在线观看| 久久一区二区三区av| 国语自产在线不卡| 久久精品国产第一区二区三区最新章节 | 亚洲五月六月| 亚洲一区二区三区高清不卡| 欧美经典一区二区| 亚洲精品久久嫩草网站秘色| 亚洲精品自在在线观看| 欧美国产精品专区| 亚洲国产婷婷香蕉久久久久久| 亚洲国产片色| 欧美激情一区二区在线| 日韩视频免费在线| 亚洲一级在线观看| 国产精品成人播放| 亚洲一区二区3| 午夜免费电影一区在线观看| 国产精品视频久久久| 亚洲欧美亚洲| 久久久亚洲欧洲日产国码αv| 国产亚洲欧洲一区高清在线观看| 欧美一级专区| 蜜臀久久久99精品久久久久久 | 亚洲国产高清在线观看视频| 亚洲伦理在线| 欧美日韩一区国产| 亚洲一区二区欧美| 欧美中文字幕在线| 韩国在线视频一区| 亚洲精品你懂的| 欧美三区视频| 性欧美xxxx大乳国产app| 久久久国产精品一区二区中文| 黄色日韩精品| 日韩亚洲欧美中文三级| 欧美视频成人| 午夜视频久久久久久| 久久久久久伊人| 亚洲国产成人porn| 亚洲午夜一级| 国产欧美日韩在线| 亚洲高清资源综合久久精品| 欧美久久久久久久| 亚洲影视在线| 久久伊人免费视频| 亚洲精选中文字幕| 性做久久久久久| 一区二区三区在线观看视频| 一区二区成人精品| 国产精品亚洲综合| 亚洲国产电影| 欧美日韩亚洲一区二区三区在线| 亚洲欧美在线播放| 欧美国产综合| 亚洲免费在线精品一区| 另类av导航| 亚洲小说区图片区| 免费视频久久| 亚洲综合大片69999| 蜜臀久久99精品久久久画质超高清| 亚洲精品社区| 久久久久久久一区二区三区| 亚洲免费久久| 久久综合久久88| 在线亚洲免费| 免费成人黄色av| 亚洲欧美激情诱惑| 欧美激情精品久久久久久变态| 亚洲视屏在线播放| 男男成人高潮片免费网站| 亚洲影音一区| 欧美精品色网| 亚洲成色999久久网站| 国产精品国产a级| 91久久精品国产| 国产日韩欧美不卡在线| 一区二区三区日韩精品视频| 国内揄拍国内精品少妇国语| 亚洲在线日韩| 亚洲精品一区二区三区不| 久久久不卡网国产精品一区| 99国产一区| 男人的天堂成人在线| 午夜精品视频在线观看| 欧美日韩国产在线播放网站| 久久精品99| 国产精品永久免费在线| 亚洲午夜精品一区二区| 亚洲二区精品| 久久精品亚洲国产奇米99| 亚洲综合色激情五月|