作者 | 小懶小編 | 吃不飽
在車載診斷中常用的診斷協(xié)議有ISO 14229等,在協(xié)議中主要定義了診斷請求、診斷響應的報文格式及ECU該如何處理診斷請求的應用。其中ISO 14229系列標準協(xié)議定義了用于行業(yè)內(nèi)診斷通信的需求規(guī)范,也就是UDS。UDS主要應用于OSI七層模型的第七層——應用層,它支持的汽車總線包括:CAN、LIN、FlexRay、Ethernet及K-LINK。UDS中的服務根據(jù)其功能分為6大類,共26種。其中包含的0x19服務(ReadDTCInformation)則是UDS中的重中之重。那么我們今天就一起進入到19服務中,感受其中的奧秘。
01服務介紹
19服務(ReadDTCInformation)用于讀取ECU的DTC故障信息,此服務允許客戶端從服務器讀取診斷故障代碼(DTC)的相關(guān)信息。此服務包含28個子服務(Subfunction),常用的5種子服務如下:
0x01
reportNumberOfDTCByStatusMask(讀取客戶端定義狀態(tài)掩碼匹配的DTC數(shù)量)
0x02
reportDTCByStatusMask(讀取客戶端定義狀態(tài)掩碼匹配的DTC)
0x04
reportDTCSnapshotRecordByDTCNumber(檢索客戶端定義DTC掩碼的快照數(shù)據(jù))
0x06
reportDTCExtDataRecordByDTCNumber(讀取某個DTC及其相關(guān)的擴展數(shù)據(jù),擴展數(shù)據(jù)包括DTC狀態(tài)、優(yōu)先級、發(fā)生次數(shù)、時間戳、里程等。)
0x0A
reportSupportedDTC(讀取ECU支持的所有DTC的狀態(tài),包含支持的各個DTC編號以及相關(guān)狀態(tài))
今天主要解析19服務中的04子服務,也就是檢索客戶端定義DTC的快照號對應的快照記錄數(shù)據(jù),在AUTOSAR中也叫凍結(jié)幀。
0204子服務介紹
快照數(shù)據(jù)概念介紹
前面講19服務常用子服務的時候,提到了Subfunction為04的子服務,使用04子服務對服務端進行請求,可以獲取DTC發(fā)生時記錄的快照數(shù)據(jù)。那04子服務是如何獲取快照數(shù)據(jù)的呢?首先我們需要理解什么是快照數(shù)據(jù)。從ISO 14229-1協(xié)議可知,快照數(shù)據(jù)為發(fā)生某一故障時記錄的DTC的電壓、發(fā)動機轉(zhuǎn)速、時間戳等,從而使工程師在ECU出現(xiàn)故障時能及時了解車輛的歷史和實時故障信息。
報文格式介紹
接下來通過介紹19 04子服務請求和響應的報文格式,分析報文中各個字節(jié)的相關(guān)定義。圖1 請求格式
從圖1中可知,19 04的請求報文包括四個部分,其中服務ID和Subfunction就不用過多解釋了。DTCMaskRecord表示某個故障的DTC,當系統(tǒng)檢測到一個故障發(fā)生時,則會存儲其對應的故障數(shù)值,這個故障數(shù)值就是DTC。通過讀取DTC可知一個故障發(fā)生時的具體位置以及原因和類型。
通常UDS中DTC占3個字節(jié),OBD Ⅱ占2個字節(jié),在ISO 15031-6中定義的DTC由兩個字節(jié)根基和一個字節(jié)的故障類型組成。我們通常用到的DTC格式都是由ISO 15031-6中定義的。圖2是ISO 15031-6中定義的DTC的兩個字節(jié)根基,圖中很詳細地解釋了每一個Bit的含義。
圖2
SnapshotRecordNumber需要提前定義,可以有多個。如SnapshotRecordNumber設置為FF,則表示讀取所有的快照數(shù)據(jù)組。圖3 響應格式
圖3為響應報文格式,當使用19 04對ECU進行請求時,ECU給出的肯定響應的報文格式由七部分組成。此時的DTCAndStatusRecord由三個字節(jié)的DTC和一個字節(jié)的StatusOfDTC組成,StatusOfDTC表示DTC的狀態(tài)。假設現(xiàn)在的DTC狀態(tài)為0x09,則Bit0和Bit3置1。如某個DTC一直存在并且確認,則在ECU響應的報文中的StatusOfDTC為0x09,如圖4。圖4
SnapshotRecordNumber這個字節(jié)表示DTC快照記錄的組號;
DTCSnapshotRecordNumberOfldentifiers表示快照DID的個數(shù),占一個字節(jié);Dataldentifier這部分由兩個字節(jié)組成,表示快照數(shù)據(jù)對應的DID,DTCSnapshotRecord表示快照DID對應的具體數(shù)據(jù)。
實例分析
前面介紹了19 04子服務請求和響應的報文格式。掌握了理論知識,那么現(xiàn)在我們就到實例中去具體分析,從而加深對19 04子服務如何讀取快照數(shù)據(jù)的過程的理解。
客戶端對服務端發(fā)起一個讀取DTC快照的請求。當前DTC為0x123456,可以假設這是一個轉(zhuǎn)向燈的故障碼,0x02為快照記錄組號。請求報文如圖5所示。
圖5
服務端對客戶端回復了一個肯定響應。從圖6中可知,當前的DTC狀態(tài)掩碼為0x24,0x01表示只有一個快照DID,當然也可以包含多個快照DID,可以分別表示車速、電壓等。如果有兩個快照DID,此時DTCSnapshotRecordNumberOfldentifiers這個字節(jié)為0x02。
快照DID為0x4711,如果此時記錄的是轉(zhuǎn)向燈故障時當前車速的數(shù)據(jù),那么這個0x4711則表示此時快照數(shù)據(jù)的名稱——車速。DTCSnapshotRecord為具體的快照數(shù)據(jù)0xA666075020,以16進制數(shù)值表示,通過數(shù)據(jù)類型解析后就可以得到具體的車速等信息。圖6
在CANdelaStudio中如何設置
接下來我們看看在CANdelaStudio中如何設置19 04服務的請求及響應參數(shù),步驟如下:
①配置DTC信息
在這個界面如圖7,可以進行“DTC Code”的新增與刪減,點擊現(xiàn)有的信息可進行編輯改動;
圖7
②設置服務
在左側(cè)目錄切換到“Base Variant”下的“Supported Diagnostic Classes”,點擊“Fault Memory”;
圖8
點擊圖9上面標簽頁中的“DTCs”,然后會跳轉(zhuǎn)到圖9所示界面,將我們前面配置的DTC信息更新到這里來,如圖9所示,當前DTC為0x123456。圖9
點擊圖10上面標簽頁中的“Snapshot Records”,然后會跳轉(zhuǎn)到圖10所示界面,在這里設置快照記錄組號。圖10
③設置肯定響應參數(shù)
首先根據(jù)客戶的需求設置ECU支持的DTC狀態(tài)位DTCStatus,如圖11;
圖11
然后在“DTCs”頁面選中名為0x123456的DTC,在“Individual for DTC P123456”下設置快照數(shù)據(jù)。例如圖12中現(xiàn)在定義的快照DID為4711,具體的快照數(shù)據(jù)是當前車輛的Wheel Speed FR等。快照DID可以在“DIDs”中提前定義。到這里,在CANdelaStudio中關(guān)于19 04服務的請求及響應參數(shù)就設置完成了。(軟件界面截圖來源于CANdelaStudio 16.0版本)圖12
03總結(jié)
19 04服務的目的是讀取對應DTC的快照數(shù)據(jù),從而使工程師在進行診斷時更加快速了解故障發(fā)生時的車輛狀況信息。除此之外,19服務還有其他4個常用的Subfunction,大家可以根據(jù)ISO 14229-1中的相關(guān)解釋和實例進行知識擴展。北匯信息專注于汽車電子網(wǎng)絡通信、診斷刷寫、邏輯功能測試開發(fā)服務,期待進一步溝通交流、共享合作的機會。參考文檔:ISO 14229-1(2020)注:文中部分圖片來源于Vector.
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7158瀏覽量
89665 -
服務
+關(guān)注
關(guān)注
0文章
75瀏覽量
18543
發(fā)布評論請先 登錄
相關(guān)推薦
云硬盤掛載到新服務器,怎么恢復數(shù)據(jù)?
服務器數(shù)據(jù)恢復—V7000存儲NTFS文件系統(tǒng)數(shù)據(jù)恢復案例
![<b class='flag-5'>服務</b>器<b class='flag-5'>數(shù)據(jù)</b>恢復—V7000存儲NTFS文件系統(tǒng)<b class='flag-5'>數(shù)據(jù)</b>恢復案例](https://file1.elecfans.com/web2/M00/8D/64/wKgaomS6HOGAa4cnAASobP8Fp0c848.png)
飛凌嵌入式ElfBoard ELF 1板卡-常見網(wǎng)絡服務搭建之SSH服務搭建
飛凌嵌入式ElfBoard ELF 1板卡-常見網(wǎng)絡服務搭建之SSH服務搭建
labview樹形控件讀取子文本數(shù)據(jù)(child text)
服務器數(shù)據(jù)恢復—異常斷電導致虛擬機配置文件丟失的數(shù)據(jù)恢復案例
![<b class='flag-5'>服務</b>器<b class='flag-5'>數(shù)據(jù)</b>恢復—異常斷電導致虛擬機配置文件丟失的<b class='flag-5'>數(shù)據(jù)</b>恢復案例](https://file.elecfans.com/web2/M00/A8/14/pYYBAGRvGYiADFTzAAU7mrFVkPI702.png)
藍牙中開啟自定義服務之后,添加了一個子服務,怎么添加第二子服務???
服務器數(shù)據(jù)恢復—異常斷電導致VMware虛擬機無法啟動的數(shù)據(jù)恢復案例
![<b class='flag-5'>服務</b>器<b class='flag-5'>數(shù)據(jù)</b>恢復—異常斷電導致VMware虛擬機無法啟動的<b class='flag-5'>數(shù)據(jù)</b>恢復案例](https://file1.elecfans.com/web2/M00/EA/FA/wKgaomZWoICAMtllAAGZLb4FUTE216.png)
服務器數(shù)據(jù)恢復—EVA存儲異常斷電后出現(xiàn)故障的數(shù)據(jù)恢復方案
Aurix TC364D是否可以通過某些UDS服務停用HSM?
服務器數(shù)據(jù)恢復—VMware虛擬機無法啟動的數(shù)據(jù)恢復案例
服務器數(shù)據(jù)恢復—分享幾個服務器數(shù)據(jù)恢復的案例
虛擬機數(shù)據(jù)恢復-虛擬機還原快照原理和誤還原快照的數(shù)據(jù)恢復方案
![虛擬機<b class='flag-5'>數(shù)據(jù)</b>恢復-虛擬機還原<b class='flag-5'>快照</b>原理和誤還原<b class='flag-5'>快照</b>的<b class='flag-5'>數(shù)據(jù)</b>恢復方案](https://file1.elecfans.com/web2/M00/C2/34/wKgaomXdXNOAB5RGAAF79aoW9Ew715.png)
評論