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