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