xcp標定協議與接口

一、XCP協議概述

1、XCP概念

XCP表示"Universal Measurement and Calibration Protocol",X表示支持多用傳輸協議。
XCP支持CAN Eth FlexRay Sxl USB等多種協議。
XCP底層協議
XCP協議主要分爲三個部分MCD-1 MCD-2 MCD-3.
MCD-1主要介紹XCP驅動層,xcp是如何進行數據傳輸的。
MCD-2主要介紹A2L文件的格式描述
MCD-3主要介紹自動化標定的工具
本文僅介紹XCP 驅動部分
在這裏插入圖片描述
2、XCP 數據格式
XCP協議分爲Master 和Salve,由標定上位機(Canape)構成Master,ECU構成Salve。主從機之間採用XCP Packet 交互。
XCP Message
其中XCP Header與XCP Tail是TCP/UDP協議下的控制字,當採用CAN傳輸時,不需要關注。
PID: Packet Identifier,定義如下
PID定義

2、通訊模式

XCP包含兩種通訊模式CTO,DTO.
CTO:Commadn Transfer Object
DTO:Data Transfer Object
XCP通訊模式
當採用CTO模式時,主從之間總是採用一問一答的方式進行交互。每個CTO命令都會 有一個Response 或者Error響應。
當採用DTO模式時,DTO的數據會需要根據Event關聯
CMD數據包由PID和DATA組成。
CMD packet
命令碼PID如下:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
當採用DTO的方式時,從機主動上報測量數據。從機通過EV數據包,告知主機上報數據。
EV

二、xcp參數測量

1、參數測量的方式

依據CTO 與DTO兩種傳輸方式,產生兩種不同的參數測量過程。
1、Polling
2、Event
Poling是基於CTO的方式,當主機請求一個數據的測量時,從機返回這個值。當多個值存在依賴關係時,這種請求方式就無法體現多個測量值的依賴關係。
Polling
Polling是基於CTO的問答機制,進行數據測量
在這裏插入圖片描述
主機通過PID 0xF4(SHORT_UPLOAD)請求了0x0021A1BD地址的數據
從機響應了PID 0xFF(RES)返回改地址的數據0x1E

Event是基於DTO的方式,主機不在主動請求測量數據,採用從機主動上報的方式執行。當多個測量數據完成時,從機調用Xcp_Event接口。觸發DTO數據的主動上報。
在這裏插入圖片描述

2、DAQ List

每個XCP Event都會對應一個DAQ List,這些DAQ List 包含了這個Event所需要上傳的全部數據。這些數據以ODT(Object Data Table)的形式組成,每個ODT對應一個PID編號
ODT
在由ODT組成一個DAQ LIST
在這裏插入圖片描述
Static DAQ list:
靜態DAQlist 是集成在ECU中的,通過A2L文件。上位機可以獲取到這個List中的信息。
一個DAQ List 由N個ODT組成,每個ODT對應N個測量Entry.

Dynamic DAQ list:
XCP提供三個命令配置動態DAQ,

  1. ALLOC_DAQ(0xD5)
  2. ALLOC_ODT_ENTRY(0xD3)
  3. ALLOC_ODT(0xD4)
    在這裏插入圖片描述

3、DAQ List傳輸模式

DAQ LIST在傳輸過程中,以ODT爲最小的傳輸單元。
在傳輸ODT的過程中,主要以relative ODT numbers 和 absolute ODT number。兩種方式對應兩種傳輸的數據接口
在這裏插入圖片描述
在這裏插入圖片描述
當採用absolute ODT number時,每個ODT的編號在A2L文件中都是固定的,依次遞增。
當採用relative ODT number時,每個ODT僅代表當前DAQ LIST內的ODT編號。同時增加absolute DAQ list number進行區分。

三、XCP參數標定

1、線上標定

在系統運行過程中,進行參數標定。但是XCP不會修改程序中固化的參數值。
在這裏插入圖片描述
主機發送0xF6 (SET_MEA) 表示需要0x0021C02C地址的值
從機返回0xFF (RES)
主機發送0xF0(DOWNLOAD)命令,將修改的值下發
從機返回0xFF
主機發送0xF4(SHROT_UPLOAD),獲取修改後的值
從機返回0xFF(RES)和修改之後的值

修改之後的數據,XCP不進行保存處理。ECU可以在下電過程中保存。

2、線下標定

XCP提供paramset filer,通過這個文件可以保存當前標定的參數值,上位機可以在下次標定時,將標定參數傳輸給ECU。
parameter set file的傳輸過程
上位機也可以通過修改elf文件,直接將標定參數修改進ECU的燒錄文件中。
在這裏插入圖片描述

四、XCP安全機制

XCP提供類似UDS的27服務,主機在進行connet請求時,需要先進行解鎖。
從機發送Seed 給到主機,主機返回對應的Key。從機覈對這個Key值,Key值符合期,則解鎖成功。

五、激勵與旁路

Bypassing,就是將ECU的數據測量出來,Bypass Hardawre獲取ECU的數據,並返回給ECU。同時ECU將不再使用內部的計算數據,而是採用Bypass Hardware提供的數據。
在這裏插入圖片描述
在這裏插入圖片描述
當旁路發生時,ECU不再使用算法A計算出來的數據,而是使用外部的計算數據。這裏應該是算法A不再執行了。

六、XCP接口

1、接口定義

AUTOSAR中定義XCP以下幾個接口
1.void Xcp_Init(const Xcp_ConfigType* Xcp_ConfigPtr)
2.void Xcp_GetVersionInfo(Std_VersionInfoType* versioninfo)
3.voidXcp_SetTransmissionMode(NetworkHandleTypeChannel,
Xcp_TransmissionModeType Mode)
4.Xcp_RxIndication(傳輸層接口,根據不同的傳輸層有不同的命名)
5.void Xcp_TxConfirmation(PduIdType TxPduId,Std_ReturnType result
)(同上)
6.Std_ReturnType Xcp_TriggerTransmit(PduIdType TxPduId,PduInfoType* PduInfoPtr)

2、XCP ON CAN

CAN實現XCP時,主要實現
Xcp_CanRxIndication
Xcp_CanTxConfirmation
Xcp_CanTriggersmit

XCP在AUTOSAR架構中不經過PDUR,與NM CANTP J1939TP一樣。下層是CanIf,CanIf收到報文後,根據報文ID找到對應的User.最後找到對應的上層。
請參考下一篇:AUTOSAR_CanIf的設計

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章