靳曉飛,張 良,張 欣
(北京交通大學 機械與電子控制工程學院,北京 100044)
當前,應用CAN總線網絡來實現汽車內部多個ECU之間的通訊已經非常普遍。在需要對ECU進行監測和標定時,基于CAN總線的標定協議CCP得到了廣泛的應用[1]。但是,車載網絡變得越來越復雜和多樣化,除了控制器區域網絡(CAN)外,還有LIN、MOST、Flex Ray等,下一代的標定協議必須能滿足這些不同網絡的要求。為此,ASAM在2003年制定了XCP標定協議。XCP標定協議是CAN標定協議CCP2.1的改進版,除了CAN網絡以外,它還支持其它類型車載網絡[2]。XCP協議不依賴于物理傳輸層,相比于CCP,其主要優點是傳輸層的獨立性。XCP標定協議效率高、占有資源少,故而能夠實現通用標定協議的要求[3]。
基于XCP標定協議的標定方式能夠實現便捷、可靠和高效的在線標定。本文的主要內容就是針對基于英飛凌TC1767的整車控制器,研究與開發符合XCP標定協議的在線標定系統。標定系統的設計包括了XCP標定系統的構成組件和詳細方案。標定系統能夠實現實時標定數據和標定數據下載的功能。為了驗證XCP標定系統的可行性和實時性,最后利用工具軟件 CANoe 進行了二次開發并對標定系統進行了測試。
純電動汽車僅依靠電力作為驅動力,電動機將動力電池組的電能轉化為機械能用以驅動汽車行駛。純電動汽車的結構根據電動機的不同布置,可以分為集中電機驅動、多電機驅動、輪轂電機驅動等3種模式。
本文的研究對象選擇輪轂電機四驅純電動汽車,試驗樣車如圖1所示。該車分別由4個輪轂電機獨立驅動4個車輪,動力電池由4塊12 V單體電池串聯的鉛酸電池組成,電動汽車的額定電壓/電流為48 V/50 A,額定轉速為300 r/min,額定轉矩為25 N·m,額定功率為1.5 kW。
輪轂電機驅動模式將電機本體、車輪輪轂殼體和齒輪傳動系統集成一體。輪轂電機控制器控制方式可直接將按需標定的信號接入電機控制器來控制電機。而試驗樣車的電機控制器采用CAN通訊接口和整車控制器進行通訊。基于XCP標定協議,通過CAN總線電機接受電機控制器發送的指令來實現在線標定并進行標定數據采集以實現車輛正常行駛。
本電動汽車控制器的核心芯片是英飛凌TC1767,該芯片是AUDO FUTURE產品家族中專門面向汽車應用而優化設計的芯片[4],TC1767程序就嵌入在芯片中。
TC1767是一種32位的高性能單片機,其硬件特點包括:程序內存單元指令存儲器和指令緩存;串行通信接口;能夠直接存儲器存取控制器DMA操作和中斷服務;具有通用定時器;具備高性能片上總線;片上調試和仿真設備;靈活連接到外部組件和電源管理。該芯片提供2 MB片上閃存、128 KB RAM和幾種通用片上外圍單位如定時器單元和模擬數字轉換器。CPU時鐘頻率為133 MHz。
本文中標定系統主要是對下位機的開發,選用CAN總線作為傳輸層,即選擇TC1767上的一個CAN模塊并進行CAN模塊驅動程序的開發。在本標定系統中按照XCP協議進行通信,并采用主從的通訊模式。XCP-on-CAN可以采用兩種工作模式:一種是標準通訊(查詢)模式,另一種是塊傳輸模式[5]。本標定系統中用查詢模式實現對純電驅動整車控制器進行參數標定,用塊傳輸的方式實現對電機控制器采集數據的周期性上傳(DAQ的實現)。
標定系統總體結構如圖2所示。CAN通信模塊采用了CAN通信卡,將上位機USB口輸出的信號經過轉換后發送給ECU的CAN口。電動機驅動控制器負責處理標定界面下發的標定數據和傳感器采集的測量數據。CAN通信模塊將收到的USB信號轉換為CAN信號發送給下位機ECU。XCP標定程序通過TASKING編譯并且嵌入到TC1767芯片中。標定時,將數據放入事先制好的DAQ表中,ECU再對這些表進行周期性上傳,通過CAN模塊和USB口最后在監測窗口中實時顯示測量數據。
標定系統的執行過程主要有兩部分:初始化和執行周期任務[6]。初始化過程包括時鐘設置、輸入輸出引腳配置以及CAN模塊的初始化設置。初始化完成后,系統方能啟動定時器。
系統循環調用兩個系統任務,在5 ms任務中首先檢查CAN總線上有無來自上位機的XCP 命令報文,然后執行在線標定,顯示標定數據數值的變化。在2.5 s任務中,主要是實現標定過程中DAQ的功能模塊,在此任務中程序循環處理標定的發送隊列上的數據,然后以塊傳輸模式將數據傳輸至網絡上,以報文的形式呈現。
相比于CCP,CAN總線上XCP的報文不需要報頭,只有數據包和報尾[3]。XCP數據包與傳輸層的選擇無關。報文的最大長度定義為8個字節,首字節為數據包標識。而設計的系統中需要把8個字節的數用報文的形式進行采集,所以用兩條報文來表達。
在本系統中 CAN 模塊底層驅動主要由3部分組成,分別為CAN報文接收,CAN模塊初始化和CAN 報文發送[7]。
2.2.1 CAN模塊收發器連接方式
每片TC1767提供了兩路CAN接口,每一路CAN各有一個收發器(圖3)。本文重點研究其中一路收發器。收發器上RXD引腳為CAN總線的接收輸入引腳,它連接在外部端口P3.12處;TXD引腳為發送輸出引腳,連接于P3.13。除此之外,CAN的高低電平信號管腳CANH和CANL分別連接在引腳插座的4和3管腳上。
2.2.2 初始化設計
每當使用CAN模塊時都必須對其功能進行初始化,以保證進入復位模式[8]。選擇CAN模塊中Node0(1個節點)的MO0、MO1、MO2(3個信息傳輸對象)進行開發。在初始化過程中,需要設置CAN模塊的時鐘頻率、波特率,進行控制器的選擇。
CAN模塊中的定時器時鐘頻率fCAN由模塊控制時鐘fCLC所得。分數分頻器是用于生成fCAN并用于位定時計算。一個CAN的位時間可被分為不同的段(圖3),每個段用時間量子tq的倍數表示[9]。時間量子tq由BRP值和DIV8值決定。
相關計算公式如下:
根據CAN總線時鐘的相關規定,可以得到
波特率即為其倒數。
由于CAN模塊的最大時鐘頻率為133 MHz,本次設計的CAN模塊的時鐘頻率設置為40 MHz,借助DAvE軟件,選擇CAN模塊中的節點Node0,默認tq=1,設置需要達到的波特率250 kbps,當不采用8分頻時,即DIV=0,可以得到TSEG1=5,TSEG2=4,BRP=15,即完成了波特率的設置。
2.2.3 接收數據的命令
本系統中將CAN接收設置為以中斷方式接收,在接收報文的函數中主要是提取數據CAN模塊數據緩存區中的數據。接收流程如圖5所示。
2.2.4 發送數據的命令
發送數據的命令流程如圖6所示。
2.3.1 程序流程
標定程序啟動后,首先執行的過程主要由初始化和執行周期任務兩部分組成。初始化主要是對MCU時鐘設置,芯片的輸入輸出引腳配置以及CAN模塊初始化設置。初始化完成后,系統啟動定時器,進行時鐘頻率設置,設置計數器每1 ms加1,作為系統周期任務的頻率。
然后,系統循環調用5 ms、2.5 s這兩個系統任務。5 ms任務的作用是調用檢查CAN模塊的通訊總線上有沒有上位機發送的XCP命令報文,并執行在線標定。2.5 s的任務主要是實現標定系統的DAQ的函數處理功能,在此任務中程序按照頻率循環處理測量的數據,并把數據從發送隊列中傳輸到網絡上,并以報文形式呈現。
2.3.2 標定基本命令的選取和使用
其中,CONNECT和DISCONNECT為最先執行的協議通信的基本命令,這兩個命令用來確定是否已經與ECU建立通信。另外,需要說明的一點是,所有被下載的標定數據都要通過一個單獨的DOWNLOAD報文進行下載。表1中給出了本系統中需要調用的XCP協議層的命令。

