0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ProF腳本指令介紹及解決方案

汽車ECU開發(fā) ? 來源:汽車控制器開發(fā)大講堂 ? 作者:廖振偉 ? 2022-10-08 11:13 ? 次閱讀

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

e5e1b7e8-4306-11ed-96c9-dac502259ad0.png

故障信息文件snapshot.txt

e6067c5e-4306-11ed-96c9-dac502259ad0.png

2、在ProF刷新界面執(zhí)行讀取控制器信息Read - Module Information,ProF會自動讀取在用戶配置文件中定義的DID信息,同樣可以生成報告保存到ProF文件夾中。

e630cde2-4306-11ed-96c9-dac502259ad0.png

控制信息文件did.txt

e66e5b12-4306-11ed-96c9-dac502259ad0.png

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)

e6ae5e60-4306-11ed-96c9-dac502259ad0.png

三、故障碼/凍結(jié)幀的讀取

1、首先通過UDS 19 02 08 指令獲取當(dāng)前已確認(rèn)的故障碼信息??刂破鞣答伒墓收洗a包含4個字節(jié)形式如下

e6ee038a-4306-11ed-96c9-dac502259ad0.png

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ù)變量。比如(模糊處理)

e706c6ea-4306-11ed-96c9-dac502259ad0.png

ProF腳本指令介紹

ProF的全稱是(Programimg Flasher / Flow?) 不太清楚。只知道ProF腳本中包含一些常用的配置、顯示、流控制、字符串變量、數(shù)值變量、UDS指令、調(diào)用外部程序指令、寫入/讀取文件指令(遺憾的是僅支持二進(jìn)制格式寫入/讀取,這是最蛋疼的地方)然而僅使用ProF腳本是無法實(shí)現(xiàn)自動讀取每個故障碼的凍結(jié)幀,更不具備解析凍結(jié)幀信息功能。

e7340970-4306-11ed-96c9-dac502259ad0.png

解決方案 - ProF腳本+Windows控制臺程序+用戶配置文件

基于ProF腳本指令功能的不足現(xiàn)狀,結(jié)合分析當(dāng)前ProF腳本支持的功能,決定采取額外使用C#編寫一個可被ProF腳本調(diào)用的Windows控制臺程序(ProFTools.exe),通過與ProF腳本配合使用實(shí)現(xiàn)讀取/解析控制器的故障碼及故障碼凍結(jié)幀信息等功能。

ProFTools.exe控制臺程序包含的功能函數(shù)及使用說明:

e74961d0-4306-11ed-96c9-dac502259ad0.png

定義一個用戶配置文件(config.ini),使用.INI格式包含的信息有

1、OBD和全局凍結(jié)幀的信號定義

e77965ec-4306-11ed-96c9-dac502259ad0.png

2、所有局部凍結(jié)幀的信號定義

e794d21e-4306-11ed-96c9-dac502259ad0.png

e7b81c88-4306-11ed-96c9-dac502259ad0.png

其中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 =不包含)

舉個例子:

e7e159d6-4306-11ed-96c9-dac502259ad0.png

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編號,

e80830a6-4306-11ed-96c9-dac502259ad0.png

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)系)

e820bd06-4306-11ed-96c9-dac502259ad0.png

4、控制器數(shù)據(jù)DID定義,包含DID的解析方式(其中asc =ASCII碼、bcd = BCD碼、dec =十進(jìn)制、hex =十六進(jìn)制)

e85e71d2-4306-11ed-96c9-dac502259ad0.png

解決方案 -步驟說明

1、在INCA-ProF界面布局文件中增加"Action"下拉選項(xiàng),在ProF腳本的主流程Main.prm中增加 "Action“ 對應(yīng)的Calling及procedure。

e883e962-4306-11ed-96c9-dac502259ad0.png

e89bc69a-4306-11ed-96c9-dac502259ad0.png

e8b5766c-4306-11ed-96c9-dac502259ad0.png

e8d1be26-4306-11ed-96c9-dac502259ad0.png

2、使用ProF腳本讀取控制器故障碼數(shù)量(ConfirmedDTC),并保存至變量VAR_DTC_NUM

