張一嬌
【摘 要】作為現場總線一員的CAN總線的架構使用了OSI七層參考模型,其主要使用了七層參考模型中的物理層、數據鏈路層和應用層,本文對這三層進行了介紹。本文使用TC1728芯片的CAN模塊來實現一個傳送J1939協議報文的CAN節點。該ECU的CAN節點與CANoe仿真工具模擬的一個CAN節點之間使用J1939協議相互通信。用戶即可在CAN卡的圖形化界面中觀察ECU的CAN節點的報文幀是否正確。
【關鍵詞】CAN總線;OSI七層參考模型;CANoe
J1939 Protocol in ECU communication based on CANoe
ZHANG Yi-jiao
(Chengdu College of University of Electronic Science & Technology, Chengdu Sichuan 611731, China)
【Abstract】CAN bus architecture as a field bus uses the OSI reference model, which is mainly used seven layer reference model physical layer, data link layer and application layer, these three are described herein. As used herein, TC1728 chip CAN module to implement a packet transmission protocol J1939 CAN node. The communication between the CAN node of the ECU and CANoe simulation tool simulation is using J1939 protocol. The user can observe the ECU CAN node in the graphical interface of CAN card and they can judge whether the message frame is correct.
【Key words】CAN bus; OSI seven layer reference model; CANoe
0 引言
在當今社會,汽車技術快速發展,汽車性能不斷提高,各類電子設備在汽車上應用得越來越廣泛。傳統的布線技術難以滿足現代汽車技術的需求,因此汽車總線技術得到越來越多汽車廠商的青睞。在汽車總線發展歷程中,K線等總線正在被淘汰,CAN線等總線已經發展成熟,MOST等總線則正處于研究階段。
1 CAN總線通信原理
CAN總線是現場總線家族中極其重要的一員,而現場總線的定義為:應用于工業現場,采用總線方式連接多個設備,用于傳輸工業現場各種數據的一類通信系統[1]。
在國際標準化組織(ISO)提出的“開放系統互聯(OSI)”的參考模式中,網絡系統結構劃分為7層。從上到下依次是應用層,表示層,會話層,傳輸層,網絡層,數據鏈路層,物理層。
下表為各層的定義。
CAN協議也是建立在國際標準化組織的開放系統互聯模型基礎上的。不過,其模型結構只有3層,即只取OSI底層的物理層,數據鏈路層和上層的應用層。由于CAN的數據結構簡單,又是范圍較小的局域網,因此不需要其他中間層,應用層數據直接取自數據鏈路層或直接向鏈路層寫數據,而物理層主要完成設備間的信號傳送,把各種信息轉換為可以傳輸的物理信號(通常為電信號或光信號),并將這些信號傳輸到其他目標設備。結構層次少,有利于系統中實時控制信號的傳送。
2 CAN總線與J1939協議
CAN總線其本質是一種串行數據通信協議,其通信接口中集成了CAN協議的物理層和數據鏈路層功能,可完成對通信數據的成幀處理,包括位填充、數據塊編碼、循環冗余檢驗、優先級判別等工作[2]。CAN總線通信是通過5種類型的幀進行的,它們分別是數據幀、遠程幀、錯誤幀、過載幀和幀間隔。為了使數據能夠在總線上可靠傳輸,CAN總線對各類幀的格式、用途及發送時機都進行了詳細的規定。數據幀用于發送節點向接收節點傳送數據,是使用最多的幀類型,遠程幀用于接收節點向某個發送節點請求數據,錯誤幀用于在檢測出通信錯誤(如校驗錯誤)時向其他節點發出通知,過載幀用于接收節點通知,用于將數據幀和遠程幀與前面的幀分離開來。
根據應用場合的不同,國際上出現了多種CAN應用層協議,如CANopen、DeviceNet、J1939等。J1939協議基于CAN2.0B協議,即數據幀為擴展數據幀,數據標識符(ID)由29位構成,包括優先級P、保留位R、數據頁DP、PDU格式PF、特定PDU(目標地址PS)、源地址(SA)。J1939報文標識符的具體結構如圖1所示。
3 總線測試系統的實現
CANoe是德國VECTOR公司開發的功能強大的仿真及測試軟件,使用時需要借助其他硬件測試工具配合使用,常使用的硬件包括CANcaseXL,CANScope,CANStress等[3]。本系統使用的硬件是CANcaseXL。
3.1 需要用到的硬件
在本文所搭建的測試系統中,我們選擇了以英飛凌Tricore架構的32位微控制器TC1728為核心芯片的ECU作為一個節點。TC1728芯片實現的CAN模塊屬于全CAN設備,即,用硬件實現全部的總線協議,包括接收濾波和報文管理。CAN模塊的報文對象被組織為雙鏈列表,在該列表結構中,每個報文對象都有兩個指針,一個指向列表中的前一個報文對象,另一個指向列表中的后一個報文對象。CAN模塊提供8個列表,每個報文對象分配給其中之一。
圖2是TC1728芯片與PC機的一個通信示例。PC機通過CAN卡發送報文,然后TC1728芯片中的CAN節點0的報文對象10接收到報文后,在中斷函數中處理報文,最后使用報文對象12,通過CAN卡發送報文到PC機上。我們根據下圖編寫代碼,實現TC1728芯片發送CAN報文,然后根據CAN總線應用層的J1939協議,可以發送滿足J1939協議的報文。
3.2 具體測試方法
運行在CAN總線應用層上的是SAEJ1939協議,在CAN網絡中有2個節點,一個是真實節點ECU,另一個節點是CANoe仿真工具。該CAN網絡是用來測試ECU的CAN模塊實現的SAEJ1939協議功能是否正確。
在本測試系統中,我們用到了CANoe在ECU開發過程中的半物理仿真。即將CANcaseXL硬件工具當作一個節點,與ECU共同處于一個CAN網絡中。CANoe軟件工具運行在CANcaseXL硬件工具之上,使用了CANoe仿真功能中的總線數據庫以及建模(包含CAPL編程以及面板)兩項功能。
CANoe仿真功能中的總線數據庫工具是CANdb++,它包含整個系統的各個節點、環境變量、消息的設定以及信號在消息中的相對位置,即數據幀中數據場的位置關系[4]。本測試系統使用CANdb++工具定義了報文DM4、DM5等的ID類型及ID號等信息。
CAPL是CAN總線訪問編程語言,是一種類C語言。CAPL程序能夠檢測事件,并執行和事件相關的程序。檢測的事件類型包括:程序開始執行事件、程序停止執行事件、鍵盤輸入事件、CAN消息的接收事件、定時器超時事件、圖形面板輸入事件。CAPL程序是基于事件程序的組合。
面板是CAN網絡節點的外部設備,用戶可以通過面板上面的信號觀察節點當前狀態,也可以通過點擊按鈕發送CAN報文。
根據圖3所示,用戶可以通過點擊面板上面的按鈕輸出報文給ECU節點。CANoe軟件可發送的報文有DM4、DM5、DM6、DM12、DM21、DM23、DM26、DM28、DM29.
在實現了ECU的CAN模塊編程以及CANoe仿真工具的報文輸出功能后,就可以通過PC機上的CAN卡來觀察CAN網絡中的報文傳輸情況。
在CAN網絡中,ECU節點的地址是0x00,CANcaseXL節點的地址是0x2B,CANcaseXL節點利用面板點擊按鈕發送報文,ECU接收報文。發送和接收的報文格式符合SAEJ1939協議的應用層規范,如圖4所示。
在圖4中,我們還可以看到,ECU節點的CAN模塊會發送DM1報文,DM1報文是不需要接收請求報文的,它會按照1s的周期定時發送。
4 結束語
本文使用CANoe仿真工具配合ECU進行CAN通信,來測試ECU中CAN通信模塊功能是否正常。CANoe仿真工具使用面板實現了人機交互功能,使界面更加友好。在未來的研究中,可以嘗試加入更多的報文,并更精確報文發送的間隔時間。
【參考文獻】
[1]周立功.項目驅動-CAN-bus現場總線基礎教程[M].北京:航空航天大學出版社,2012.
[2]胡艷峰.基于CANoe的汽車CAN總線通信及診斷設計[J].汽車電器,2015(6):10-13,20.
[3]張軍.基于CANoe軟件的電動汽車CAN總線測試系統的研究[J].傳動技術,2012,26(3):10-13,42.
[4]李志濤.基于CANoe的汽車網絡功能配置系統的開發[J].汽車電器,2015(4):51-53.
[責任編輯:楊玉潔]