• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于J1939協(xié)議的重型車(chē)OBD診斷儀軟件設(shè)計(jì)

      2020-10-21 04:43:45黃名云
      汽車(chē)實(shí)用技術(shù) 2020年11期
      關(guān)鍵詞:診斷儀字節(jié)報(bào)文

      黃名云

      摘 要:J1939協(xié)議是國(guó)標(biāo)規(guī)定的柴油車(chē)的OBD協(xié)議,外部診斷設(shè)備要與車(chē)輛通信,必須滿足J1939協(xié)議的要求。文章對(duì)一種基于J1939協(xié)議的診斷儀的軟件設(shè)計(jì)進(jìn)行了說(shuō)明。分析了J1939協(xié)議報(bào)文的特點(diǎn),對(duì)請(qǐng)求報(bào)文的發(fā)送,廣播報(bào)文的接收,多幀報(bào)文的傳輸協(xié)議,故障碼的解析等進(jìn)行了實(shí)例說(shuō)明,并設(shè)計(jì)了整個(gè)程序處理流程。實(shí)際使用中能正確讀取車(chē)輛數(shù)據(jù),實(shí)時(shí)性好。關(guān)鍵字:J1939協(xié)議;OBD;傳輸協(xié)議;故障碼中圖分類(lèi)號(hào):G255.54 ?文獻(xiàn)標(biāo)識(shí)碼:B ?文章編號(hào):1671-7988(2020)11-42-04

      Abstract:?J1939 protocol is the OBD protocol of diesel vehicle stipulated by the national standard. If the external diagnostic equipment wants to communicate with the vehicle, it must meet the requirements of J1939 protocol. In this paper, I described the software design of an OBD scanner based on J1939 protocol. I analyzed the characteristics of J1939 protocol message, illustrated the sending of request message, the receiving of broadcast message, the transmission protocol of multi-frame messages, the analysis of DTC, and designed the whole program processing flow. In practice, it can read the vehicle data correctly and has a good real-time performance.Keywords: J1939 Protocol; OBD; Transmission Protocol; DTCCLC NO.:?G255.54 ?Document Code: B ?Article ID: 1671-7988(2020)11-42-04

      引言

      GB18285-2018和GB3847-2018分別對(duì)汽油車(chē)和柴油車(chē)增加了OBD檢查的內(nèi)容,適用于新車(chē)下線,注冊(cè)登記及在用車(chē)檢驗(yàn),標(biāo)準(zhǔn)規(guī)定,若OBD檢查不合格,判定排放檢驗(yàn)結(jié)果不合格[1][2]。這說(shuō)明我國(guó)已將車(chē)載OBD技術(shù)作為機(jī)動(dòng)車(chē)尾氣排放控制的重要手段。作為OBD技術(shù)的基礎(chǔ),診斷通信協(xié)議是關(guān)鍵的一環(huán)。目前,輕型車(chē)使用比較多的是ISO 14230和ISO 15765,即基于K線的KWP2000和基于CAN總線的診斷協(xié)議。重型車(chē)OBD技術(shù)起步較晚,由于ISO 15765經(jīng)過(guò)多年的發(fā)展和應(yīng)用已非常完善和成熟,因此也被廣泛應(yīng)用到重型車(chē)中。國(guó)家環(huán)境保護(hù)部發(fā)布的《HJ 437-2008車(chē)用壓燃式、氣體燃料點(diǎn)燃式發(fā)動(dòng)機(jī)與汽車(chē)車(chē)載診斷(OBD)系統(tǒng)技術(shù)要求》,允許生產(chǎn)商可以自由選擇ISO15765和SAE J1939[3]。實(shí)測(cè)中東風(fēng)天錦、天龍、江鈴凱銳、帥鈴等車(chē)型的OBD系統(tǒng)都是采用SAE J1939協(xié)議。

      1 J1939協(xié)議介紹

      SAE J1939協(xié)議是美國(guó)汽車(chē)工程師協(xié)會(huì)(SAE)提出的基于CAN2.0B的高層網(wǎng)絡(luò)通信協(xié)議,用于為中重型道路車(chē)輛上電子部件間的通訊提供標(biāo)準(zhǔn)的體系結(jié)構(gòu)[4]。協(xié)議不但規(guī)定了ECU之間如何通信,也包括了故障診斷。SAE J1939網(wǎng)絡(luò)遵循7層OSI結(jié)構(gòu),用不同的文件描述每個(gè)實(shí)現(xiàn)的層,表1列出了SAE J1939協(xié)議的構(gòu)成。

      SAE J1939-11的物理層要求由CAN控制器完成,無(wú)需操心。本文中的診斷儀設(shè)計(jì)主要參照SAE J939-13的技術(shù)要求來(lái)設(shè)計(jì)診斷接口,參照SAE J1939-21數(shù)據(jù)鏈路層來(lái)設(shè)計(jì)報(bào)文的通信方式,參照SAE J939-71應(yīng)用層來(lái)解析實(shí)時(shí)數(shù)據(jù)流,參照SAE J1939-73來(lái)讀取故障碼,凍結(jié)幀等與排放有關(guān)的故障信息。下面分別對(duì)這幾部分進(jìn)行說(shuō)明。

      2 診斷接口及地址定義

      SAE J939-13中定義的診斷接口為9針圓形接口,而機(jī)動(dòng)車(chē)檢測(cè)站對(duì)2018年7月1日以后生產(chǎn)的柴油車(chē)檢測(cè)中,OBD采用SAE J1939協(xié)議的車(chē)輛,其診斷接口使用的也是ISO15031-3規(guī)定的標(biāo)準(zhǔn)16針梯形接口,尚未碰到9針圓形接口。因此備用一個(gè)9針轉(zhuǎn)16針的轉(zhuǎn)換器以備不時(shí)之需。

      SAE J1939-81推薦發(fā)動(dòng)機(jī)模塊的地址為0x00,外部診斷儀的地址為0xF9。本診斷儀使用推薦地址。

      3 協(xié)議數(shù)據(jù)單元(PDU)

      SAE J1939-21數(shù)據(jù)鏈路層采用的是CAN2.0擴(kuò)展幀29位ID,通訊速率為250K ,并對(duì)29位ID進(jìn)行了重新分配,將其分為:優(yōu)先級(jí)(P)、保留位(R)、數(shù)據(jù)頁(yè)(DP)、協(xié)議數(shù)據(jù)單元(PDU)格式(PF)、PDU特定域(PS)和源地址(SA)[6]。如下圖所示。將CAN報(bào)文幀格式封裝成PDU協(xié)議格式進(jìn)行傳輸。

      其中R、DP、PF、PS組成了參數(shù)組(PGN),PF<240時(shí),協(xié)議數(shù)據(jù)單元為PDU1格式,此時(shí)PS代表目標(biāo)地址,PGN的低字節(jié)置0,保留位始終為0;PF≥240時(shí),協(xié)議數(shù)據(jù)單元為PDU2格式,此時(shí)PS代表組擴(kuò)展GE,它是PGN的低字節(jié)。PDU1格式用于發(fā)送包含一特定目的地址的報(bào)文,當(dāng)目的地址為0xFF時(shí),代表是全局地址;PDU2格式則只能用于廣播發(fā)送[6]。

      4?報(bào)文請(qǐng)求和廣播接收

      J1939協(xié)議的消息類(lèi)型有5種:命令、請(qǐng)求、廣播/響應(yīng)、確認(rèn)、組功能[6]。診斷儀要想從車(chē)輛獲取與排放相關(guān)的信息,主要處理兩種類(lèi)型的消息,即請(qǐng)求和廣播。請(qǐng)求需要診斷儀向發(fā)動(dòng)機(jī)模塊發(fā)送請(qǐng)求報(bào)文才能獲得相應(yīng)的信息,而廣播則是發(fā)動(dòng)機(jī)模塊按一定的時(shí)間間隔主動(dòng)往總線上發(fā)送的消息,如當(dāng)前故障碼即為發(fā)動(dòng)機(jī)模塊每隔一秒便在總線上廣播一次,對(duì)于這類(lèi)消息只需設(shè)定好濾波器直接接收就好。表2分別列出了部分需要請(qǐng)求,及廣播接收的消息。

      4.1?請(qǐng)求類(lèi)型消息的實(shí)現(xiàn)

      請(qǐng)求可以向特定目的地址請(qǐng)求,也可向全局范圍內(nèi)請(qǐng)求,請(qǐng)求報(bào)文的參數(shù)組編號(hào)(PGN)為0x00EA00(59904),優(yōu)先級(jí)為6,報(bào)文定義如圖2所示[6]。

      例:診斷儀(地址為0xF9)向發(fā)動(dòng)機(jī)模塊(地址為0x00)請(qǐng)求就緒狀態(tài)信息(PGN為65230(FECE)),則發(fā)送的請(qǐng)求報(bào)文為:18EA00F9 ?CE FE 00 FF FF FF FF FF

      其中診斷儀為源地址,發(fā)動(dòng)機(jī)為目標(biāo)地址,數(shù)據(jù)域?yàn)橐?qǐng)求的PGN,低字節(jié)先發(fā)送,高字節(jié)后發(fā)送。

      發(fā)動(dòng)機(jī)模塊回復(fù)的消息格式為:18FECE00 ?01 04 0F 06 00 08 00,如圖3。

      若250ms內(nèi)沒(méi)收到任何消息,則代表無(wú)應(yīng)答,ECU不支持對(duì)應(yīng)的PGN。

      4.2?廣播消息的接收

      對(duì)于主動(dòng)廣播的消息,需設(shè)置CAN屏蔽濾波器,接收對(duì)應(yīng)的PGN。

      例:可疑參數(shù)編號(hào)(SPN)為190的轉(zhuǎn)速信息,所屬參數(shù)組為61444(F00416),實(shí)測(cè)發(fā)動(dòng)機(jī)模塊每隔20ms往外發(fā)送一幀消息。

      若要接收這廣播消息,可先關(guān)閉所有濾波器,不接收任何消息,并清空接收緩沖區(qū),然后精確設(shè)置濾波器只接收PGN為61444的消息。每接收一幀消息便關(guān)閉濾波器,進(jìn)入數(shù)據(jù)處理階段,處理完數(shù)據(jù)再打開(kāi)濾波器。

      若等待250ms無(wú)任何消息,則代表總線上無(wú)這類(lèi)消息傳送。

      5?傳輸協(xié)議

      由于CAN報(bào)文的數(shù)據(jù)域最多為8個(gè)字節(jié),若一個(gè)PGN傳送的消息的大于8個(gè)字節(jié),則需要啟用傳輸協(xié)議。傳輸協(xié)議分連接管理和多包消息廣播。連接管理是向特定目的地址傳輸多幀數(shù)據(jù)時(shí)使用,即發(fā)送者請(qǐng)求發(fā)送(RTS)一個(gè)分段報(bào)文,其包含有多少字節(jié)及包數(shù),接收者需響應(yīng)準(zhǔn)備發(fā)送(CTS)報(bào)文,告訴發(fā)送者其能接收的包數(shù)和想要從第幾包開(kāi)始接收。建立這樣一個(gè)握手連接后發(fā)送者方開(kāi)始傳輸數(shù)據(jù);多包消息廣播則不需要建立連接,由發(fā)送者發(fā)送一幀廣播公告消息(BAM),通知所有節(jié)點(diǎn)要廣播一條長(zhǎng)消息,這條公告消息包含了要發(fā)送消息的字節(jié)數(shù)和參數(shù)組,接著便開(kāi)始數(shù)據(jù)傳輸[6]。兩種傳輸協(xié)議詳情可參照文檔J1939-21相關(guān)部分說(shuō)明。下面舉一幀連接管理消息的實(shí)例進(jìn)行說(shuō)明。

      設(shè)診斷儀(地址0xF9)為?A 節(jié)點(diǎn),發(fā)動(dòng)機(jī)模塊(地址0x00)為?B 節(jié)點(diǎn),A向B請(qǐng)求歷史故障碼信息,PGN= 65227(00FECB16),A與B之間消息傳送如表3所示。

      6?故障碼

      故障碼在J1939-73文檔中定義,由4個(gè)字節(jié)組成,包含SPN、FMI、CM和OC四個(gè)部分。SPN是可疑參數(shù)編號(hào),占19bits,代表診斷項(xiàng)目;FMI是故障模式標(biāo)志,定義了故障類(lèi)型,占5bits,CM是可疑參數(shù)編號(hào)的轉(zhuǎn)化方式,占1bit,SPN有4種轉(zhuǎn)化方式,取值1表示按照方案1,2,3進(jìn)行轉(zhuǎn)換,詳情見(jiàn)J1939-73文檔。取值0表示按照方案4進(jìn)行轉(zhuǎn)換,即19位的SPN均采用英特爾格式。CM推薦取值為0;OC是故障發(fā)生次數(shù),占7bits。舉例:

      SPN:1208=4B816=00000000100101110002(19位)

      FMI:3=316=000112(5位)

      OC:10=A16=00010102(7位)

      CM:016=02(1位)

      因CM=0,所以按方案4轉(zhuǎn)換,其結(jié)果如表4所示[7]。

      表3得到的故障碼信息有效數(shù)據(jù)為18個(gè)字節(jié),前兩個(gè)字節(jié)為故障燈信息,由于一個(gè)故障占4個(gè)字節(jié),所以剩下16個(gè)字節(jié)包含4個(gè)故障碼,SPN按照表4轉(zhuǎn)化方式,提取一個(gè)DTC,其C語(yǔ)言代碼實(shí)現(xiàn)如下:

      u32 Temp=0x0000;

      Temp =(Temp|(CANRxBuf.Data[4]>>5))<<8;//提取19位SPN的最高3位

      Temp = (Temp|CANRxBuf.Data[3])<<8;//提取中8位

      Temp = Temp|CANRxBuf.Data[2]; //19位SPN提取完畢

      DTC_SPN =Temp;

      DTC_FMI= CANRxBuf.Data[4]&0x1f;

      DTC_OC = CANRxBuf.Data[5]&0x7f;

      7?軟件設(shè)計(jì)流程

      綜合J1939報(bào)文特點(diǎn),OBD診斷儀需要發(fā)送請(qǐng)求消息,接受廣播消息。接收到的消息又有單幀消息和多幀消息之分,對(duì)于接收到的RTS消息需要進(jìn)行CTS連接管理,每次消息的接收都需要設(shè)置屏蔽濾波器。消息接收采用中斷模式,每接收到一幀消息便開(kāi)始計(jì)時(shí),若超過(guò)規(guī)定時(shí)間接收中斷再無(wú)消息傳來(lái),代表報(bào)文已接收完成,之后進(jìn)入數(shù)據(jù)處理階段,數(shù)據(jù)流的解析參照文檔J1939-71,故障碼,凍結(jié)幀等與排放相關(guān)的數(shù)據(jù)解析參照文檔J1939-73。軟件程序設(shè)計(jì)流程如圖4所示。

      8?結(jié)束語(yǔ)

      本文所設(shè)計(jì)的OBD診斷儀已經(jīng)在機(jī)動(dòng)車(chē)檢測(cè)站投入使用,能夠滿足國(guó)標(biāo)對(duì)車(chē)輛OBD檢查的要求,并且響應(yīng)迅速,實(shí)時(shí)性好。J1939協(xié)議在重型柴油車(chē)國(guó)五及國(guó)六車(chē)輛中是國(guó)標(biāo)規(guī)定使用的OBD協(xié)議,理解J1939協(xié)議對(duì)開(kāi)發(fā)車(chē)載OBD系統(tǒng)及OBD外接設(shè)備都是極其重要的一環(huán),也是車(chē)聯(lián)網(wǎng)的

      基礎(chǔ)。本文對(duì)J1939協(xié)議的數(shù)據(jù)傳輸格式,傳輸協(xié)議,故障碼等難以理解的部分進(jìn)行了實(shí)例說(shuō)明,并給出了設(shè)計(jì)框架及C語(yǔ)言程序的實(shí)現(xiàn),以供學(xué)習(xí)者參考。

      參考文獻(xiàn)

      [1] GB 18285-2018,汽油車(chē)污染物排放限值及測(cè)量方法(雙怠速法及簡(jiǎn)易工況法)[S].2018.

      [2] GB 3847-2018,柴油車(chē)污染物排放限值及測(cè)量方法(自由加速法及加載減速法)[S].2018.

      [3] HJ 437-2008,車(chē)用壓燃式、氣體燃料點(diǎn)燃式發(fā)動(dòng)機(jī)與汽車(chē)車(chē)載診斷(OBD)系統(tǒng)技術(shù)要[S].2008.

      [4] 周良潤(rùn).對(duì)當(dāng)前J1939協(xié)議的汽車(chē)信息采集系統(tǒng)研討[J].科教導(dǎo)刊-電子版(上旬),2016,(8):173.

      [5] SAE J1939,Recommended Practice for a Serial Control and Comm?-unications Vehicle Network[S].2005.

      [6] SAE J1939-21,Data Link Layer[S].2006.

      [7] SAE J1939-73,Application Layer-Diagnostics[S].2015.

      猜你喜歡
      診斷儀字節(jié)報(bào)文
      基于J1939 協(xié)議多包報(bào)文的時(shí)序研究及應(yīng)用
      No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
      日立EUB 8500E彩色超聲診斷儀的維修與升級(jí)
      CTCS-2級(jí)報(bào)文數(shù)據(jù)管理需求分析和實(shí)現(xiàn)
      淺析反駁類(lèi)報(bào)文要點(diǎn)
      No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
      簡(jiǎn)談MC7字節(jié)碼
      ATS與列車(chē)通信報(bào)文分析
      馬純棟:維修技術(shù)人員應(yīng)提高診斷儀的利用率
      蔡鵬:優(yōu)質(zhì)診斷儀為現(xiàn)代汽修打開(kāi)便利之門(mén)
      香格里拉县| 平邑县| 突泉县| 沁源县| 广平县| 高邑县| 祁连县| 西和县| 海兴县| 万全县| 玛沁县| 木兰县| 南涧| 黄骅市| 崇礼县| 高雄市| 徐汇区| 安阳县| 左权县| 凤庆县| 阳泉市| 且末县| 即墨市| 腾冲县| 安国市| 大冶市| 永清县| 项城市| 定远县| 称多县| 凯里市| 饶河县| 屯留县| 濉溪县| 鹰潭市| 尼木县| 高陵县| 芷江| 遂昌县| 神农架林区| 响水县|