INCA軟件
INCA是車輛控制器標(biāo)定的首選軟件之一,主要包含功能模型標(biāo)定、測量數(shù)據(jù)分析(MDA)、標(biāo)定數(shù)據(jù)管理(CDM)、控制器刷新(ProF)功能等。而本文將介紹常用卻又陌生的ProF腳本的擴(kuò)展用法,通過編寫ProF腳本與外面程序配合可實(shí)現(xiàn)各種診斷功能。例如通過ProF腳本讀取/解析控制器的故障碼及故障碼凍結(jié)幀信息等。
ProF腳本擴(kuò)展應(yīng)用效果展示
1、在ProF刷新界面執(zhí)行讀取控制器故障信息Read - DTC Information,ProF會自動讀取/解析控制器故障碼狀態(tài)及凍結(jié)幀信息,最終將讀取的故障碼、凍結(jié)幀原始數(shù)據(jù)、故障信息報告記錄成文件保存到ProF文件夾中。
含:故障碼數(shù)據(jù)文件dtc.dat、凍結(jié)幀數(shù)據(jù)文件snapshot.dat、故障信息文件snapshot.txt
故障信息文件snapshot.txt
2、在ProF刷新界面執(zhí)行讀取控制器信息Read - Module Information,ProF會自動讀取在用戶配置文件中定義的DID信息,同樣可以生成報告保存到ProF文件夾中。
控制信息文件did.txt
3、通過修改用戶配置文件,可將上述功能適配到不同的控制器或項(xiàng)目
故障碼/凍結(jié)幀介紹
當(dāng)控制器軟件檢測到故障發(fā)生時,軟件故障管理模塊會將故障碼以及故障時刻的關(guān)鍵的變量信息保存至非易失的存儲區(qū)域。在故障碼消失前,用戶均可使用診斷儀讀取故障信息,用于分析故障產(chǎn)生的根本原因。
一、凍結(jié)幀類型分為三類:
1、OBD凍結(jié)幀:保存與整車排放的變量參數(shù)(如水溫、車速、發(fā)動機(jī)轉(zhuǎn)速、油門踏板位置等)通常僅有與排放相關(guān)控制器帶OBD凍結(jié)幀功能
2、全局凍結(jié)幀:保存整車/控制器共性的變量參數(shù)(如蓄電池電壓、整車?yán)锍?、萬年歷時鐘、環(huán)境溫度等)
3、局部凍結(jié)幀:保存與觸發(fā)該凍結(jié)幀故障碼相關(guān)的變量參數(shù)(如當(dāng)出現(xiàn)離合器打滑故障時,保存的參數(shù)信息可以是離合器輸入端轉(zhuǎn)速、輸出端轉(zhuǎn)速、離合器壓力、離合器傳遞扭矩等)
二、凍結(jié)幀分配機(jī)制
如下圖1所示,每個故障碼產(chǎn)生時均會保存OBD凍結(jié)幀與全局凍結(jié)幀以及一個該故障碼指定的局部凍結(jié)幀;例如:
故障碼1 保存(OBD凍結(jié)幀+全局凍結(jié)幀+局部凍結(jié)幀n)
故障碼2 保存(OBD凍結(jié)幀+全局凍結(jié)幀+局部凍結(jié)幀1)
故障碼3保存(OBD凍結(jié)幀+全局凍結(jié)幀+局部凍結(jié)幀2)
三、故障碼/凍結(jié)幀的讀取
1、首先通過UDS 19 02 08 指令獲取當(dāng)前已確認(rèn)的故障碼信息??刂破鞣答伒墓收洗a包含4個字節(jié)形式如下
2、通過UDS 19 04DTC1 DTC2 DTC300/01/02/FF指令讀取該故障碼的指定類型凍結(jié)幀信息。其中DTC1DTC2DTC3表示指定故障碼,
00表示讀取OBD凍結(jié)幀信息;
01表示讀取全局凍結(jié)幀信息;
02表示讀取對應(yīng)的局部凍結(jié)幀信息(博世/聯(lián)電方式)
FF表示讀取OBD凍結(jié)幀信息+全局凍結(jié)幀信息+對應(yīng)的局部凍結(jié)幀信息
3、控制器反饋的凍結(jié)幀數(shù)據(jù)格式如下(讀取FF類型):
5904DTC1DTC2DTC3FFDTCstatus000X Data... 01 0X Data.... 020X Data... ;OBD凍結(jié)幀和全局凍結(jié)定義都是一致的,可以按照信號定義做統(tǒng)一解析;而局部凍結(jié)幀的解析則相對較麻煩,因?yàn)槊總€故障碼的局部凍結(jié)幀編號是不同的;首先需要獲取故障碼的局部故障碼編號后找到對應(yīng)的局部凍結(jié)幀定義來做解析。
PS:當(dāng)前新一代的控制器,Nvm區(qū)域都相當(dāng)充足。通常局部凍結(jié)幀的數(shù)據(jù)長度可超過200 Bytes,一個局部凍結(jié)幀可包含軟件中的幾乎所有關(guān)鍵參數(shù),因此也可將所有的故障碼均凍結(jié)同一個局部凍結(jié)幀,而該局部凍結(jié)幀已經(jīng)包含所有故障碼所需的參數(shù)變量。比如(模糊處理)
ProF腳本指令介紹
ProF的全稱是(Programimg Flasher / Flow?) 不太清楚。只知道ProF腳本中包含一些常用的配置、顯示、流控制、字符串變量、數(shù)值變量、UDS指令、調(diào)用外部程序指令、寫入/讀取文件指令(遺憾的是僅支持二進(jìn)制格式寫入/讀取,這是最蛋疼的地方)然而僅使用ProF腳本是無法實(shí)現(xiàn)自動讀取每個故障碼的凍結(jié)幀,更不具備解析凍結(jié)幀信息功能。
解決方案 - ProF腳本+Windows控制臺程序+用戶配置文件
基于ProF腳本指令功能的不足現(xiàn)狀,結(jié)合分析當(dāng)前ProF腳本支持的功能,決定采取額外使用C#編寫一個可被ProF腳本調(diào)用的Windows控制臺程序(ProFTools.exe),通過與ProF腳本配合使用實(shí)現(xiàn)讀取/解析控制器的故障碼及故障碼凍結(jié)幀信息等功能。
ProFTools.exe控制臺程序包含的功能函數(shù)及使用說明:
定義一個用戶配置文件(config.ini),使用.INI格式包含的信息有
1、OBD和全局凍結(jié)幀的信號定義
2、所有局部凍結(jié)幀的信號定義
其中formula表示轉(zhuǎn)換公式:
asc = ASCII碼、bcd = BCD碼、dec =十進(jìn)制、hex =十六進(jìn)制、lin =線性轉(zhuǎn)換
physical_value = data*factor+offset 、emun =枚舉型
bytes表示數(shù)據(jù)長度:factor表示系數(shù):offset:表示偏移量 unit:表示單位
* struct 表示是信號否包含獨(dú)立DID索引號(1 =包含 0 =不包含)
舉個例子:
F4 05 表示凍結(jié)幀發(fā)動機(jī)水溫信號的DID,00是表示發(fā)動機(jī)水溫信號的數(shù)值;
F4 0C 表示凍結(jié)幀發(fā)動機(jī)轉(zhuǎn)速信號的DID,00 00表示發(fā)動機(jī)轉(zhuǎn)速信號數(shù)值;
上述狀態(tài)表示每個凍結(jié)幀信號前都附帶有獨(dú)立的DID編號,struct 值應(yīng)該填入1 ;
若發(fā)動機(jī)轉(zhuǎn)速與發(fā)動機(jī)水溫共用一個DID編號,
F4 05 表示凍結(jié)幀發(fā)動機(jī)水溫信號的DID,00是表示發(fā)動機(jī)水溫信號的數(shù)值,然后直接跟著發(fā)動機(jī)轉(zhuǎn)速信號00 00 。發(fā)動機(jī)轉(zhuǎn)速信號沒有獨(dú)立的DID編號,換言之 F4 05 其實(shí)是個結(jié)構(gòu)體數(shù)據(jù)類型后面帶了多個信號數(shù)值。上述狀態(tài)下發(fā)動機(jī)轉(zhuǎn)速信號 struct 值應(yīng)該填入0。
總之用戶配置文件的信息要確保正確,才能使故障碼及凍結(jié)幀能夠正確地解析。
3、故障碼信息定義(故障碼描述、故障碼與局部凍結(jié)幀編號對應(yīng)關(guān)系)
4、控制器數(shù)據(jù)DID定義,包含DID的解析方式(其中asc =ASCII碼、bcd = BCD碼、dec =十進(jìn)制、hex =十六進(jìn)制)
解決方案 -步驟說明
1、在INCA-ProF界面布局文件中增加"Action"下拉選項(xiàng),在ProF腳本的主流程Main.prm中增加 "Action“ 對應(yīng)的Calling及procedure。
2、使用ProF腳本讀取控制器故障碼數(shù)量(ConfirmedDTC),并保存至變量VAR_DTC_NUM
3、讀取控制器故障碼(ConfirmedDTC),并保存至文件(ProF僅支持二進(jìn)制格式)
如圖所示包括4個故障碼D404 832F,D406832F,D40383 2F, D50683 2F
故障碼字節(jié)含義
4、使用ProF腳本調(diào)用控制臺程序ProFTools.exe,將步驟2保存“故障碼”文件轉(zhuǎn)換為“讀故障碼凍結(jié)幀”的指令集文件。ProF腳本調(diào)用外部程序函數(shù)RUN( xxx)
轉(zhuǎn)換示例:故障碼D4 04 832F-->讀取故障碼凍結(jié)幀指令19 04 D4 04 83 FF
5、使用ProF腳本循環(huán)讀取指令集文件(循環(huán)次數(shù)由故障碼數(shù)量VAR_DTC_NUM確定),每次讀取6個字節(jié)的數(shù)據(jù)(指令)并發(fā)送至控制器;
GET_STRING_FILE(UDS_CMD_FILE,%r,6,0)
ProF腳本將依次將控制器反饋的每個故障碼的凍結(jié)幀數(shù)據(jù)追加保存至凍結(jié)幀數(shù)據(jù)文件。
UDS_MSG_RET_GET(0, 0, 0)
SET_STRING_FILE(UDS_DID_FILE,0,0,1,0)
由于采取追加保存模式,因此每次循環(huán)讀取前都會先使用ClearFile 刪除上次保留的凍結(jié)幀數(shù)據(jù)文件。以免上次讀取到的數(shù)據(jù)被疊加到本次文件內(nèi)
凍結(jié)幀數(shù)據(jù)文件的格式如下所示,5904DTC1DTC2DTC3FFDTCstatus000XOBD-Snapshot010X Global-Snapshot020X Local-Snapshot
即一個文件中保存著控制器反饋的每個故障碼的凍結(jié)幀原始數(shù)據(jù)。
6、使用ProF腳本調(diào)用Windows控制臺程序ProFTools,解析故障碼及凍結(jié)幀數(shù)據(jù)并保存成文本文件。RUN(PORF_TOOL_FILE, ReadDtc2Txt...)
可打開查看每個過程的數(shù)據(jù)文件dtc.dat, cmd.dat, snapshot.dat, snapshot.txt以及ProFTools程序運(yùn)行的日志文件Logs
解決方案 - 技術(shù)細(xì)節(jié)
1、讀取故障碼存儲文件,將故障碼原始值轉(zhuǎn)換成標(biāo)準(zhǔn)的故障碼格式(Code categories);通過用戶配置文件定義檢索到故障碼對應(yīng)的局部凍結(jié)幀編號、故障碼中文描述。
通過故障狀態(tài)位判斷是否為當(dāng)前或歷史故障碼(bit0 testFailed)
故障碼狀態(tài)展示
2、提取凍結(jié)幀數(shù)據(jù)文件中單個故障碼凍結(jié)幀的有效數(shù)據(jù)(下圖中帶顏色填充的部分)
技術(shù)方案:兩個故障碼凍結(jié)幀正反饋幀頭之間即是凍結(jié)幀有效數(shù)據(jù)
5904DTC1DTC1status{ 有效數(shù)據(jù) }5904DTC2DTC2status
3、提取單個凍結(jié)幀有效數(shù)據(jù)中,OBD凍結(jié)幀、全局凍結(jié)幀、局部凍結(jié)幀信號數(shù)據(jù),技術(shù)方案是完全根據(jù)用戶配置文件中各個凍結(jié)幀信號定義索引實(shí)現(xiàn)。
OBD凍結(jié)幀數(shù)據(jù)的索引 =
凍結(jié)幀幀頭(6 bytes) + OBD凍結(jié)幀標(biāo)識(2bytes) +DID數(shù)據(jù)標(biāo)識( struct* 2bytes)
全局凍結(jié)幀數(shù)據(jù)的索引 =
OBD凍結(jié)幀數(shù)據(jù)的索引 +全局凍結(jié)幀標(biāo)識(2bytes) +DID數(shù)據(jù)標(biāo)識(struct* 2bytes)
全局凍結(jié)幀數(shù)據(jù)的索引 =
OBD凍結(jié)幀數(shù)據(jù)的索引+全局凍結(jié)幀數(shù)據(jù)的索引+ 全局凍結(jié)幀標(biāo)識(2bytes) +DID數(shù)據(jù)標(biāo)識(struct* 2bytes)
用戶配置文件
對應(yīng)凍結(jié)幀數(shù)據(jù)文件
其他
1、為何基于INCAroF腳本制作了讀取/解析故障碼凍結(jié)幀的工具?
市面上暫未發(fā)現(xiàn)有工具可以的直接讀取/解析上述格式的局部凍結(jié)幀(貌似該格式是博世/聯(lián)電系統(tǒng)獨(dú)有)
或許使用CANoE和VehicleSPY3更容易實(shí)現(xiàn)上述功能,標(biāo)定工程師通常都INCA +ES581/592打天下.. (CANoE和VehicleSPY3貴...)
2、本文結(jié)尾處會提供擴(kuò)展應(yīng)用所涉及的源代碼,首先說明本人不是專業(yè)碼農(nóng),對于語言的使用“只求功能實(shí)現(xiàn)即可”,因此代碼僅供參考。讀取INI文件部分代碼源于github,特此說明。
3、本文只是提供了一種基于INCAroF腳本擴(kuò)展應(yīng)用思路,或許有更便捷的方法。
審核編輯:湯梓紅
-
控制器
+關(guān)注
關(guān)注
112文章
16105瀏覽量
177082 -
腳本
+關(guān)注
關(guān)注
1文章
387瀏覽量
14811
原文標(biāo)題:INCA軟件ProF腳本擴(kuò)展應(yīng)用 | 附下載
文章出處:【微信號:eng2mot,微信公眾號:汽車ECU開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論