徐學(xué)瀅,孫永生,曹永娣
(華北水利水電學(xué)院,河南 鄭州 450011)
基于XCP電控單元網(wǎng)絡(luò)通信模塊的開發(fā)
徐學(xué)瀅,孫永生,曹永娣
(華北水利水電學(xué)院,河南 鄭州 450011)
基于XCP-on-Ethernet傳輸層,采用模塊化和分層的軟件設(shè)計(jì)方法,設(shè)計(jì)并開發(fā)了電控單元的通信模塊,將通信模塊分成標(biāo)定協(xié)議和Ethernet驅(qū)動(dòng)2部分,從而保證了通信模塊軟件在多平臺(tái)上的移植,且通信模塊也更具通用性.實(shí)驗(yàn)結(jié)果表明,電控單元和標(biāo)定工具實(shí)時(shí)傳輸數(shù)據(jù)快,通信可靠性高,為電控單元后續(xù)匹配標(biāo)定打下基礎(chǔ).
XCP;標(biāo)定協(xié)議;模塊化
在開發(fā)和調(diào)試ECU的過程中,監(jiān)控和標(biāo)定是一個(gè)非常重要的環(huán)節(jié),監(jiān)控就是實(shí)時(shí)檢測(cè)ECU運(yùn)行過程中的各種重要參數(shù);標(biāo)定就是根據(jù)發(fā)動(dòng)機(jī)的性能要求(如經(jīng)濟(jì)性、排放和動(dòng)力性等)來優(yōu)化調(diào)整ECU的運(yùn)行及控制參數(shù).由于ECU與標(biāo)定工具之間存在著頻繁的數(shù)據(jù)通信,所以需要一個(gè)穩(wěn)定、高速及動(dòng)態(tài)特性好的通信協(xié)議.歐洲ASAP(標(biāo)定系統(tǒng)標(biāo)準(zhǔn)化組織)對(duì)CCP進(jìn)行了擴(kuò)充,產(chǎn)生了XCP[1].歐美國(guó)家對(duì)標(biāo)定工具的研究雖然比較成熟,而且開發(fā)出了很多標(biāo)定通信軟件,但這些軟件大都價(jià)格昂貴,通用性差,不能廣泛推廣和應(yīng)用.筆者針對(duì)這些問題,提出并設(shè)計(jì)了一種基于XCP-on-Ethernet電控單元的通用的通信模塊.
XCP采用獨(dú)立的協(xié)議層和傳輸層,其中協(xié)議層是通用的,根據(jù)不同的傳輸層,XCP協(xié)議可能是XCP-on-CAN,XCP-on-Ethernet,XCP-on-UART/SPI或XCP-on-Lin.
XCP可以實(shí)現(xiàn)同步數(shù)據(jù)采集(DAQ)、同步數(shù)據(jù)激勵(lì)(STIM)、在線存儲(chǔ)器標(biāo)定、標(biāo)定數(shù)據(jù)頁的初始化和切換及ECU開發(fā)的Flash編程[2].其中同步數(shù)據(jù)采集(DAQ)和同步數(shù)據(jù)激勵(lì)(STIM)互為反操作.主設(shè)備和從設(shè)備之間通信的數(shù)據(jù)流如圖1所示.
圖1 主從設(shè)備之間的數(shù)據(jù)流
XCP協(xié)議只定義了2個(gè)通信幀,分別是上位機(jī)發(fā)送到ECU的指令接受對(duì)象(Command Receive Object,CRO)和由ECU向上位機(jī)傳送的數(shù)據(jù)幀(Data Transmission Object,DTO),每條CRO都必須有對(duì)應(yīng)的指令響應(yīng)幀和錯(cuò)誤回應(yīng)幀[3].XCP的報(bào)文格式分3部分:XCP報(bào)頭,XCP數(shù)據(jù)包及XCP報(bào)尾,如圖2所示.
圖2 XCP報(bào)文格式
由于討論的是XCP-on-Ethernet的ECU標(biāo)定模式,其報(bào)文格式只有報(bào)頭和數(shù)據(jù)包而沒有報(bào)尾.XCP報(bào)頭為L(zhǎng)EN+CTR,其中,LEN為數(shù)據(jù)包的總長(zhǎng)度,CTR表示每發(fā)送一個(gè)新包時(shí)增加的值.
XCP遵循主從通信模式,不僅可以實(shí)現(xiàn)對(duì)控制器的標(biāo)定,同時(shí)還可以以循環(huán)或事件驅(qū)動(dòng)的方式對(duì)數(shù)據(jù)進(jìn)行采集和監(jiān)測(cè)[4].循環(huán)模式下,主、從設(shè)備之間是“一問一答”的通信方式,即從設(shè)備只有在接收到主設(shè)備的請(qǐng)求命令后才會(huì)執(zhí)行相應(yīng)的操作.這種通信方式效率不高,但具有實(shí)現(xiàn)簡(jiǎn)單、占用ECU內(nèi)存資源少的優(yōu)點(diǎn).DAQ模式下,主設(shè)備采用應(yīng)答機(jī)制為從設(shè)備配置對(duì)象描述表(Object Descriptor Table,ODT).配置過程結(jié)束后,從設(shè)備根據(jù)主設(shè)備的配置信息確定上傳的數(shù)據(jù)以及上傳的周期,無需再由主設(shè)備控制.這種通信方式雖然使效率提高,但實(shí)現(xiàn)較復(fù)雜,且占用ECU內(nèi)存資源較大.
該通信模塊所采用的開發(fā)編譯環(huán)境為Keil公司的RealView MDK4.01,采用C語言編程,并利用J-Link進(jìn)行下載和調(diào)試程序.同時(shí)采用模塊化的設(shè)計(jì)方法,將XCP協(xié)議的實(shí)現(xiàn)作為單獨(dú)一個(gè)模塊來設(shè)計(jì)和調(diào)試,增加了其可移植性和復(fù)用性.
使用以太網(wǎng)進(jìn)行數(shù)據(jù)交換,必須要有TCP/IP協(xié)議的支持,選取LwIP作為TCP/IP協(xié)議棧的實(shí)現(xiàn).LwIP是Light Weight(輕型)IP協(xié)議,其是瑞典計(jì)算機(jī)科學(xué)院的一個(gè)開源的TCP/IP協(xié)議棧,有無操作系統(tǒng)都可以穩(wěn)定可靠地運(yùn)行,是一種簡(jiǎn)單可靠和使用方便的TCP/IP協(xié)議棧.LwIP在保持TCP協(xié)議主要功能的基礎(chǔ)上減少了對(duì)RAM的占用,一般它只需要幾百字節(jié)的RAM和40 k左右的ROM就可以運(yùn)行,這使LwIP協(xié)議棧適合在中低端的嵌入式系統(tǒng)中使用.
由于LwIP對(duì)硬件的要求低,適合應(yīng)用在實(shí)時(shí)性響應(yīng)要求比較高的嵌入式場(chǎng)合.
選取意法半導(dǎo)體公司的全新STM32互連型系列產(chǎn)品STM32f107作為主芯片.該芯片集成了各種高性能工業(yè)標(biāo)準(zhǔn)接口,且STM32不同型號(hào)產(chǎn)品在引腳和軟件上具有完美的兼容性,可以輕松適應(yīng)更多的應(yīng)用要求.
物理層網(wǎng)絡(luò)層收發(fā)器采用NS公司的10/100 Mb/s自適應(yīng)DP83848,其支持各種工業(yè)以太網(wǎng)標(biāo)準(zhǔn).網(wǎng)絡(luò)收發(fā)器連接電路如圖3所示.
該通信模塊采用分層的軟件設(shè)計(jì)模式,XCP通信模塊作為ECU應(yīng)用程序的一個(gè)接口,作為通信模塊的頂層,是建立在LwIP協(xié)議棧的基礎(chǔ)之上的,底層是依靠以太網(wǎng)驅(qū)動(dòng)模塊來實(shí)現(xiàn)的.具體設(shè)計(jì)流程如下:首先在main函數(shù)中進(jìn)行XCP協(xié)議的初始化及ECU其他模塊的初始化,然后進(jìn)入任務(wù)調(diào)度器;ECU對(duì)上位機(jī)指令的接收采用中斷模式,對(duì)接收到的數(shù)據(jù)的解析則采用任務(wù)模式,這樣就可以保證對(duì)上位機(jī)發(fā)送的命令幀的實(shí)時(shí)響應(yīng).也就是說,當(dāng)ECU進(jìn)入接收中斷后,首先將接收到的數(shù)據(jù)轉(zhuǎn)存到循環(huán)緩沖區(qū),然后退出中斷.任務(wù)調(diào)度器周期性調(diào)用解包函數(shù)對(duì)接收到的數(shù)據(jù)進(jìn)行解析,解包函數(shù)所完成的功能為:解析出每個(gè)完整的數(shù)據(jù)包,然后調(diào)用封包函數(shù)HandleXCPMessage(XCPCTO*pRecData)對(duì)解析出的CRO_ID調(diào)用不同的處理模塊.該函數(shù)按照28條不同指令組裝反饋信息幀、處理數(shù)據(jù)和調(diào)用不同的模塊.最后調(diào)用udpsend(UNS16 len,UNS8*msg)函數(shù),完成一次對(duì)話過程,從而保證上位機(jī)和ECU之間的數(shù)據(jù)的成功傳送.主流程如圖4所示.
DAQ處理及應(yīng)答模塊采用靜態(tài)DAQ及事件驅(qū)動(dòng)模式.即對(duì)需要傳送的數(shù)據(jù)進(jìn)行分組,每組數(shù)據(jù)對(duì)應(yīng)唯一的事件號(hào),從而上位機(jī)只需根據(jù)事件號(hào)即可啟動(dòng)相應(yīng)的DAQ數(shù)據(jù)組的傳送.
由于采用靜態(tài)DAQ,所以在進(jìn)行XCP模塊初始化時(shí),必須要將DAQ_List,ODT以及Entry進(jìn)行初始化,進(jìn)而確定要發(fā)送的數(shù)據(jù)與DAQ之間的映射關(guān)系.靜態(tài)DAQ最大的缺點(diǎn)就是每個(gè)DAQ_List都對(duì)應(yīng)著一個(gè)固定的事件號(hào),但是這種模式很簡(jiǎn)單,也很實(shí)用.所以在此采用靜態(tài)DAQ.上位機(jī)如果需要啟動(dòng)DAQ模式,只需發(fā)送對(duì)應(yīng)的事件號(hào),然后啟動(dòng)任務(wù)進(jìn)行發(fā)送.當(dāng)標(biāo)定工具啟動(dòng)START_STOP,開始DAQ數(shù)據(jù)傳輸命令后,ECU周期性地上傳數(shù)據(jù).其流程如圖5所示.
準(zhǔn)確性和通用性是評(píng)價(jià)電控系統(tǒng)通信模塊性能的重要指標(biāo).考慮到標(biāo)定工具的內(nèi)容隨著控制策略的修改而變化,標(biāo)定工具將標(biāo)定變量信息置于變量描述文件中.ECU通信程序首先讀出所有標(biāo)定變量相對(duì)地址,設(shè)為Add,通過相對(duì)地址來實(shí)現(xiàn)程序的通用性.通信模塊包括Ethernet驅(qū)動(dòng)和XCP驅(qū)動(dòng)兩部分,后者是對(duì)協(xié)議的解析,是標(biāo)定協(xié)議內(nèi)容的實(shí)現(xiàn);前者是通過移植LwIP來實(shí)現(xiàn)底層驅(qū)動(dòng)的,將LwIP移植到其他的微控制器,能夠?qū)ζ潆娍貑卧獦?biāo)定,實(shí)現(xiàn)在不同硬件平臺(tái)上移植,增加了通信模塊的兼容性和通用性.
將通信模塊和上位機(jī)標(biāo)定工具通過網(wǎng)線接成標(biāo)定系統(tǒng).經(jīng)調(diào)試發(fā)現(xiàn)其傳輸速率可以達(dá)到5 Mb/s.經(jīng)過反復(fù)的標(biāo)定試驗(yàn)發(fā)現(xiàn):該通信模塊運(yùn)行穩(wěn)定,數(shù)據(jù)傳輸速度快,實(shí)時(shí)性好.
圖3 以太網(wǎng)收發(fā)器電路
圖4 XCP驅(qū)動(dòng)總框架
基于XCP-on-Ethernet開發(fā)的通信模塊能夠可靠地實(shí)現(xiàn)數(shù)據(jù)標(biāo)定和參數(shù)監(jiān)測(cè)功能,在試驗(yàn)中取得了良好效果.通信模塊采用國(guó)際通用標(biāo)定協(xié)議XCP,使得ECU和標(biāo)定軟件之間的通信有較好的移植性.若需移植,只需要根據(jù)不同傳輸層修改XCP報(bào)頭和報(bào)尾,即可實(shí)現(xiàn)驅(qū)動(dòng)程序的移植[5].同時(shí)使用內(nèi)部時(shí)戳,可消除由于傳輸延遲而引起的不確定性,提高了穩(wěn)定性[1].將標(biāo)定協(xié)議實(shí)現(xiàn)與底層Ethernet驅(qū)動(dòng)分離,實(shí)現(xiàn)通信模塊的通用性.同時(shí),采用模塊化和分層的軟件設(shè)計(jì)方法,將通信模塊封裝成庫函數(shù),作為ECU應(yīng)用程序的一部分.模塊化的設(shè)計(jì)方法提高了程序的復(fù)用性和可移植性,最大限度地降低了程序的耦合,從整體上改善了軟件性能.
圖5 從機(jī)DAQ驅(qū)動(dòng)流程
[1]Patzer A.標(biāo)定和測(cè)量應(yīng)用的焦點(diǎn)—XCP.[2009-07-30].http:∥www.vogel.com.cn/AUTO/.
[2]Schuermans R,Zaiser R,Hepperle F,et al.XCP -Part 1 -Overview-1.0[C]∥Association for Standardization of Automation and Measuring System,2003.[2011-10-10].http:∥www.asam.net.
[3]Schuermans R,Zaiser R,Hepperle F,et al.XCP - Part 2-Protocol Layer Specification-1.0[C]∥[2011 -10 -10].Association for Standardization of Automation and Measuring System,2003.[2011 -10 -10].http:∥www.asam.net.
[4]馮靜,王俊席,卓斌.基于CCP協(xié)議的電控發(fā)動(dòng)機(jī)標(biāo)定系統(tǒng)CAN通信模塊的研發(fā)[J].內(nèi)燃機(jī)工程,2003,24(5):33-38.
[5]楊時(shí)威,楊林,卓斌.基于XCP協(xié)議車用標(biāo)定系統(tǒng)的研發(fā)[C]∥中國(guó)內(nèi)燃機(jī)學(xué)會(huì).中國(guó)內(nèi)燃機(jī)學(xué)會(huì)第四屆青年學(xué)術(shù)年會(huì)論集.哈爾濱:哈爾濱工程大學(xué)出版社,2006.
Development of Network Communication Module for Electronic Control Units Based on XCP
XU Xue-ying,SUN Yong-sheng,CAO Yong-di
(North China Institute of Water Conservancy and Hydroelectric Power,Zhengzhou 450011,China)
By adopting the modularization and stratification method in software design,the communication module for electronic control unit is designed and developed based on XCP-on-Ethernet transport layer.The communication module is divided into two parts,calibration protocol and Ethernet driver module,which guarantees the transplantability of the communication modules on the multi-platforms and its universalization.The experiment results show that the electronic control unit and the calibration tool feature rapid data transport and high communication reliability,which lays a solid foundation for the follow-up matching of the electronic unit.
XCP;calibration protocol;modularization
1002-5634(2012)02-0104-04
2012-01-30
徐學(xué)瀅(1987—),男,河南南陽人,碩士研究生,主要從事氫發(fā)動(dòng)機(jī)的燃燒和排放控制方面的研究.
(責(zé)任編輯:杜明俠)