CCP 協議


轉載

1、  CCP協議概述

 

CCP(CAN Calibration Protocol)是一種基於CAN總線的匹配標定協議。ECU都需要經過匹配標定的過程,從而確定其運行參數和控制參數。有時為了實現對ECU的精確控制以及參數匹配修改,滿足預定的要求,必須對ECU進行精確的匹配標定以及優化各項控制參數。基於此,ASAM自動化測試系統標准協會(Association for Standardization of Automation and Measuring Systems)制定了CCP協議。更形象地說,CCP協議實現了ECU在運行過程中,內部變量的在線監測以及有需要時對某些變量的在線修改。監測ECU的內部變量可以測試ECU運行的正確性,若發現某個變量的值不是我們期望的,我們可以標定它,修改成期望的值。舉例來說,我們要監測ECU中發動機的轉速,若發現發動機轉速是錯誤的,不是我們所需要的,我們立即就可以修改它成正確的我們需要的轉速。

 

2、  CCP通信

 

上面我們對CCP有了個總體的印象,對CCP能夠做什么有了了解,下面我們關鍵的是要怎么實現它。

 

基於CCP協議的ECU標定采用主-從通信方式,主設備通過CAN總線與多個從設備相連。其中主設備是測量標定系統MCS(Measurement Calibration System),從設備是需要標定的ECU。在這里測量標定系統我介紹一下CANape。CANape是一款ECU標定和測試工具。與CCP協議相結合,能完成對ECU標定,同時還能在ECU運行期間直接訪問內存並進行操作。從上面的介紹,現在我們心中應該至少有這么一個框圖(如下),通過CAN總線,CANape可以讀出ECU中的變量,同時CANape也能寫ECU中的變量。

 

 

 

3、  CCP協議報文幀格式

 

CCP屬於CAN總線的應用層協議,它占用CAN報文兩個ID標志符,即CRO(Command Receive Object)和DTO(Data Transmission Object),使用數據幀中數據場的8個字節。CRO用於主設備向從設備發送命令,DTO則用於從設備發送至主設備數據,ID標識符可以自行約定。CRO數據場的第一個字節為命令代碼CMD(Command Code),CCP協議共規定了28條命令。從設備通過CMD代碼判斷主設備請求的是哪條命令。數據場的第二個字節是命令計數器CTR(Command Counter)。余下6個字節為命令參數,每條命令有各自對應的命令參數。CRO幀格式如下:

 

DTO數據場第一個字節PID定義了DTO的類型,用以標示DTO的類型;第2個字節為命令返回/錯誤代碼ERR(Command Return-/Error Code),第3字節CTR是命令計數器,該位數值與其對應的CRO的CTR值相對應,DTO格式如下:

 

 

 

 

DTO分三種類型:

1) CRM (Command Return Message):由從設備發送,反饋CRO命令的報文。 PID=0xFF;

 

2) Event Message:當從設備檢測到內部發生錯誤機制時,由從設備自行向主設備發送,報告其當前的運行狀態,並請求主設備暫停當前工作進程以處理發生的錯誤。PID=0xFE;

3) DAQ-DTO(Data Acquisition-DTO):用於DAQ模式,由從設備定期向主設備發送。PID(0x00~0xFD);報文格式如下:

 

 

 

根據CCP協議,主設備首先與從設備建立邏輯連接。建立邏輯連接后,主、從機之間所有的數據傳遞均由主機控制,從機執行主機命令后返回包含命令響應值或錯誤代碼等信息的報文。任何一個從機都可以定時地根據由主機通過控制命令所設置的列表來傳遞內部的數據。所以說數據的傳遞是由主機初始化,由從機來執行,並且是由固定的循環采樣頻率或事件觸發的。

 

4、CCP協議工作模式

   CCP定義了兩種工作模式:Polling(查詢)模式及DAQ(Data Acquisition Command)模式。查詢模式下,主設備與從設備間每一次通信都由主設備發送命令來起始,從設備收到主設備命令后,執行相應操作並反饋一幀報文。這種工作模式需要主機與從機之間進行“一問一答”信息交互,工作效率不高,但實現簡單,占用ECU內存資源較小。 DAQ模式使從設備可以脫離主設備命令控制按一定周期自動向主設備上傳數據。DAQ模式下,主設備首先發送一條請求DAQ命令,從設備收到后,按命令中參數自行配置並組織需要上傳數據,然后按一定周期自主向主設備上傳數據。這種模式不需要主機命令逐步控制,工作效率高,但實現較復雜,需要上傳數據量很大,會占用大量ECU內存空間。

 

