1. 程式人生 > >CAN通訊最常用的標定協議--CCP與XCP

CAN通訊最常用的標定協議--CCP與XCP

CCP與XCP

CCP協議(CAN Calibration Protocol)

  • CAN標定協議,基於CAN匯流排的標定協議

 

XCP協議(Universal Measurement and Calibration Protocol)

  • 通用測試標定協議

  • 可以應用在許多總線上:

  • XCP on CAN

  • XCP on Ethernet

  • XCP on FlexRay

  • XCP on USB

CCP與XCP的用途
  • XCP/CCP主要應用於控制系統的開發和測試

  • XCP/CCP使用者為control system或mechanical engineers

  • XCP/CCP也廣泛應用於system verification和testing

 

  • 如果不用XCP/CCP,那麼在ECU的軟體開發中,將非常頻繁使用C-code編譯器和debugger。

  • 通過XCP/CCP協議,配合A2L檔案,可以直接在軟體上更改某些引數,執行器就會給相應的反饋。

  • 例如我們以前做一個單片機板子,如果想要修改裡面的程式的話,需要先修改程式碼,再進行編譯除錯,生成hex或S19檔案,再將程式燒寫進微控制器中,才算完成程式的修改。但是對於複雜的ECU來說,標定時是需要經常修改各種引數的,如果每次修改引數都需要編譯除錯生成再下載這一系列步驟的話,是非常影響工作效率的,所以使用CCP和XCP進行標定是非常便捷的。

 

CCP與XCP的優點

1、當ECU執行的時候,可以實時記錄ECU記憶體中的變數。

2、可以具有真實物理意義和單位的數值來直接讀寫ECU變數,比如RPM、溫度、開關等,而不是以原始的位元組、位來讀取。

3、實時改變ECU記憶體中的變數值,測試中實時改變ECU行為和效能,而不需重新編譯ECU程式。

4、標定過程中,資料記錄功能可以獲取和記錄全面的資料。

一、CCP的介紹

 

CCP主要功能

CCP全稱CAN Calibration Protocol(CAN標定協議),是ASAM標準的組成部分,屬於ASAM MCD1a規範標準。

 

CCP協議主要可提供以下功能:

1、隨機讀取ECU中RAM和ROM資料

2、測量資料取樣

3、標定資料取樣和傳輸

4、同時處理多個ECU系統

5、F1ash程式設計技術

 

CCP通訊方式

CCP協議採用主從通訊方式,具體又可分為兩種:

1、查詢(Polling)模式

2、DAQ(Data Acquisition Command)模式

 

在詳細介紹CCP的通訊方式之前,我們需要先了解一下CCP的系統結構。

 

如下圖所示為CCP系統的整體架構,標定系統和各個ECU通過CAN匯流排連線。

下圖是CCP系統結構:


 

從CCP系統內部具體結構可以看出,CCP系統結構主要由主裝置MCD系統和電控單元ECU構成,其中ECU內部的CCP驅動程式又由命令處理器和DAQ處理器組成。

  • 命令處理器主要是處理查詢模式,是由標定系統主裝置給命令處理器發出一個CRO的命令,ECU接受到之後再反饋響應給標定系統。

  • DAQ處理器主要是處理DAQ模式的,DAQ模式不需要主裝置請求,每隔一段時間它會自動將ECU裡相關資訊傳到測量與標定系統中。

  • 二、XCP的介紹

  • XCP----標定和測量應用的焦點

    Andreas Patzer(Vector Informatik,恆潤科技提供譯稿)

    針對多種傳輸層和應用的協議

    現代汽車系統中加入了越來越多的安全舒適性電控功能。雖然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)[1],它在2003年被定為標準。其中的“X”代表可變的和可互換的傳輸層。XCP通過雙層協議將協議和傳輸層完全獨立開,它採用的是單主/多從結構。根據正在討論的不同的傳輸層,XCP協議可能指的是XCP-on-Can、XCP-on-Ethernet、XCP-on-UART/SPI 或XCP-on-LIN,如圖3所示。



    圖3 傳輸層和協議層的隔離使得XCP可以利用大量的硬體介面

    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進行標定。



    圖6 旁通:使用標準PC和CANape作為測試系統

    通過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從裝置,該驅動可以從其公司的網頁上下載[3]。從1996年就作為ECU標定工具出現的MCD工具CANape,一直以來都作為XCP主裝置並按照最新的XCP標準進行不斷地升級,這也得益於Vector積極參與ASAM工作委員會。CANape是市場上第一個具有XCP-on-FlexRay介面的工具。在第一輛FlexRay量產車BMW X5的開發過程中,這成為讓BMW工程師決定在標定減震器控制系統時放心使用Vector的XCP協議棧和CANape的一個重要因素。