XCP协议简介
XCP協議簡介
文章目錄
- XCP協議簡介
- 一、概要
- 分類:
- 優點:
- 功能:
- 通信方式:
- 二、主從模式
- 三、網絡和傳輸模式
- 四、CTO & DTO
- 五、報文格式和PID
- 六、訪問測量/校準對象
- 七、測量
- 1、異步測量
- 1、SHORT_UPLOAD命令:
- 2、SHORT_UPLOAD應答:
- 2、同步測量
- 1、ECU的控制應用程序:
- 2、主結點:
- 3、從結點:
- 3、XCP與同步測量相關的術語和概念
- 1、元素(Element):
- 2、對象描述表(ODT):
- 3、ODT條目(Entry):
- 4、DAQ列表(List):
- 5、事件通道(Event Channel):
- 4、同步測量的處理
- 5、測量對象和DTO報文
- 6、同步測量的選項
- 1、動態DAQ:
- 2、帶時間戳的DAQ:
- 3、校準
- 八、XCP的趨勢和應用實例
一、概要
XCP:Universal Calibration Protocol,通用校準協議,主要用于直接在軟件上更改某些參數;例如:標定時是需要經常修改各種參數的,如果每次修改參數都需要編譯調試生成再下載這一系列步驟的話,是非常影響工作效率的,所以使用XCP進行標定是非常便捷的。
分類:
優點:
功能:
通信方式:
二、主從模式
XCP協議中,主測量點又稱為“XCP主結點”端是canape,連接PC上位機,被測量點又稱“XCP從結點”端是ECU;采用主從通信模式,即主結點發送命令連接并開始,從結點在接收到后,再向主結點發送應答。可以采用一主多從的形式。
圖1 主從模式示意圖主結點向每個從結點發送命令,并接收從結點返回的應答。
圖2 主多從模式示意圖車載網絡上連接一個測量/校準工具(= XCP主結點)后,可以通過XCP協議訪問作為測量對象的各個ECU(= XCP從結點)。
三、網絡和傳輸模式
XCP有三種傳輸模式:
四、CTO & DTO
在XCP中,除了主結點和從結點之間的傳輸方向的差異之外,要傳輸的內容還被分為“與XCP本身的控制相關的通信”和“與數據相關的通信”兩種類型,以及定義在每個網絡上傳輸的報文的格式。
XCP通信使用“命令傳輸對象”(CTO)和“數據傳輸對象” (DTO)來區分(主從通信)。XCP主設備可以在總線上向ECU通過CTO發送命令。ECU會在執行完請求的服務后以同樣的途徑進行應答。CTO會提供:CMD(命令), RES (響應), ERR (錯誤), EV (事件) 和 SERV (服務請求處理機)。
數據傳輸對象DAQ(數據采集)和STIM(激勵)用于以事件驅動方式從內存中讀取測量變量或者向XCP從設備的內存中寫入變量值。
CTO被稱為“命令傳送對象(CTO:Command Transfer Object)”;與XCP自身的控制命令和應答等相關的對象。控制命令從主結點發送,對命令的應答是從從結點發送。
DTO被稱為“數據傳送對象(DTO:Data Transfer Object)”,與同步從結點(ECU)獲取數據測量結果以及進行數據變更相關聯的對象。同步數據變更被稱為“激勵(Stimulation)”。
圖4 XCP主結點/從結點間的對象五、報文格式和PID
MAX_CTO:CTO的最大報文長度(字節)
MAX_DTO:DTO的最大報文長度(字節)
圖5 CTO和DTO的報文結構所有的XCP報文都在這個最大報文長度內,命令和響應等內容都在一個報文中完成的。而且在報文格式中,每個字段按兩種類型分配給CTO和DTO報文。此外,報文的第一個字節是被稱為“PID”的標識符,是被用來區分是怎樣的報文。
主結點對從結點進行XCP控制時使用“命令(CMD)”,此時的PID在“0xC0”到“0xFF”的范圍內。從結點對這個命令返回肯定應答的情況下,使用“應答(RES)”,此時PID變為“0xFF”。
圖6 報文的標識符(PID)除了測量/校準的同步數據交換之外,所有其它的都是通過主結點發送命令,從結點將返回肯定應答來完成的。
六、訪問測量/校準對象
XCP的測量/校準,是通過對ECU內部的軟件的訪問來實現的。具體而言,針對要測量/校準的對象的內存區間,通過指定對應的“XCP地址”的方式進行訪問。
XCP地址與普通的微控制器中的地址幾乎相同,但XCP使用了32位的XCP地址和8位的擴展地址。也就是說,主結點對從結點的訪問,可以有32 + 8 = 40位的地址空間。這個地址與XCP的實際ECU內存不需要完全匹配,其字節序(Endian)也可以針對每個從結點來選擇。因此,在車載網絡上可以連接到多個ECU,即使存在不同的地址空間(16位,32位),或者不同的地址字節序,主結點都可以經過適當處理,使得所有的都可以測量/校準。
七、測量
1、異步測量
XCP除了同步測量,還可以做異步測量。異步測量是使用主結點發送的命令,通過指定的XCP地址來提取從結點的ECU內部的數據,并通過從結點的應答將該數據傳送給主結點,如此循環往復來實現的。為了取出數據,使用PID為“0xF4”的命令“SHORT_UPLOAD”。這個命令和應答的格式如下所述。
1、SHORT_UPLOAD命令:
CTO 0字節位置,指定為PID“0xF4”
CTO 1字節位置,指定為取出字節數。最大為MAX_CTO – 1字節
CTO 2字節位置,保留字段
CTO 3字節位置,指定為要讀出的8位擴展地址
CTO 4~7字節位置,指定為要讀出的32位地址
2、SHORT_UPLOAD應答:
CTO 0字節位置,指定為PID“0xFF”
CTO 1~MAX_CTO字節位置,指定為取出的數據
2、同步測量
為了使測量與ECU的控制相匹配,有必要由ECU確定測量時機,并在數據取出來后由從結點發送到主結點。這種數據通信是通過DTO來完成的。
主結點在進行同步測量之前,通過命令指定要取出的數據的XCP地址,從結點在等到同步測量開始命令后,使用DTO發送到主結點。因此,在同步測量的情況下,不是通過命令和應答的組合,而是通過測量周期或事件,由從結點發送DTO報文到主結點。
以下是對同步測量中,對ECU的控制應用程序的測量時機,主結點和從結點的任務分割的說明。
1、ECU的控制應用程序:
當到達測量的控制周期,或者事件發生時,進行處理并通知到XCP從結點。
2、主結點:
確定要同步測量的內存及其測量周期,指定同步測量的XCP地址,并使用命令啟動和停止同步測量。
3、從結點:
它管理從主結點指定的同步測量的XCP地址。然后,從檢測的開始同步測量后,直到停止之前,會根據上述ECU的控制應用程序傳達的被管理的XCP地址,從取出內存值并發送DTO報文。
3、XCP與同步測量相關的術語和概念
關于同步測量,在XCP標準文檔中使用了各種術語。這里我們解釋一下主要的術語和概念。
1、元素(Element):
通過XCP地址來指定的一個測量對象的內存。
2、對象描述表(ODT):
(ODT:Object Description Table),歸并元素的測量內存,在一個DTO報文中聚集最多的可發送的內存的表。
3、ODT條目(Entry):
為創建ODT的元素的測量對象的XCP地址。
4、DAQ列表(List):
這是一個ODT的集合。這決定了在一個同步測量的周期或者事件觸發時要測量的內存數量。ODT與一個DTO報文相關聯,由MAX_DTO - PID決定了最大的大小,但由于實際測量的內存可能會大于此值,因此分為了ODT和DAQ列表。
5、事件通道(Event Channel):
在同步測量的控制周期和事件觸發的通道,也即是“種類”的意思。同步測量的時序都是基于這個事件通道的。
4、同步測量的處理
在同步測量中,ECU的控制應用程序向從結點發送測量的時機,將執行怎樣的處理。
(1)控制應用程序要通知從結點測量時機。這個通知通常是將事件通道作為參數,來調用從結點的驅動過程來實現的。
(2)針對主結點以ODT條目來指定的測量對象的內存地址,從結點使用緩沖區來管理,在每次被控制應用程序調用時,都會根據該緩沖區來讀取指定地址的內存。
(3)讀取的內存以ODT為單位合并,并以DAQ列表來生成DTO報文。
元素和ODT條目、DAQ列表和ECU控制應用程序之間的關系。當ECU的控制應用程序集成了Vector的從結點驅動程序后,調用C語言函數“XcpEvent(事件通道)”,就會根據ODT條目的緩沖區,從ECU內存中讀出元素的值來創建出DTO報文。
5、測量對象和DTO報文
作為測量對象的元素從在ECU內存,到在網絡上傳輸的DTO報文之間的關系。
根據ODT條目測量的七個元素的結果,取出的“0x19”“0x6C”“0xF0”“0xBF”“0xC0”“0xA9”“0x02”,作為一個ODT的DTO報文就創建好了。在這個DTO報文中,PID包含在第一個字節,測量時元素的內容被包括從第二個開始的字節中。像這樣的,PID的值是從“0”到“0xFB”的DTO報文被稱為“DAQ”。
從作為測量對象的ECU內存、管理測量對象的ODT的DAQ列表、決定測量時機的控制應用應用程序和用于區分測量時機的事件通道開始,到最后使用DTO報文將測量數據發送到主結點,就實現了同步測量。
6、同步測量的選項
DAQ基本原理為:主機一次性配置好所有要讀取的變量,并關聯ECU端的不同事件channel,一旦ECU對應的事件發生(例如每隔100ms),主動上傳數據給主機。
1、動態DAQ:
通過增加管理測量目標的DAQ列表中的ODT及其條目的數量,可以增加測量的測量點的數量。而且通過維持與要測量的事件通道數量一樣多的DAQ列表,可以對ECU的所有測量時機進行測量。但是這些數量的增加會增大ECU中的管理緩沖區,因此會消耗ECU的內存。
而且如果ECU具有10ms和25ms的控制周期,有的10ms的控制周期中測量的測量點的數量很大,別的25ms的控制周期中測量的測量點的數量也很大,根據測量的場景不同,測量點的數量會有不同。對于這樣的應用程序,有一種稱為“動態DAQ”的功能,可以允許從結點動態更改每次測量的DAQ列表、ODT和ODT條目的數量。相反的,如果在集成XCP驅動程序時,這些數量是預先確定的,則稱為“靜態DAQ”。一個從結點將具有靜態或動態DAQ功能。
2、帶時間戳的DAQ:
在主從結點間的通信中,如果因為加入網關而造成時間差,又或者因為使用無線通信,使得通信時間出現波動的情況下,同步測量中的測量時間對于主結點來說是“不確定”的。為了防止這種情況,要使用“帶時間戳的DAQ”。在從結點側,包含測量時間的時間戳的DAQ,通過DTO報文傳送給主結點。而收到這個報文的主結點,可以讀出所添加的時間戳來知道正確的測量時間。
3、校準
校準是為了重寫ECU內部軟件中的參數,而從主結點發送指定XCP地址的命令和重寫數據的命令,從結點會對應的導出適當的參數地址、執行重寫,并返回一個應答。圖18顯示了,根據XCP主結點發送的XCP擴張地址“0”、XCP地址“0x0041D5C8”,將該地址開始的2字節的參數,重寫為“0x0064”的示例的跟蹤結果。
八、XCP的趨勢和應用實例
總結
- 上一篇: cutterman为什么导出是html,
- 下一篇: emc存储划分空间