吳 櫻,朱志峰*,姚 勇,汪 丹
(1. 安徽工業(yè)大學(xué) 電氣與信息工程學(xué)院,安徽 馬鞍山 243000;2. 安徽省愛(ài)夫卡電子科技有限公司,安徽 馬鞍山 243000)
動(dòng)力轉(zhuǎn)向系統(tǒng)標(biāo)定功能主要是為了檢測(cè)轉(zhuǎn)向系統(tǒng)方向盤(pán)出現(xiàn)的角度偏差,并對(duì)出現(xiàn)的偏差通過(guò)一定的動(dòng)作步驟進(jìn)行標(biāo)定調(diào)節(jié),使駕駛員各種操作自如,提高行車(chē)安全?,F(xiàn)代汽車(chē)上的控制器越來(lái)越多,為使控制器工作在最佳狀態(tài),需要根據(jù)被控系統(tǒng)的參數(shù)來(lái)對(duì)控制器進(jìn)行標(biāo)定。而標(biāo)定是指根據(jù)汽車(chē)發(fā)動(dòng)機(jī)性能、整車(chē)性能、經(jīng)濟(jì)性、安全性等多項(xiàng)指標(biāo)對(duì)汽車(chē)電控系統(tǒng)軟件的運(yùn)行參數(shù)進(jìn)行調(diào)整和優(yōu)化。
傳統(tǒng)的標(biāo)定是指工程師不斷改變控制器的控制參數(shù),直至控制器能夠達(dá)到最優(yōu)的控制效果。由于在標(biāo)定實(shí)驗(yàn)中存在大量的實(shí)驗(yàn)數(shù)據(jù),標(biāo)定軟件需要具有強(qiáng)大的數(shù)據(jù)處理管理功能,標(biāo)定工程師需要對(duì)被控系統(tǒng)非常熟悉并具備長(zhǎng)期標(biāo)定工作經(jīng)驗(yàn)。針對(duì)上述問(wèn)題,國(guó)外的汽車(chē)廠商已經(jīng)開(kāi)發(fā)出技術(shù)成熟的電控標(biāo)定系統(tǒng)軟件,其中CANape 和INCA 的標(biāo)定功能最為強(qiáng)大,廣泛應(yīng)用于標(biāo)定軟件市場(chǎng)[1]。德國(guó)Vector 公司開(kāi)發(fā)的CANape 軟件,主要用于汽車(chē)電子控制單元(electronic control unit,ECU)的參數(shù)優(yōu)化,在系統(tǒng)運(yùn)行期間標(biāo)定參數(shù)值和采集測(cè)量信號(hào),具備全面測(cè)試和分析相關(guān)診斷通信的能力[2]。德國(guó)ETAS 公司開(kāi)發(fā)的INCA 通用測(cè)量標(biāo)定系統(tǒng),包括標(biāo)定的硬件及上位機(jī)軟件,除了可對(duì)汽車(chē)ECU 數(shù)據(jù)進(jìn)行測(cè)量標(biāo)定外,還具有標(biāo)定參數(shù)配置和數(shù)據(jù)刷寫(xiě)功能[3]。而國(guó)內(nèi)對(duì)標(biāo)定系統(tǒng)的研究一般建立在對(duì)國(guó)外標(biāo)定軟件應(yīng)用的基礎(chǔ)上,針對(duì)特殊的車(chē)型系統(tǒng)或應(yīng)用場(chǎng)景而研究和開(kāi)發(fā),比如使用INCA 標(biāo)定軟件進(jìn)行數(shù)據(jù)刷寫(xiě),通過(guò)對(duì)安全校驗(yàn)算法的標(biāo)定,實(shí)現(xiàn)在網(wǎng)絡(luò)和單機(jī)模式下的INCA 數(shù)據(jù)刷寫(xiě)管理[4]。當(dāng)應(yīng)用場(chǎng)景或車(chē)型系統(tǒng)發(fā)生改變時(shí),原有的標(biāo)定系統(tǒng)將無(wú)法繼續(xù)使用。針對(duì)此問(wèn)題,本文設(shè)計(jì)了一種動(dòng)力轉(zhuǎn)向系統(tǒng)的方向盤(pán)角度標(biāo)定診斷軟件,使其可適用于大多數(shù)車(chē)型,標(biāo)定過(guò)程操作方便,可提高診斷效率。
動(dòng)力轉(zhuǎn)向系統(tǒng)的方向盤(pán)角度標(biāo)定屬于動(dòng)力轉(zhuǎn)向系統(tǒng)中特殊功能部分。標(biāo)定過(guò)程具體分為數(shù)據(jù)通信連接、診斷命令分析、標(biāo)定功能實(shí)現(xiàn)3 大模塊。數(shù)據(jù)通信連接模塊是指根據(jù)協(xié)議類型確定初始化參數(shù),使得診斷系統(tǒng)與汽車(chē)ECU 建立通信連接。診斷命令分析模塊是對(duì)通信數(shù)據(jù)進(jìn)行分析,從而提取關(guān)鍵命令信息,并建立診斷數(shù)據(jù)庫(kù)。標(biāo)定功能實(shí)現(xiàn)模塊是指根據(jù)診斷數(shù)據(jù)庫(kù)內(nèi)容進(jìn)行開(kāi)發(fā),利用C 語(yǔ)言編寫(xiě)標(biāo)定功能函數(shù),完成對(duì)標(biāo)定步驟的設(shè)定,實(shí)現(xiàn)診斷儀的具體標(biāo)定功能。在本文動(dòng)力轉(zhuǎn)向系統(tǒng)的方向盤(pán)角度標(biāo)定中,選擇以觀致品牌車(chē)型為例,對(duì)其進(jìn)行標(biāo)定軟件的設(shè)計(jì)。
CAN 總線是一種用于實(shí)時(shí)應(yīng)用的串行通信協(xié)議總線,可以使用雙絞線傳輸信號(hào),而且總線協(xié)議支持多組控制器,是世界上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一?;贑AN 總線的汽車(chē)診斷系統(tǒng)以ISO15765 協(xié)議[5]為診斷通信標(biāo)準(zhǔn)。ISO15765 協(xié)議是汽車(chē)診斷網(wǎng)絡(luò)在CAN 網(wǎng)絡(luò)上的應(yīng)用,診斷按照協(xié)議內(nèi)容與體系結(jié)構(gòu)進(jìn)行設(shè)計(jì)。診斷協(xié)議體系結(jié)構(gòu)劃分為4 層,應(yīng)用層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層[6]。任意一條來(lái)自汽車(chē)ECU 的診斷服務(wù)數(shù)據(jù)都需經(jīng)過(guò)應(yīng)用層轉(zhuǎn)化處理并發(fā)送給網(wǎng)絡(luò)層,并經(jīng)過(guò)網(wǎng)絡(luò)層的控制傳輸、數(shù)據(jù)鏈路層的打包,最終通過(guò)物理層與其他總線節(jié)點(diǎn)進(jìn)行通信[7-9]。
將汽車(chē)ECU 中儲(chǔ)存動(dòng)力轉(zhuǎn)向系統(tǒng)的數(shù)據(jù)信息以通信命令的形式記錄發(fā)送和回復(fù)命令。采用一定的數(shù)據(jù)打包傳送方式進(jìn)行數(shù)據(jù)傳輸,其數(shù)據(jù)結(jié)構(gòu)為:自定義幀頭+ LEN 數(shù)據(jù)長(zhǎng)度+ COM命令方式+ 地址信息+ 有效數(shù)據(jù)長(zhǎng)度+ 有效數(shù)據(jù)+ CS 校驗(yàn)位[10]。在UltraEdit 文本編輯器中建立XML 文檔[11],以XML 語(yǔ)言記錄 汽 車(chē)ECU 與診 斷 儀 相互通信 的 命 令,并以UTF-8 編碼[12]格式保存。以一組標(biāo)準(zhǔn)的CAN 協(xié)議通信命令數(shù)據(jù)為例:
其中rece 的命令表示診斷儀向ECU 發(fā)送的請(qǐng)求命令,send 是汽車(chē)ECU 回復(fù)診斷儀的命令。以rece 命令 為 例,“00 0d”表 示 總 長(zhǎng)度;“30”表 示CAN 協(xié) 議;“00 00 06 29”表示 地 址 信 息;“03”表 示有效數(shù)據(jù)長(zhǎng)度;“22 f1 90”表示該條命令的有效數(shù)據(jù);由于有效數(shù)據(jù)長(zhǎng)度不夠,所以在后面補(bǔ)填“00”;“??”表示校驗(yàn)位。send 命令含義類似。
表1 是采用Excel 文件格式記錄的觀致汽車(chē)轉(zhuǎn)向系統(tǒng)方向盤(pán)角度標(biāo)定功能的界面設(shè)計(jì)。在對(duì)汽車(chē)方向盤(pán)角度進(jìn)行標(biāo)定之前,首先提示用戶該項(xiàng)服務(wù)用于標(biāo)定汽車(chē)電子動(dòng)力轉(zhuǎn)向(electric power steering,EPS)系統(tǒng)的轉(zhuǎn)向角度;設(shè)定方向盤(pán)角度標(biāo)定的檢查條件;在確定滿足檢查條件后,發(fā)送標(biāo)定命令執(zhí)行標(biāo)定功能,通過(guò)對(duì)ECU 標(biāo)定回復(fù)命令的POS[X04]位進(jìn)行真假判斷,得到最終標(biāo)定結(jié)果;最后根據(jù)標(biāo)定結(jié)果設(shè)定提示信息。
表1 觀致汽車(chē)轉(zhuǎn)向系統(tǒng)方向盤(pán)角度標(biāo)定系統(tǒng)的界面設(shè)計(jì)Tab.1 The interface design of the steering wheel angle calibration system of Guanzhi automobile steering system
標(biāo)定功能程序設(shè)計(jì)是標(biāo)定軟件設(shè)計(jì)的核心部分,按照標(biāo)定功能模塊流程,設(shè)計(jì)相關(guān)函數(shù)調(diào)用數(shù)據(jù)庫(kù)實(shí)現(xiàn)標(biāo)定的具體功能。根據(jù)表1 的標(biāo)定具體步驟,標(biāo)定功能的程序設(shè)計(jì)可以分為3 大模塊:進(jìn)入標(biāo)定功能、標(biāo)定執(zhí)行檢查條件、標(biāo)定結(jié)果的獲取。首先是對(duì)標(biāo)定的確認(rèn)過(guò)程,用戶點(diǎn)擊確定按鈕才正式進(jìn)入標(biāo)定。進(jìn)入標(biāo)定系統(tǒng)后,設(shè)定標(biāo)定檢查條件,并判斷汽車(chē)實(shí)時(shí)狀態(tài)是否滿足標(biāo)定條件,條件滿足則發(fā)送標(biāo)定命令,并判斷標(biāo)定命令是否發(fā)送成功,若成功則執(zhí)行具體標(biāo)定操作步驟,否則標(biāo)定失??;檢查條件不滿足則直接跳出程序,結(jié)束運(yùn)行。標(biāo)定功能模塊的具體流程如圖1 所示。
圖1 標(biāo)定功能模塊的程序框圖Fig.1 Program block diagram of the calibration function module
標(biāo)定步驟設(shè)定第一步是讓用戶確定進(jìn)入標(biāo)定功能,首先進(jìn)入特殊功能SPE_FUNC 標(biāo)簽,運(yùn)行MENU_DISPLAY 函數(shù)顯示診斷儀界面,并進(jìn)入系統(tǒng)標(biāo)定功能,其主要數(shù)據(jù)庫(kù)內(nèi)容如下:
在此步驟中運(yùn)行Spefunc_General 特殊功能函數(shù),借助此函數(shù)TYPE = 0c 屬性向ECU 發(fā)送標(biāo)定指令22 F1 9E,并對(duì)ECU 返回的回復(fù)指令首位進(jìn)行判斷,若其回復(fù)指令首位有效數(shù)據(jù)非7f,則代表ECU 對(duì)指令進(jìn)行肯定回復(fù),程序往下執(zhí)行;再借助TYPE = 07 屬性跳轉(zhuǎn)下一節(jié)點(diǎn)正式進(jìn)入標(biāo)定;若其回復(fù)指令首位有效數(shù)據(jù)為7f,則返回主界面。其程序執(zhí)行如下:
TYPE = 0c 的功能是對(duì)ECU 回復(fù)指令進(jìn)行判斷,判斷其為肯定或否定回復(fù)。程序首先進(jìn)入pro_SendRecv 發(fā)送接收數(shù)據(jù)子函數(shù),發(fā)送數(shù)據(jù)獲得數(shù)據(jù)總長(zhǎng)度。將下位機(jī)板解包的數(shù)據(jù)存放到數(shù)組recvbuf 中,并將recvbuf 的數(shù)據(jù)內(nèi)容拷貝到comparebuf 中。對(duì)收到數(shù)組的第一字節(jié)進(jìn)行判斷,若第一字節(jié)數(shù)據(jù)為7f,移除對(duì)話框后彈出消息對(duì)話框,設(shè)置中斷對(duì)話按鈕功能和線程ID 后返回標(biāo)定主界面。對(duì)收到的數(shù)組字節(jié)進(jìn)行判斷,若收到數(shù)組字節(jié)為0 則錯(cuò)誤,提示返回標(biāo)定主界面。
對(duì)標(biāo)定執(zhí)行檢查條件的設(shè)定通過(guò)運(yùn)行Spefunc_General 特殊功能函數(shù)完成。標(biāo)定執(zhí)行檢查條件共有3 條,每一條檢查條件都按數(shù)據(jù)庫(kù)中特定的步驟實(shí)行,其數(shù)據(jù)庫(kù)內(nèi)容如下:
以設(shè)定電池電壓檢查條件為例,運(yùn)行Spefunc_General 特殊功能函數(shù),借助此函數(shù)TYPE =0c 屬性向ECU 發(fā)送標(biāo)定指令22 10 82,并對(duì)ECU 的回復(fù)指令首位進(jìn)行判斷,若其回復(fù)指令首位有效數(shù)據(jù)為7f,則返回主界面;若其回復(fù)指令首位有效數(shù)據(jù)非7f,則代表ECU 對(duì)指令進(jìn)行肯定回復(fù),再借助該函數(shù)中TYPE = 13 屬性,提取ECU 返回的數(shù)據(jù)中固定位置X03X04 的字節(jié)信息,并與CMP 中字節(jié)信息比較,結(jié)果為真則進(jìn)行數(shù)據(jù)計(jì)算,否則顯示結(jié)果為0。在此X03X04 字節(jié)為十六進(jìn)制數(shù)據(jù),若X03X04 字節(jié)數(shù)據(jù)小于十六進(jìn)制數(shù)0801(即十進(jìn)制數(shù)值2049),則按照數(shù)據(jù)流計(jì)算公式CMP0002([X03X04])/64.00,將原字節(jié)十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制并除以64.00,得出十進(jìn)制電池電壓值,計(jì)算結(jié)果保留2 位小數(shù)。最后進(jìn)行顯示UNIT =“V”。其他兩個(gè)條件類似,計(jì)算程序執(zhí)行如下:
TYPE = 13 的功能是根據(jù)發(fā)送命令所得到的回復(fù)命令,按照算法計(jì)算處理。當(dāng)把CMP 屬性值賦值到strexpress 后,進(jìn)入getCMPstrResult 子函數(shù):首先獲取十六進(jìn)制strcmp 屬性值,跳轉(zhuǎn)到子函數(shù)下屬性為公式計(jì)算的case 中,并進(jìn)入formatexpress 子函數(shù),替換原公式中[]符號(hào)并返回正確數(shù)據(jù)公式;再對(duì)strexpress 中數(shù)據(jù)是否為空進(jìn)行判斷,結(jié)果為真則跳出程序,結(jié)果為假則將strexpress 值賦于claculateExpress,并進(jìn)入claculateExpress 子函數(shù)計(jì)算最終數(shù)據(jù)結(jié)果。將帶有數(shù)據(jù)結(jié)果的文本信息拷貝到strinfo 數(shù)組中,并將此數(shù)組與計(jì)算結(jié)果相連接。判斷指針是否有UNIT屬性,并將連接UNIT 屬性值與strinfo 數(shù)組相連接,最終插入菜單項(xiàng)目到窗口。
獲取標(biāo)定結(jié)果是在標(biāo)定執(zhí)行條件滿足的情況下,發(fā)送標(biāo)定命令執(zhí)行標(biāo)定功能,得到對(duì)標(biāo)定過(guò)程成功與否的判斷,其數(shù)據(jù)庫(kù)內(nèi)容如下:
在此步驟運(yùn)行Spefunc_General 特殊功能函數(shù),借助此函數(shù)TYPE = 0c 屬性對(duì)ECU 標(biāo)定指令31,01,10,80 的回復(fù)指令首位是否是7f 進(jìn)行判斷,若其回復(fù)指令第一位有效數(shù)據(jù)非7f,則代表ECU 對(duì)指令進(jìn)行肯定回復(fù),程序往下執(zhí)行;再借助TYPE = 15 屬性,提取ECU 返回的數(shù)據(jù)中固定位置X04 的字節(jié)信息,并與CMP 中字節(jié)01 進(jìn)行比較,若結(jié)果為假,程序跳轉(zhuǎn)到M007 節(jié)點(diǎn);若結(jié)果為真,借助TYPE = 07 屬性跳轉(zhuǎn)到M008 節(jié)點(diǎn)。其相關(guān)程序如下:
TYPE = 15 功能是對(duì)CMP 計(jì)算結(jié)果進(jìn)行真假判斷。當(dāng)把CMP 屬性值賦值到strexpress 后,進(jìn)入getCMPstrResult 子函數(shù),同上面TYPE = 13 中g(shù)etCMPstrResult 子函數(shù)程序步驟得到最終strexpress 數(shù)據(jù)值。再借助atoi 函數(shù),將字符串型轉(zhuǎn)換為整數(shù)型,將CMP 屬性值的計(jì)算結(jié)果轉(zhuǎn)換為整數(shù),并與1 進(jìn)行真假比較,結(jié)果為真則設(shè)置線程ID,并且進(jìn)入到下一個(gè)節(jié)點(diǎn),否則跳出程序。
上述開(kāi)發(fā)的過(guò)程依據(jù)觀致汽車(chē)的原廠診斷儀設(shè)計(jì)出數(shù)據(jù)庫(kù)以及診斷程序。而在測(cè)試階段,則利用所設(shè)計(jì)的軟件對(duì)觀致汽車(chē)進(jìn)行標(biāo)定,記錄分析數(shù)據(jù)并與原廠實(shí)車(chē)測(cè)試結(jié)果進(jìn)行比較,判斷標(biāo)定軟件是否存在缺陷,這些缺陷包括編碼錯(cuò)誤、數(shù)據(jù)庫(kù)相關(guān)結(jié)構(gòu)及數(shù)據(jù)錯(cuò)誤。
在進(jìn)行模擬驗(yàn)證前,需要將標(biāo)定功能數(shù)據(jù)庫(kù)和標(biāo)定程序應(yīng)用于診斷儀器設(shè)備中。將由C 語(yǔ)言編寫(xiě)的標(biāo)定軟件在安卓平臺(tái)下轉(zhuǎn)換成so.文件,使其適用于診斷儀的安卓系統(tǒng)。在本次模擬測(cè)試中,診斷儀設(shè)備選用的是愛(ài)夫卡公司F7S-Z 綜合版智能診斷儀。
模擬測(cè)試需要下位機(jī)板、USB 線、F7S-Z 診斷儀以及具有汽車(chē)ECU 模擬軟件的筆記本電腦。診斷儀通過(guò)藍(lán)牙與下位機(jī)板連接,再借助USB 線與筆記本電腦連接。在下位機(jī)板的作用下,建立起診斷儀設(shè)備與筆記本電腦中汽車(chē)ECU 模擬軟件的數(shù)據(jù)通訊。其模擬測(cè)試結(jié)構(gòu)圖如圖2 所示。
圖2 模擬測(cè)試結(jié)構(gòu)圖Fig.2 Simulation test structure
模擬測(cè)試開(kāi)始,進(jìn)入診斷儀觀致汽車(chē)界面,選擇方向盤(pán)標(biāo)定診斷功能。首先進(jìn)入診斷功能界面,點(diǎn)擊進(jìn)入系統(tǒng)方向盤(pán)角度標(biāo)定功能,診斷儀提示信息,其界面如圖3(a)所示;接著界面提示汽車(chē)方向盤(pán)角度標(biāo)定檢查條件,其界面如圖3(b)所示;若標(biāo)定執(zhí)行條件滿足,則發(fā)送標(biāo)定命令;若標(biāo)定執(zhí)行條件不滿足,則直接退出系統(tǒng)。
對(duì)標(biāo)定命令發(fā)送成功與否進(jìn)行判斷,若標(biāo)定命令發(fā)送失敗,診斷儀界面提示標(biāo)定失敗信息,其界面如圖3(c)所示;若標(biāo)定命令發(fā)送成功,診斷儀界面提示標(biāo)定操作信息,其界面如圖3(d)所示;按照診斷儀提示完成操作,診斷儀界面提示最終標(biāo)定結(jié)果,其界面如圖3(e)所示。
圖3 汽車(chē)轉(zhuǎn)向系統(tǒng)標(biāo)定功能界面圖Fig.3 Calibration interface diagram of the automobile steering system
模擬測(cè)試結(jié)果表明該標(biāo)定軟件可以順利進(jìn)入觀致車(chē)型動(dòng)力轉(zhuǎn)向系統(tǒng)中,并對(duì)汽車(chē)方向盤(pán)角度進(jìn)行標(biāo)定,實(shí)現(xiàn)標(biāo)定功能。將標(biāo)定成功的參數(shù)數(shù)據(jù)流與原廠設(shè)備的采樣數(shù)據(jù)相比較,通信數(shù)據(jù)相同,見(jiàn)圖4,標(biāo)定結(jié)果與原廠實(shí)車(chē)測(cè)試結(jié)果相同,標(biāo)定符合要求。
圖4 數(shù)據(jù)結(jié)果對(duì)比圖Fig.4 Comparison of data results
本文基于CAN 協(xié)議對(duì)汽車(chē)動(dòng)力轉(zhuǎn)向系統(tǒng)標(biāo)定功能進(jìn)行軟件設(shè)計(jì),可通過(guò)進(jìn)一步連接實(shí)車(chē)ECU 進(jìn)行測(cè)試,完成該車(chē)型動(dòng)力轉(zhuǎn)向系統(tǒng)的標(biāo)定功能。在制作其他車(chē)型的標(biāo)定功能時(shí),以本文中數(shù)據(jù)庫(kù)和程序?yàn)槟0?,可擴(kuò)展到其他車(chē)型的標(biāo)定功能,通用性強(qiáng),節(jié)省開(kāi)發(fā)時(shí)間,降低開(kāi)發(fā)難度。
江漢大學(xué)學(xué)報(bào)(自然科學(xué)版)2021年1期