基于CCP協議的汽車ECU標定系統DAQ模式的實現
本文采用的是DAQ模式,從而可以實現從設備按照指定的周期將需要監視的數據上傳。
DAQ傳送的數據由一系列表來組織,這些表被稱為ODT(Object Descriptor Tables)。每個ODT表含7個元素,可描述7個ECU內部參數的相對地址及數據長度等屬性。這些被ODT描述的參數,就是需要從設備用DAQ-DTO幀周期發送給主設備的被監視數據;而這些屬性被稱為“參數描述”,它們可幫助從設備DAQ處理代碼確定該參數的當前值,如圖3所示。ODT中描述的參數,及各參數的“參數描述”由主設備通過CRO命令寫入。當從設備的DAQ機制被啟動時,從設備按主設備要求的周期,將每個ODT表描述的ECU參數當前值順次放入相應的DAQ-DTO幀中,并發送給主設備。
圖3數據描述表
標定系統的軟件設計主要分為兩個部分:CANDrvier和CCPDriver。本方案的ECU采用MC9S12Dg128,因此可以直接應用芯片CAN模塊提供的接口發送CAN數據。CCPDriver是標定系統的核心部分,它主要通過調用CANDriver實現與上位機標定軟件的通信,從而進行對ECU的在線標定。
標定系統的實現過程如下:
1.上層標定軟件部分定義List的數目、每個List中的ODT數目、每個ODT中的元素數目。
2.ECU按照上層的定義,確定自己的數據結構。即上下層都定義一個三維的數組(List,ODT,Element),用來存放映射關系。
3.上層通過協議命令初始化ODT。首先,上層發送GET_DAQ_SIZE命令(參數為List號),得到指定的List大小(numberofODTinthislist),并得到該List中DTO的第一個PID號。然后,上層發送SET_DAQ_PTR命令(參數為List號、ODT號、ODT中的元素號),指定需要初始化的參數單元。最后,上層根據SET_DAQ_PTR命令設置的具體元素,發送WRITE_DAQ命令(參數為DAQ元素的byte大小,DAQ元素的地址),反復通過SET_PTR和WRITE_DAQ兩條命令,初始化完一個具體的ODT表,然后初始化完一個具體的List表,最后初始化完所有的List表格。至此,初始化ODT工作結束。
4.開始和停止DAQ數據的傳輸。上層發送START_STOP命令,指定的ODT數據開始上傳。ODT將其中的每個元素復制到其對應的DTO(8個字節,1個PID號,7個存放數據)中,然后以DataAcquisitionMessage的形式返回給上層的標定系統。DAQ模式到此為止。
四、結語
ECU標定軟件運行情況如圖4所示,經過多次不斷的調試,此標定系統運行穩定可靠,能夠對汽車系統中的ECU進行在線標定,并可以針對不同用戶需求提供不同的定制功能。
圖4標定軟件示意圖
這個采用CCP協議的汽車發動機標定系統具有符合國際通用標準、通用性好、對不同硬件與不同需求適應性強的特點,因此有很好的開發應用前景。
評論