e9022e62-4306-11ed-96c9-dac502259ad0.png

3、讀取控制器故障碼(ConfirmedDTC),并保存至文件(ProF僅支持二進(jìn)制格式)

e927366c-4306-11ed-96c9-dac502259ad0.png

如圖所示包括4個故障碼D404 832F,D406832F,D40383 2F, D50683 2F

e93c182a-4306-11ed-96c9-dac502259ad0.png

故障碼字節(jié)含義

e6ee038a-4306-11ed-96c9-dac502259ad0.png

4、使用ProF腳本調(diào)用控制臺程序ProFTools.exe,將步驟2保存“故障碼”文件轉(zhuǎn)換為“讀故障碼凍結(jié)幀”的指令集文件。ProF腳本調(diào)用外部程序函數(shù)RUN( xxx)

e965db2e-4306-11ed-96c9-dac502259ad0.png

轉(zhuǎn)換示例:故障碼D4 04 832F-->讀取故障碼凍結(jié)幀指令19 04 D4 04 83 FF

e93c182a-4306-11ed-96c9-dac502259ad0.png

e9a4845a-4306-11ed-96c9-dac502259ad0.png

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)

e9d47d90-4306-11ed-96c9-dac502259ad0.png

凍結(jié)幀數(shù)據(jù)文件的格式如下所示,5904DTC1DTC2DTC3FFDTCstatus000XOBD-Snapshot010X Global-Snapshot020X Local-Snapshot

即一個文件中保存著控制器反饋的每個故障碼的凍結(jié)幀原始數(shù)據(jù)。

e9f0897c-4306-11ed-96c9-dac502259ad0.png

6、使用ProF腳本調(diào)用Windows控制臺程序ProFTools,解析故障碼及凍結(jié)幀數(shù)據(jù)并保存成文本文件。RUN(PORF_TOOL_FILE, ReadDtc2Txt...)

ea172f8c-4306-11ed-96c9-dac502259ad0.png

可打開查看每個過程的數(shù)據(jù)文件dtc.dat, cmd.dat, snapshot.dat, snapshot.txt以及ProFTools程序運(yùn)行的日志文件Logs

ea43beb2-4306-11ed-96c9-dac502259ad0.png

解決方案 - 技術(shù)細(xì)節(jié)

1、讀取故障碼存儲文件,將故障碼原始值轉(zhuǎn)換成標(biāo)準(zhǔn)的故障碼格式(Code categories);通過用戶配置文件定義檢索到故障碼對應(yīng)的局部凍結(jié)幀編號、故障碼中文描述。

ea698750-4306-11ed-96c9-dac502259ad0.png

通過故障狀態(tài)位判斷是否為當(dāng)前或歷史故障碼(bit0 testFailed)

eaa761a6-4306-11ed-96c9-dac502259ad0.png

故障碼狀態(tài)展示

eb1cc1f8-4306-11ed-96c9-dac502259ad0.png

2、提取凍結(jié)幀數(shù)據(jù)文件中單個故障碼凍結(jié)幀的有效數(shù)據(jù)(下圖中帶顏色填充的部分)

技術(shù)方案:兩個故障碼凍結(jié)幀正反饋幀頭之間即是凍結(jié)幀有效數(shù)據(jù)

5904DTC1DTC1status{ 有效數(shù)據(jù) }5904DTC2DTC2status

eb473366-4306-11ed-96c9-dac502259ad0.png

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)

用戶配置文件

e77965ec-4306-11ed-96c9-dac502259ad0.png

對應(yīng)凍結(jié)幀數(shù)據(jù)文件

eb9061a8-4306-11ed-96c9-dac502259ad0.png