表1 系統中的XCP協議基本命令
基于TC1767的XCP標定程序的相關設置,上位機軟件的設置如下:
?CTO消息ID:0x201。
?DTO消息ID:0x200,格式為標準幀格式。
?波特率設置為250 kbps。
上位機開發流程框圖如圖7所示。
2.5.1 建立通信連接
建立通信連接是主從節點相互交換信息的過程,首先由主節點確認通信模式,然后再獲取從節點的使能模塊,建立連接的通信應答過程為
發送報文:FF 00
應答報文:FF 15 C0 08 08 00 10 10
2.5.2 數據在線標定
數據在線標定的傳輸過程首先由主節點在與之相關聯的文件中,查找出此變量在程序中的存儲地址,將此地址發送給從節點。然后主節點再發送本次要上傳數據的字節數。最后再發送上傳數據命令并在剛才發送的地址處修改變量值。
2.5.3 DAQ機制的實現
與CCP協議一樣,XCP也采用主從通訊模式,但在主從節點對話的過程中,所有內容都以XCP數據包進行傳輸。XCP數據包可分為命令傳輸(CTO)和數據傳輸(DTO)兩種。上述的DOWNLOAD命令就處在CTO包的CMD處理模塊中,而DAQ功能模塊則在DTO中。
在數據的組織形上,DAQ的傳輸過程首先需要觀測變量的信息并進行分析,然后按照其數據的存儲結構來進行傳輸。一般的DAQ數據的組織結構主要有3個層次:數據采集列表(DAQlist)、對象描述列表(ODT)和傳輸字節(Byte)。每個DAQ傳輸列表中有若干個ODT列表,用于存儲一個變量的地址和字節數。
在CAN網絡上傳輸的DAQ幀格式為:
其中Byte0(PID)為傳輸包的標識序號,而Byte1至Byte7即為要傳輸的數據信息[10]。
DAQ的傳輸結構中有多個傳輸隊列,而每個傳輸隊列(DAQlist)又可包含多個ODT。每個ODT又都對應一個數據傳輸包,該傳輸包的序號PID與DAQ的數據包序號一一對應[4]。XCP協議處理過程中,在得到DAQ模式傳輸的命令后會依照上位機所提供的變量地址在內存RAM中的相應位置讀取該變量的數值,這樣就實現了標定系統中應用DAQ模塊對觀測量進行的傳輸。
在傳輸過程和標定過程中,DAQ傳輸的實現依靠系統周期性驅動及其功能函數來完成,其具體過程有3個階段,分別為獲取通信模式,設置內存RAM空間和接收傳來的地址和數據。首先,程序響應并回復給主節點DAQ的工作模式和初始化信息;然后處理機會接收FREE_DAQ命令,即對主從節點的會話狀態進行重新設置;隨后,主節點會分別傳入本次數據傳來的Daqlist數量,ODT數量和每個ODT所包含的字節數和字節信息,這些信息會根據傳入的順序被存入結構體中;隨后要對這個結構體進行內存空間的檢測。接下來,主節點會發送SET_DAQ_PTR和WRITE_DAQ這兩個命令來傳入觀測數據的地址和和數據的長度。這些地址所對應的數據會以周期性任務形式向網絡上發送。
DAQ實現了對于標定系統中所觀測變量的動態采集。這種觀測方式與用輪詢方式觀測變量值相比可降低網絡負載,節省空間,提高數據傳輸的實時性和準確性。
測試采用英飛凌公司的TC1767開發板來模擬ECU,測試平臺是在原有的Vector公司的CANoe系統上進行了二次開發,針對已經開發好的基于TC1767的標定系統,設計上位機的程序。軟件環境采用英飛凌提供的編譯軟件TASKING進行編譯。系統環境配置如圖8和圖9所示。
測試旨在對電動汽車的模擬標定,主要驗證系統能否準確地返回所標定的變量值[11]。系統提供了兩種標定方式,分別為在線標定數據下載(DOWNLOAD)和數據對象獲取(DAQ)。
對于標定數據的DOWNLOAD的測試,可以通過對“cal.txt”文件中標定更新的數據的設置修改,實時觀測上位機程序控制面板(圖10)。
位于圖10下側的“cal.txt”文本可以用來設置上位機中需要標定的8個參量(車速、電動機轉速、電池電量等)的值,對文本保存后,才可以啟動標定系統。圖10上側的“Calibration”窗口是對下位機標定數據檢測的一個面板。通過對右側每個參量后的按鈕依次點擊,我們能夠很快地在左側的方框中得到下載的標定數據。通過重復測試,我們發現,標定的這一組數據的值與在“cal.txt”文本中預設保存的上位機的參量值是相同的,這就說明本系統能夠實現標定數據DOWNLOAD的功能。
對于DAQ模式上傳數據,我們測試的設計是把上位機通過DOWNLOAD下載到下位機的數據通過DAQ模式以報文的格式上傳回上位機,進而實現數據上傳的標定功能。通過啟動“Calibration”控制面板上的DAQ模式控制開關啟動DAQ模式(打開圖10左下角的“DAQ Mode”開關),數據消息的觀察窗口“trace”可以實時觀測到數據采集DAQ的報文信息(圖11)。
我們可以觀察到,每隔2.5 s進行一次數據的標定,每次標定上傳數據會通過兩條6字節的報文來展現。其中每條報文第一個字節為報文的序號,最后一個字節無意義,兩條報文2到5字節一共8個字節中即為上傳的8個參量值。它們以16進制數呈現,轉換成十進制數,正好與DOWNLOAD中下載的數據一一對應。報文每隔2.5 s上傳一次,之后的數據也是一一對應的。我們修改需要標定的參量,也能得到相同的結論:報文每隔2.5 s上傳一次,且與下位機下載的數據一一對應相同。
綜上所述,通過對標定系統進行的功能性測試,可以得出以下結論:
(1)標定系統可以準確實現通信連接。
(2)標定系統可以實現實時的標定數據下載DOWNLOAD的功能。
(3)標定系統可以實現周期為2.5 s的從下位機上傳數據(DAQ)的功能,可以實現即時的電動汽車實時工況的檢測。
本文采用英飛凌TC1767整車控制器,研究并開發了基于XCP協議和CAN模塊通訊的標定系統,實現了基于XCP協議的標定方式來便捷、可靠地在線標定,其方法如下:
(1)對XCP協議進研究和分析,從傳輸層、協議層規范等方面對標定的功能和標定流程進行了分析,并以此標準開發實現了兩種方式的XCP標定系統。
(2)對CAN總線傳輸原理進行研究,分析CAN模塊功能,詳細完成了CAN總線的初始化設計并完成下位機CAN總線接口驅動開發。
(3)對整個標定系統進行測試,實現了與控制器的聯調,確保系統運行的正確性。
(4)研究并實現了XCP標定系統的DOWNLOAD和DAQ功能。
[1]任亮,李進,楊福原,等. 電控柴油機在線標定系統設計 [J]. 內燃機工程,2005,26(2):8-11.
Ren Liang,Li Jin,Yang Fuyuan,et al. Design of Online Calibration System for Electronic Controlled Diesel Engines [J]. Chinese Internal Combustion Engine Engineering,2005,26(2):8-11. (in Chinese)
[2]蘇瑜,周文華,竺春狄. 一種適用不同通信方式基于XCP協議的ECU標定工具開發 [J]. 汽車工程,2010,32(1):81-85.
Su Yu,Zhou Wenhua,Zhu Chundi. Development of a XCP-Based ECU Calibration Tool Suitable for Different Communication Schemes [J]. Automotive Engineering,2010,32(1):81-85. (in Chinese)
[3]楊時威,楊林,卓斌.基于XCP協議車用標定系統的研發 [C]//中國內燃機學會第四屆青年學術年會論集,哈爾濱: 哈爾濱工程大學出版社, 2006.
Yang Shiwei,Yang Lin,Zhuo Bin. Research and Development Based on XCP Vehicle Calibration System for Vehicle [C]// The 4th Annual Youth Academic Collection of Chinese Society for Internal Combustion Engines,Harbin:Harbin Engineering University Press,2006. (in Chinese)
[4]Infineon Technologies AG. TC1767 User′s Manual V1.1[CP/DK]. Germany:Infinenon Technologies AG,2009.
[5]SCHUERMANS R,ZAISER R,HEPPERLE F,et al.XCP-Part2-Protocol Layer Specification-1.0. [CP/DK].Germany:Association for Standardization of Automation and Measuring Systems,2003.
[6]SCHUERMANS R,ZAISER R,HEPPERLE F,et al.XCP-Part3-Transport Layer Specification XCP on CAN-1.0. [CP/DK]. Germany:Association for Standardisation of Automation & Measuring Systems,2003.
[7]牛躍聽,周立功,方丹. CAN總線嵌入式開發——從入門到實戰 [M]. 北京:北京航空航天大學出版社,2012.
Niu Yueting,Zhou Ligong,Fang Dan. CAN Bus Embedded Development:from Entry to Actual Combating [M].Beijing:Beihang University Press,2012. (in Chinese)
[8]袁軍. CAN總線通訊系統的軟硬件設計和開發 [D]. 上海:上海交通大學,2003.
Yuan Jun. Research and Design of CANbus Software and Hardware on the Electric Vehicle [D]. Shanghai:Shanghai Jiaotong University,2003. (in Chinese)
[9]馮靜,王俊席,卓斌. 基于CCP協議的電控發動機標定系統CAN通信模塊的研發 [J]. 內燃機工程,2003,24(5):33-38.
Feng Jing,Wang Junxi,Zhuo Bin. Research of CAN Communication Module Based on CCP for Calibration System of Electronically Controlled Engine [J]. Internal Combustion Engine Engineering,2003,24(5):33-38. (in Chinese)
[10]李巖. 基于XCP協議標定系統的設計與實現[D]. 長春:吉林大學,2012.
Li Yan. Design and Implementation of Calibration System Based on XCP Protocol [D]. Changchun:Jilin University,2012. (in Chinese)
[11]毛劍輝,王麗芳. 基于 XCP 協議的總線在環仿真標定系統 [J]. 微計算機信息,2008,24(7):165-166.
Mao Jianhui,Wang Lifang. The Bus Simulation Calibration System Based on XCP [J]. Microcomputer Information,2008,24(7):165-166. (in Chinese)