5、兩種模式對應的處理過程

 

   定義兩種處理器只是為了更好的理解接收CRO報文后的處理過程,DAQ模式首先也還得經過命令處理器對命令進行解讀,若為DAQ命令則轉給DAQ處理器處理。

 

   1)、針對Polling模式的命令處理器

 

       命令處理器主要是獲取並解讀主設備的CCP命令,並執行該命令;命令執行完后,向主設備發送應答;若執行出錯,應答中應包含向主設備報錯的信息;若主設備命令要求對DAQ進行操作,則該操作傳送給DAQ處理器處理,由DAQ處理器完成DAQ操作。

 

   2)、DAQ處理器實現DAQ模式

 

   DAQ處理器的任務是根據主設備的需要,定時向CAN總線上發送DAQ數據。DAQ模式,簡單的說就是由ECU組織,定期的向CANape發送數據。DAQ傳送的數據由一系列的表來組織,這些表稱為ODT,每個ODT表包含7個元素。這些ODT描述的參數需要ECU用DAQ-DTO幀周期發送給CANape用來監測。當ECU的DAQ機制啟動后,ECU按CANape里設定的周期,將每個ODT表描述的參數當前的值順次放入相應的DAQ-DTO幀中,然后發送給CANape。

 

      標定的實現過程:CANape發送GET_DAQ_SIZE命令(參數為指定的list號),得到指定的list的ODT數量,並且得到該list中DTO的第一個PID號,然后發送SET_DAQ_PTR命令(參數為list號,ODT號,ODT中的元素號),指定需要初始化的元素。最后,根據命令SET_DAQ_PTR設置的具體元素,發送WRITE_DAQ命令(參數為元素的byte大小,元素的地址),通過反復地執行SET_DAQ_PTR和WRITE_DAQ這兩條命令,初始化一個具體的ODT表,然后初始化完一個具體的List表,最后初始化完所有的list表。這樣,CANape就完成了ODT的初始化工作。之后開始和停止DAQ數據的傳輸。CANape發送START_STOP命令(可以准備DAQ數據的上傳),發送START_STOP_ALL來上傳所有准備好的DAQ數據。ECU采集指定的數據后以DTO的形式上傳給CANape,實現DAQ模式。

 

6、測量標定系統的總體框圖介紹

 

   測量標定系統的簡單框圖如下圖所示。主設備發送CRO報文到總線,經過ECU CAN Driver的接收,由CAN Driver與CCP Dirver的接口函數把接收的報文轉給命令處理器,由命令處理器解析命令,若是查詢模式的命令,則根據命令返回相應的CRM報文;若是DAQ模式的命令,則轉給DAQ處理器進行處理,之后按命令給定的周期,自己組織采集需要的數據,通過DAQ-DTO報文的形式返回給主設備。

 

 

 

CANape里已經集成了CCP和CAN的驅動,CANape發送命令的形式是通過測量窗口的配置。舉例來說,如要測量發動機的轉速,首先根據ECU里的map文件確定轉速在ECU中的地址,配置成A2L格式的數據庫文件,在測量配置窗口配置轉速這一變量,設置成polling模式,新建一個顯示窗口添加該變量,運行CANape即可實現轉速的在線監測。

 

7、標定數據庫(A2L)

 

   CANape與ECU之間的通信需要一個描述文件支持,這個文件稱為ASAP2描述文件。CANape對ECU參數標定和數據測量都是基於這個文件,該文件記錄了ECU中各參數詳細信息,如標定參數和測量變量ECU中存儲地址、存儲結構、數據類型和轉換公式等。CANape中,每個標定參數和測量數據都會有一個變量名,如發動機溫度、冷卻水溫度。當CANape需要訪問某個變量時,找到ASAP2描述文件中變量名,找到該變量在ECU中的存儲地址、數據長度等信息。為了對ASAP2文件進行維護和修改,CANape集成了一個ASAP2 Editor的數據庫編輯器,生成和修改ASAP2控制器描述文件。所有信息都能對話框形式進行設置和修改。該數據庫編輯器還能工作在獨立模式下,以生成一個A2L格式的控制器描述文件。 當ECU底層程序修改后,一些標定參數和測量數據內存址可能發生變動,CANape支持linker map文件自動更新ASAP2文件里的信息。Map文件是ECU底層程序編譯時由編譯器生成一種映射文件,Map文件可以自動更新ASAP2文件,保證了測量與標定變量時地址的一致性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM