針對(duì)多種傳輸層和應(yīng)用的協(xié)議
現(xiàn)代汽車系統(tǒng)中加入了越來越多的安全舒適性電控功能。雖然ECU的數(shù)量得到了控制,但是這就意味著要增加單個(gè)設(shè)備的復(fù)雜度來補(bǔ)償功能的增長(zhǎng)。XCP通信協(xié)議為這些分布式系統(tǒng)開發(fā)過程的合理化做出了重要的貢獻(xiàn),其主要任務(wù)包括實(shí)時(shí)地測(cè)量和標(biāo)定ECU內(nèi)部變量。該協(xié)議繼承了CCP,它的一個(gè)巨大優(yōu)勢(shì)就是與物理傳輸層無關(guān)。
在當(dāng)前,汽車控制模塊中的變量數(shù)目超過1萬的情況已經(jīng)不足為奇了!在車輛的控制中有眾多的動(dòng)態(tài)過程需要控制,而ECU標(biāo)定的主要任務(wù)就是優(yōu)化這些控制算法。例如針對(duì)PID控制器,標(biāo)定其比例、積分和微分環(huán)節(jié)時(shí)可能產(chǎn)生不計(jì)其數(shù)的變化版本(圖1)。因此,就需要尋找到一個(gè)在穩(wěn)定性、速度和動(dòng)態(tài)特性方面足夠好的結(jié)合點(diǎn)。這些可以通過實(shí)時(shí)讀取和更改變量來實(shí)現(xiàn)(圖2)。
圖1 PID控制算法優(yōu)化
圖2 使用圖形化標(biāo)定和診斷工具CANape優(yōu)化PID控制器
為了控制ECU標(biāo)定的時(shí)間和成本,工程師和技術(shù)員通常會(huì)依賴可以靈活讀寫變量和內(nèi)存的強(qiáng)大的工具和標(biāo)準(zhǔn)。為此,在90年代出現(xiàn)了CAN標(biāo)定協(xié)議(CCP),當(dāng)時(shí)CAN總線是汽車中唯一的主流總線。CCP后來被指定為一種交叉OEM標(biāo)準(zhǔn)。然而,隨著汽車電子的持續(xù)發(fā)展,其它總線系統(tǒng)諸如FlexRay、LIN、MOST等也開始成為主流。但是,CCP僅限于CAN網(wǎng)絡(luò)應(yīng)用,所以在其它潛在領(lǐng)域的應(yīng)用局限日益增加。這樣就導(dǎo)致了其后繼協(xié)議XCP的出現(xiàn)。
通用的標(biāo)準(zhǔn)協(xié)議
與CCP一樣,“通用測(cè)量與標(biāo)定協(xié)議”(XCP)也是源于自動(dòng)化和測(cè)量系統(tǒng)標(biāo)準(zhǔn)化協(xié)會(huì)(ASAM),它在2003年被定為標(biāo)準(zhǔn)。其中的“X”代表可變的和可互換的傳輸層。XCP通過雙層協(xié)議將協(xié)議和傳輸層完全獨(dú)立開,它采用的是單主/多從結(jié)構(gòu)。根據(jù)正在討論的不同的傳輸層,XCP協(xié)議可能指的是XCP-on-Can、XCP-on-Ethernet、XCP-on-UART/SPI 或XCP-on-LIN,如圖3所示。
圖3 傳輸層和協(xié)議層的隔離使得XCP可以利用大量的硬件接口
XCP主設(shè)備可以和不同的XCP從設(shè)備同時(shí)通信。這些XCP從設(shè)備包括:
·ECU或ECU原型
·測(cè)量和標(biāo)定硬件,如調(diào)試接口或內(nèi)存仿真器
·快速控制原型硬件
·HIL/SIL系統(tǒng)
為了滿足作為針對(duì)大量不同應(yīng)用的通用的通信解決方案的挑戰(zhàn),ASAM工作組強(qiáng)調(diào)了下列XCP設(shè)計(jì)準(zhǔn)則:最小的資源使用(包括ECU中的RAM、ROM和必需的運(yùn)行時(shí)資源),高效的通信,輕松實(shí)現(xiàn)XCP Slave,需要較少配置工作的即插即用性能,較少的參數(shù),以及可伸縮性。
可互換的傳輸層
XCP可以在不同的傳輸層上實(shí)現(xiàn)同樣的協(xié)議層。這是一種通用的測(cè)量和標(biāo)定協(xié)議,可以獨(dú)立于所使用的網(wǎng)絡(luò)類型而工作。目前,ASAM已經(jīng)在標(biāo)準(zhǔn)中定義的傳輸層包括:XCP-on-CAN,XCP-on-SXI(SPI,SCI), XCP-on-Ethernet(TCP/IP and UDP/IP),XCP-on-USB和XCP-on-FlexRay。最后命名的版本(XCP-on-FlexRay)是協(xié)議家族中的最新成員,它早在2006年就產(chǎn)生了。XCP-on-FlexRay的一個(gè)特別的技術(shù)特征是動(dòng)態(tài)帶寬控制。測(cè)量、標(biāo)定和診斷工具(MCD工具),比如CANape,可以識(shí)別可用帶寬并能夠非常高效地將其動(dòng)態(tài)分配到當(dāng)前的應(yīng)用數(shù)據(jù)通信中。這樣XCP通信的可用帶寬就可以得到最理想的使用,并且不影響正常的FlexRay通信。
正在為將來考慮的其它方案包括XCP-on-LIN;如果有充足的客戶需求,則也可能包括XCP-on-K-Line或XCP-on-MOST。由于支持廣泛的傳輸層,使得從開發(fā)階段的寬帶(比如Ethernet或USB)方案移植到批量生產(chǎn)階段的CAN接口方案變得十分簡(jiǎn)單。
一主多從概念
測(cè)量和標(biāo)定系統(tǒng)承擔(dān)了XCP主設(shè)備的角色,ECU作為XCP從設(shè)備工作。主設(shè)備和從設(shè)備的通信是通過集成在其中的XCP驅(qū)動(dòng)程序來實(shí)現(xiàn)的。對(duì)于每個(gè)從設(shè)備都有一個(gè)ECU描述文件;這些文件規(guī)定的信息包括:(符號(hào))變量名及其地址范圍分配,數(shù)據(jù)的物理意義,使用的校驗(yàn)方法。XCP主設(shè)備可以從A2L描述文件里讀取所需的全部信息。
XCP通信使用“命令傳輸對(duì)象”(CTO)和“數(shù)據(jù)傳輸對(duì)象” (DTO)來區(qū)分(主從通信)。XCP主設(shè)備可以在總線上向ECU通過CTO發(fā)送命令。ECU會(huì)在執(zhí)行完請(qǐng)求的服務(wù)后以同樣的途徑進(jìn)行應(yīng)答。CTO會(huì)提供:CMD(命令), RES (響應(yīng)), ERR (錯(cuò)誤), EV (事件) 和 SERV (服務(wù)請(qǐng)求處理機(jī))。數(shù)據(jù)傳輸對(duì)象DAQ(數(shù)據(jù)采集)和STIM(激勵(lì))用于以事件驅(qū)動(dòng)方式從內(nèi)存中讀取測(cè)量變量或者向XCP從設(shè)備的內(nèi)存中寫入變量值。
圖4:XCP主設(shè)備和XCP從設(shè)備之間的通信
從汽車總線到標(biāo)準(zhǔn)PC接口
PC平臺(tái)幾乎只用作測(cè)量和標(biāo)定的主設(shè)備。為了直接連接到汽車總線系統(tǒng),比如CAN、LIN、 FlexRay、MOST 或 K-Line等,通常會(huì)為PC機(jī)安裝一個(gè)或多個(gè)硬件接口。此外,XCP主設(shè)備也可以利用標(biāo)準(zhǔn)PC接口,例如以太網(wǎng)、USB和RS232等。當(dāng)然,在這些解決方案中不會(huì)增加額外的硬件接口成本。帶調(diào)試接口(JTAG,TRACE等)的測(cè)量和標(biāo)定系統(tǒng)以及內(nèi)存仿真器都可以通過這種方式實(shí)現(xiàn)。原則上,標(biāo)準(zhǔn)PC接口非常適合于連接存在于不同總線系統(tǒng)間的網(wǎng)關(guān),比如FlexRay-on-Ethernet就可以很好地實(shí)現(xiàn)此功能。最后,在很多開發(fā)和測(cè)試計(jì)劃中會(huì)使用到傳統(tǒng)模擬和數(shù)字I/O通道,這些通道尤其會(huì)涉及時(shí)間-關(guān)鍵測(cè)量。
使用XCP的一個(gè)顯著優(yōu)勢(shì)就在于這樣一個(gè)單一標(biāo)準(zhǔn)協(xié)議滿足了所有這些應(yīng)用需求。如果沒有XCP,就需要為每個(gè)通信通道定義一個(gè)專用的驅(qū)
動(dòng),然而在同時(shí)使用多種驅(qū)動(dòng)時(shí)需要考慮性能損失,此外還會(huì)增加出現(xiàn)不受歡迎的相互影響的風(fēng)險(xiǎn)和不穩(wěn)定性。
通用、可擴(kuò)展并節(jié)約資源
一個(gè),并且是同一個(gè)XCP驅(qū)動(dòng)代碼可以應(yīng)用于所有的通信過程。它可以用于從低端控制器和接口發(fā)送僅僅幾個(gè)字節(jié)的數(shù)據(jù),比如集成了串行接口的8位處理器。同樣的代碼也可用于通過高速的網(wǎng)絡(luò)(比如以太網(wǎng))使用32位處理器發(fā)送兆字節(jié)量級(jí)的數(shù)據(jù)。XCP驅(qū)動(dòng)是由強(qiáng)制功能和可選功能組成的,驅(qū)動(dòng)的大小可以根據(jù)可用的ROM/Flash的大小進(jìn)行調(diào)整。在ECU中,通過是否具有高數(shù)據(jù)吞吐量或低處理器負(fù)載和RAM尺寸來表征資源用量。
對(duì)于總線負(fù)載,主要考慮傳輸信號(hào)的數(shù)目相比總線帶寬。總之,XCP驅(qū)動(dòng)容易實(shí)現(xiàn),而且僅需要很少的幾個(gè)變量。
事件驅(qū)動(dòng)的周期性數(shù)據(jù)采集
ECU在離散的時(shí)間間隔上運(yùn)行。可以將這樣的一個(gè)時(shí)間間隔長(zhǎng)度固定(比如10ms),或者定義其依賴于某種事件(比如發(fā)動(dòng)機(jī)轉(zhuǎn)一圈)。在固定時(shí)間間隔的情況下,時(shí)間片的結(jié)束是以定時(shí)器的溢出來標(biāo)記的。從廣義上講,這種定時(shí)器溢出也是一個(gè)事件。ECU的任務(wù)是在一個(gè)特定的時(shí)間片內(nèi)完成所有的計(jì)算和控制任務(wù)。為了從XCP從設(shè)備中獲取相關(guān)的數(shù)據(jù)信息,使用了XCP協(xié)議中的DAQ機(jī)制。在該機(jī)制中,在測(cè)量開始前XCP主設(shè)備會(huì)先通知XCP從設(shè)備:特定的事件發(fā)生時(shí)需要測(cè)量哪些信號(hào)。如果現(xiàn)在事件發(fā)生了(如10ms定時(shí)器溢出),XCP從設(shè)備就從內(nèi)存中讀取這些先前定義的數(shù)據(jù),并且將他們拷貝到受保護(hù)的RAM區(qū),然后通過消息的方式發(fā)送給XCP主設(shè)備。這保證了數(shù)據(jù)值來自同一事件循環(huán)并且是相關(guān)的。
XCP主設(shè)備接收帶有時(shí)戳的數(shù)據(jù)并且將其保存在相應(yīng)的測(cè)量文件中。時(shí)戳要么通過XCP從設(shè)備作為數(shù)據(jù)發(fā)送,要么分配到消息中通過硬件接口(比如CANcardXL)發(fā)送。在測(cè)量文件中,所有數(shù)據(jù)參考XCP主設(shè)備的時(shí)間基準(zhǔn)進(jìn)行同步,然后被進(jìn)一步處理,例如在一個(gè)統(tǒng)一的時(shí)間軸上對(duì)測(cè)量數(shù)據(jù)進(jìn)行可視化顯示(圖5)。這就允許在一張圖中一致地顯示不同XCP從設(shè)備的多個(gè)數(shù)據(jù)通道。
圖5 在同一個(gè)時(shí)間軸上顯示不同信號(hào)源的各種信號(hào)
除了前面已經(jīng)提到的XCP相對(duì)于CCP的優(yōu)點(diǎn),XCP還支持所謂的冷啟動(dòng)測(cè)量和用于循環(huán)數(shù)據(jù)采集的任務(wù)的內(nèi)部ECU時(shí)戳。在冷啟動(dòng)測(cè)量中,可以配置ECU讓它在被激活后就立即周期性地發(fā)送數(shù)據(jù),而XCP主設(shè)備不需要明確地初始化該功能。如果使用了內(nèi)部ECU時(shí)戳,該時(shí)戳就不是在測(cè)量和標(biāo)定系統(tǒng)中與后期評(píng)估相關(guān)的數(shù)據(jù)接收時(shí)間了,而是在XCP從設(shè)備中數(shù)據(jù)被創(chuàng)建的時(shí)刻。這樣就消除了由于傳輸延遲而引起的不確定性(比如在總線帶寬不足或者高負(fù)載情況下都會(huì)產(chǎn)生)。
優(yōu)化特性曲線和特性圖
除了基于數(shù)學(xué)模型的控制算法,ECU還要使用由離散插值點(diǎn)組成的特性曲線和特性圖。為了達(dá)到預(yù)期的系統(tǒng)行為,通常通過試驗(yàn)方法(比如臺(tái)架試驗(yàn))建立和優(yōu)化這些特性值表。A2L文件是用來描述測(cè)量變量和標(biāo)定參數(shù)的。描述的選項(xiàng)覆蓋了從簡(jiǎn)單標(biāo)量參數(shù)到復(fù)雜數(shù)值表的范圍。其中,描述內(nèi)容包含了數(shù)據(jù)類型、原始值和物理值間的轉(zhuǎn)換規(guī)則、特性map圖的存儲(chǔ)方案以及更多的功能。Vector Informatik公司提供的CANape及類似的高性能標(biāo)定工具可以在屏幕上通過圖形圖表或數(shù)值表格的方式清晰地顯示特性曲線和map圖。
使用CANape和XCP進(jìn)行快速原型
在ECU開發(fā)過程中,經(jīng)常會(huì)頻繁地將重要功能導(dǎo)出到外部仿真系統(tǒng),這樣可以花最小的代價(jià)來計(jì)算這些功能。直到仿真模型中的算法達(dá)到一定的成熟度,開發(fā)者才會(huì)從這些算法生成代碼,這些代碼可與其它ECU代碼一起編譯并燒寫到ECU中。然而,在此之前,可以使用一種被稱作“旁通”的技術(shù)(該技術(shù)耦合了真實(shí)ECU及其模型),通過旁通可以在開發(fā)初期不依賴硬件進(jìn)行測(cè)試和優(yōu)化工作。
在使用XCP的旁通技術(shù)中,XCP主設(shè)備使用DAQ從ECU中讀取數(shù)據(jù),將這些數(shù)據(jù)作為輸入值發(fā)給模型并且使用STIM將模型返回的結(jié)果發(fā)送回ECU。值得注意的是,使用運(yùn)行MCD工具CANape的普通PC機(jī)平臺(tái)就足以滿足旁通和建模的要求。這是個(gè)好消息,因?yàn)榛谔厥鈱?shí)時(shí)硬件的解決方案可能會(huì)貴好多倍,而且在開發(fā)部門中這類設(shè)備也可能為數(shù)不多。CANape作為一個(gè)高度優(yōu)化的XCP主設(shè)備,可以同時(shí)處理與真實(shí)ECU的通信和與在PC上運(yùn)行的模型之間的通信(圖6)。ECU參數(shù)和模型參數(shù)都可通過CANape和XCP進(jìn)行標(biāo)定。
通過XCP進(jìn)行flash編程
XCP同樣為進(jìn)行ECU編程的用戶提供了便利。ECU flash內(nèi)存中的數(shù)據(jù)只能使用特殊的預(yù)定的flash程序進(jìn)行改寫,這些預(yù)定的程序也必須駐留在ECU中。原則上,可使用兩種方法:第一種方案,flash程序被永久存儲(chǔ)在flash中;首先,這樣會(huì)浪費(fèi)內(nèi)存,其次會(huì)遇到交付車輛的安全問題。第二種方案,在需要重新編程的時(shí)候,僅使用PC工具通過XCP將flash內(nèi)核下載到微控制器的RAM中。除了包含用于擦除flash內(nèi)存和重寫數(shù)據(jù)的flash程序外,flash內(nèi)核也包含自己的總線和SCP驅(qū)動(dòng),它們用于通過總線接口與PC工具進(jìn)行通信。
總結(jié)
XCP是一種標(biāo)準(zhǔn)而通用的有很多合理化潛力的應(yīng)用協(xié)議。它不僅用于ECU開發(fā)、標(biāo)定和編程;也用于在原型開發(fā)中集成需要的測(cè)量設(shè)備、功能開發(fā)中的旁通以及在測(cè)試臺(tái)上進(jìn)行的SIL和HIL過程。對(duì)于通過微控制器調(diào)試接口(例如NEXUS等)快速訪問內(nèi)部數(shù)據(jù),通信是在專用硬件上進(jìn)行的,不會(huì)出現(xiàn)故障。該硬件完成NEXUS到XCP-on-Ethernet的通信轉(zhuǎn)換。這樣帶給用戶的好處是不依賴于專用解決方案的工具生產(chǎn)商,并且可以重用組件。
Vector Informatik公司為用戶提供了免費(fèi)的驅(qū)動(dòng)用于建立XCP從設(shè)備,該驅(qū)動(dòng)可以從其公司的網(wǎng)頁上下載。從1996年就作為ECU標(biāo)定工具出現(xiàn)的MCD工具CANape,一直以來都作為XCP主設(shè)備并按照最新的XCP標(biāo)準(zhǔn)進(jìn)行不斷地升級(jí),這也得益于Vector積極參與ASAM工作委員會(huì)。CANape是市場(chǎng)上第一個(gè)具有XCP-on-FlexRay接口的工具。在第一輛FlexRay量產(chǎn)車BMW X5的開發(fā)過程中,這成為讓BMW工程師決定在標(biāo)定減震器控制系統(tǒng)時(shí)放心使用Vector的XCP協(xié)議棧和CANape的一個(gè)重要因素。
責(zé)任編輯:gt
評(píng)論
查看更多