其他

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)用思路,或許有更便捷的方法。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 控制器
    +關(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)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    立體智慧倉儲解決方案.#云計算

    解決方案智能設(shè)備
    學(xué)習(xí)電子知識
    發(fā)布于 :2022年10月06日 19:45:47

    #硬聲創(chuàng)作季 #FPGA FPGA-17-02 按鍵抖動現(xiàn)象介紹解決方案分析-1

    fpga解決方案
    水管工
    發(fā)布于 :2022年10月29日 02:13:54

    #硬聲創(chuàng)作季 #FPGA FPGA-17-02 按鍵抖動現(xiàn)象介紹解決方案分析-2

    fpga解決方案
    水管工
    發(fā)布于 :2022年10月29日 02:14:15

    #硬聲創(chuàng)作季 #FPGA FPGA-17-02 按鍵抖動現(xiàn)象介紹解決方案分析-3

    fpga解決方案
    水管工
    發(fā)布于 :2022年10月29日 02:14:41

    pyinstaller解決方案概述

    最近給運(yùn)維寫一個系統(tǒng)維護(hù)的python腳本,但是被告知生產(chǎn)環(huán)境有很多服務(wù)器沒有安裝python解釋器,于是在網(wǎng)上搜索多pyinstaller解決方案,本文簡單記錄之。
    發(fā)表于 07-12 06:24

    WCDMA基站的測試解決方案介紹

    兩種技術(shù)(WCDMA與CDMA2000)也將會走進(jìn)我們的生活,更加豐富國人對技術(shù)的選擇性。然而,決定網(wǎng)絡(luò)是否良好的一個關(guān)鍵因素便是其基站設(shè)備的射頻性能。因此如何對其測試,便成為當(dāng)前熱點(diǎn)。對于3G的這三種技術(shù),羅德與施瓦茨公司均可提供全面的測試解決方案。本文則主要介紹WCD
    發(fā)表于 07-24 06:33

    ftpbat的指令啟動腳本介紹

    ftp -n -s:"ftpdown.bat"指令啟動腳本
    發(fā)表于 11-04 08:50

    介紹一種汽車無線接入技術(shù)的解決方案

    本文介紹了一種汽車無線接入技術(shù)的解決方案
    發(fā)表于 05-12 06:40

    幾種驅(qū)動解決方案介紹和比較

    專用芯片的主要參數(shù)是什么?幾種驅(qū)動解決方案介紹和比較
    發(fā)表于 06-04 06:05

    介紹兩種MSP430的解決方案

    在MSP430上如何去使用ADPCM庫?介紹兩種MSP430的解決方案
    發(fā)表于 06-08 06:27

    Lua腳本簡單介紹

    Lua簡單介紹Lua[1]是一個小巧的腳本語言。作者是巴西人。該語言的設(shè)計目的是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴(kuò)展和定制功能。Lua腳本能夠非常easy的被C/C++ 代碼調(diào)用,也能夠
    發(fā)表于 08-20 06:37

    Lua腳本簡單介紹

    Lua簡單介紹Lua[1]是一個小巧的腳本語言。作者是巴西人。該語言的設(shè)計目的是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴(kuò)展和定制功能。Lua腳本能夠非常easy的被C/C++ 代碼調(diào)用,也能夠
    發(fā)表于 08-20 08:06

    解決方案系列課:HarmonyOS Connect解決方案整體介紹(第一期)

    介紹鴻蒙智聯(lián)解決方案的整體內(nèi)容,包括服務(wù)包、賦能套件、服務(wù)平臺與開發(fā)工具,助力伙伴快速低成本開發(fā)。
    發(fā)表于 11-30 11:33

    DTU腳本編程_本地采集腳本指令詳解

    前言:通過配置 DTU 的腳本指令實(shí)現(xiàn) DTU 定時自動采集,用戶只需知道外接儀表、無需再單獨(dú) 增加控制器 傳感器的采集流程,然后通過編寫腳本指令即可讓 DTU 按照用戶的流程自動采集
    的頭像 發(fā)表于 06-01 17:02 ?4854次閱讀
    DTU<b class='flag-5'>腳本</b>編程_本地采集<b class='flag-5'>腳本</b><b class='flag-5'>指令</b>詳解

    shell腳本基礎(chǔ)知識

    shell腳本是一個文件,里面存放的是特定格式的指令,系統(tǒng)可以使用腳本解析器翻譯或解析指令并執(zhí)行(無需編譯),shell腳本的本質(zhì)是shel
    的頭像 發(fā)表于 04-17 15:00 ?1048次閱讀