貨車車聯(lián)網(wǎng) J1939 QBD61 QBD66 原TDA61/66 在卡車貨車工程車商用車大客車的應(yīng)用.貨車OBD芯片的J1939協(xié)議開發(fā) J1939 協(xié)議簡介 J1939是一個廣泛應(yīng)用在重型汽車,卡車,工程車和大客車商務(wù)車的CAN協(xié)議。大型車隊各種商務(wù)車輛的管理,貨車大客車的時時監(jiān)控調(diào)度等等這些商用OBD應(yīng)用使得J1939有著比較廣泛的應(yīng)用領(lǐng)域。 深圳市芯方案電子科技公司開發(fā)的QBD芯片(QBD61,QBD66等)支持了J1939 ECU和診斷設(shè)備的絕大部分功能,QBD66默認為自動版,使用者無需過多專業(yè)知識,即可讀取J1939 貨車商用車的總線輸出,并以車速,轉(zhuǎn)速的數(shù)值直接顯示。 QBD芯片還可以支持J1939的通訊協(xié)議的不同波特率(不同波特率需要改變可編程參數(shù)設(shè)置)基本可以與市面上絕大部分的商用車工程車貨車通訊。但現(xiàn)在很多廠商根據(jù)J1939協(xié)議,自定義了很多應(yīng)用層,所以在使用過程中可能會發(fā)現(xiàn)有異,F(xiàn)象,請反饋給我們,我們會盡快的修正。QBD芯片內(nèi)部有方便的升級功能。QBD芯片自定商用車OBD指令用戶無需了解J1939協(xié)議,即可直接獲取貨車,商用車ECU的各個參數(shù)。QBD芯片還拓展更多高級指令,用戶可以直接得到當前車輛的油耗,里程。 QBD芯片J1939選型 QBD61 QBD66分為自動版 手動版兩個版本 一般61是手動版,66自動版。 所謂自動版 手動版,簡單來說是指上位機獲取OBD數(shù)據(jù)的方式。 手動版--- 手動進行車輛數(shù)據(jù)的查詢,靈活查詢各種OBD數(shù)據(jù)參數(shù),適用于那些低頻,且專業(yè)診斷的用戶,例年檢,維修,和各種特定場景應(yīng)用的客戶。 自動版--- 自動實時上傳車輛的常用數(shù)據(jù)給上位機,特定情況下也可以下發(fā)指令類似手動版的方式進行查詢(但是這個不能頻繁手動發(fā)送,且響應(yīng)速度會稍延遲)。適用于 車聯(lián)網(wǎng),車隊監(jiān)控,車輛運行狀態(tài)監(jiān)控的車聯(lián)網(wǎng)應(yīng)用。 需要OBD數(shù)據(jù)高頻,且OBD數(shù)據(jù)較固定的客戶。 QBD61芯片J1939功能介紹 依照SAE J1939—81診斷型工具的規(guī)范 QBD芯片有以下功能:QBD61默認為手動 建議熟悉操作過汽車協(xié)議開發(fā)的專業(yè)人員開發(fā)使用。 一、基本協(xié)議通訊功能 1、 在使用一個源地址前,發(fā)出有效的地址申明(可選) 2、 在接收到地址聲明后QBD芯片可發(fā)送地址聲明或不可聲明源地址消息。 3、 名字域可編程(修改PP編程參數(shù))。 4、 源地址可更換。 5、 QBD芯片能自動接收J1939定義兩種多包數(shù)據(jù),全局的廣播BAM消息及特定地址的 RTS/CTS的多包消息,并能同時接收多個ECU同時發(fā)出的多個BAM數(shù)據(jù)消息和一個RTS/CTS多包數(shù)據(jù)。 二、高級擴展應(yīng)用指令 1、直接數(shù)據(jù)輸出,各種常用數(shù)據(jù)無需二次轉(zhuǎn)換,直接以十進制ASCII碼回傳汽車各參數(shù)(如轉(zhuǎn)速,車速,水溫等等) 2、高級數(shù)據(jù)指令,如油耗,里程,還支持多參數(shù)一次性讀取。 三、標準指令舉例(客戶亦無須了解J1939協(xié)議直接使用QBD指令讀取各個參數(shù)) J1939(默認)的波特率根據(jù)J1939—11定義為250kbps, 也許有的應(yīng)用使用其它的波特率,你可改變可編程參數(shù)PP 2B實現(xiàn)。 J1939協(xié)議定義, J1939消息頭為29位ID,數(shù)據(jù)域長度最多8位(ISO15765是固定8位長的)診斷方法及其實際的數(shù)據(jù)傳輸鏈路層請查閱SAE J1939—73和SAE J1939—21 QBD芯片發(fā)送J1939消息的方法和標準的OBD2協(xié)議一樣 ,頭格式數(shù)據(jù)QBD芯片能定義并自動添加到消息中。 例:如你想請求ECU發(fā)動機溫度的信息,J1939用PGN 00 FE EE參數(shù)組傳輸這個信息。你只要向QBD芯片發(fā)出: >EE FE 00 的OBD 命令 (高字節(jié)在后)。 QBD芯片會自動加上附加的頭格式字節(jié),并自動配置接收正確的響應(yīng)消息,QBD芯片默認的頭格式字節(jié)值為18 EA FF F9 表示為OBD診斷工具的全局請求: 18是優(yōu)先級和數(shù)據(jù)頁 EA為請求數(shù)據(jù)的PDF格式 FF為全局地址 F9為J1939定義的診斷工具源地址 改變頭格式字節(jié)用AT SH xx xx xx 命令改變,高5位用AT CP xx設(shè)置。 QBD芯片的默認值對請求的響應(yīng)消息可能是單個數(shù)據(jù)楨或多個數(shù)據(jù)楨(多包消息),QBD芯片都能正確返回數(shù)據(jù)并顯示。如果是多包消息,QBD芯片自動為你處理應(yīng)答內(nèi)容,你不用關(guān)心它如何在接收多包消息時是如何應(yīng)答的。J1939定義了兩種格式的多包消息,一種是全局的BAM廣播消息,還有一種是一對一的RTS/CTS控制多包消息,QBD芯片能同時接收多個ECU發(fā)出個多個BAM消息及一個RTS/CTS消息,完全符合J1939要求。 接收RTS/CTS多包消息,QBD芯片自動發(fā)送CTS控制消息, 這個和ISO15765不同,QBD芯片在用CFC0關(guān)閉時,不影響J1939協(xié)議時QBD芯片的CTS發(fā)送。對于BAM多包消息, J1939定義不用發(fā)送控制消息,QBD芯片能自動接收并返回給PC。CAF0及CAF1只是影響J1939返回數(shù)據(jù)的顯示格式,在QBD芯片發(fā)送時不影響。 當CAF1時J1939與ISO15765一樣,顯示數(shù)據(jù)總長度及消息包的編號,CAF0時僅返回全部的數(shù)據(jù)域的數(shù)據(jù)。ATH1打開頭格式顯示時返回整個消息包的內(nèi)容。 SAE J1939預(yù)定義了一些診斷模式, 第一個是診斷模式DM1。 在J1939的CAN網(wǎng)絡(luò)系統(tǒng)中,診斷模式(DM1)消息周期性的在總線上廣播(如果有故障碼)。如果想監(jiān)聽總線上的DM1消息,只要簡單地使用內(nèi)部命令DM1: >AT DM1 QBD芯片將會在收到DM1消息時把信息的內(nèi)容返回給PC。 當想監(jiān)聽其他內(nèi)容的診斷消息時,只要用AT MP 命令用參數(shù)組編號來監(jiān)聽,。 例如:DM2的參數(shù)組編號為65227即16進制數(shù)00 FE CB ,QBD芯片只要輸入后4位數(shù),前面兩位默認值為”00” ,所以監(jiān)聽DM2診斷消息則輸入: >AT MP FE CB QBD芯片發(fā)出J1939的OBD命令時根據(jù)命令的字節(jié)數(shù)來分成兩種類型的接收方法,當發(fā)送的命令為三個字節(jié)長度時,QBD芯片認為這是個PGN(參數(shù)據(jù)編號)請求,例:前面的“>EE FE 00” OBD命令。QBD芯片將只接收該PGM消息的響應(yīng)。如果不是3字節(jié)長,QBD芯片作為一般的命令處理,將只接收發(fā)送給目標地址為QBD芯片源地址(F9)的消息。 J1939的地址、名字及申明 QBD芯片源地址默認為OBD標準地址F9,可通過PP 0E更改其默認值。QBD芯片的J1939名字由8字節(jié)組成的64位,可通過改變PP 19 1A …20的內(nèi)容更改。 QBD芯片可用 AT ADC1/AT ADC0內(nèi)部命令設(shè)定是否進行地址申明,默認為QBD芯片不進行地址申明。注:根據(jù)J1939要求在使用源地址前必須進行原地址申明。 J1939定義,控制應(yīng)用程序CA(診斷儀)的名字是個64位標識符,由十個域組成,其中6個域由J1939標準定義的給出,其余4個域由網(wǎng)絡(luò)特性及汽車架構(gòu)給出或者由生產(chǎn)商給出。 QBD芯片的設(shè)定名字或地址時必須附給J1939定義,否則可能會引起總線地址沖突。 64位名字格式組成如下 J1939的多包消息傳送 1、RTS/CTS多包消息 2、全局廣播的BAM多包消息 QBD芯片會自動處理以上兩種多包消息。 QBD66芯片J1939功能介紹 依照SAE J1939—的規(guī)范 QBD66芯片有以下功能:QBD66默認為自動版,使用群體無需過多專業(yè)知識,即可讀取J1939 貨車商用車的總線輸出,并以車速,轉(zhuǎn)速的數(shù)值直接顯示。 基本功能使用 1.QBD66(自動版) 1.1使用QBD3001ECU模擬器讀取QBD66 J1939協(xié)議的數(shù)據(jù) 將ECU模擬器電源5V供電,接好OBD頭,并且將ECU模擬器的協(xié)議切換到c協(xié)議,如下圖所示。 1.2電腦端打開SSCOM軟件(串口、網(wǎng)絡(luò)數(shù)據(jù)調(diào)試器),然后選擇好對應(yīng)端口號,波特率選擇為115200之后打開串口,就會看到QBD66的數(shù)據(jù)流了,可以觀察到車輛當前的信息了,如下圖所示。 1.3數(shù)據(jù)流格式:BD$V12.2;R05093;S039 ![]() BD$ 為頭格式,分號為每條數(shù)據(jù)結(jié)尾的標示 V = 電瓶電壓 R = RPM 轉(zhuǎn)速 S = SPD 速度 P = TP 絕對節(jié)氣門開度(位置) O = LOD 發(fā)動機負荷 C = ECT 冷卻液溫度 L = FLI 剩余油量 1分鐘刷新一次 XM 此兩位為瞬時油耗 其中第一位 X表示當前車輛是X傳感器,直接數(shù)據(jù)就是當前車輛的瞬時油耗。 其中第二位 M表示百公里油耗 (行駛顯示 速度>0) M = MILES-T 此次的里程 單位 米 F = FUELS-T 此次的油耗 單位 L T = TIMES 此次運行時間 單位 秒 E = 汽車發(fā)動機狀態(tài)0熄火,1點火,2是自動啟停狀態(tài),3是油電混合或油氣狀態(tài) A = 急加速次數(shù) B = 急剎車次數(shù) D = 故障碼個數(shù) 1分鐘刷新一次(如果有變化就把故障碼顯示出來) 例如1,P123;顯示一次 GX = X軸震動值(有GSENSOR的時候顯示) GY = X軸震動值(有GSENSOR的時候顯示) GZ = X軸震動值(有GSENSOR的時候顯示) @n = n 為輸出的順序以方便上位機判斷當前指令是否結(jié)束和依次的順序。 1.4休眠喚醒方式 在ECU模擬器上,按下最右側(cè)按鈕(點火/熄火按鈕),此時數(shù)碼管燈滅,則表示車已經(jīng)熄火,OBD進入休眠低功耗狀態(tài),再次按下最右側(cè)按鈕,此時數(shù)碼管點亮,表示車點火啟動,OBD從休眠狀態(tài)喚醒,開始工作。如下圖所示,圖一為休眠,圖二為喚醒。 2.QBD61(手動版) 2.1首先將線材都連接好,USB一端連接電腦USB口,另一端連接到ECU模擬器上,并且將協(xié)議切換到c協(xié)議。如下圖所示。 2.2同樣在電腦端打開SSCOM軟件(串口、網(wǎng)絡(luò)數(shù)據(jù)調(diào)試器),選擇對應(yīng)的端口號,波特率選擇38400,然后打開串口。由于QBD61是手動版,所以打開串口不會看到數(shù)據(jù)流,需要手動發(fā)送指令,即可得到需要讀取的數(shù)據(jù),以下步驟為讀取轉(zhuǎn)速(RPM)為例。 (1)發(fā)送ATL1 —>ATl1 <—ATl1OK (2)發(fā)送ATSPA —>STAPA <—ATSPAOK (3)然后發(fā)送AT MP 00F004 ->AT MP 00F004 然后會接收到十六進制的數(shù)據(jù)流,如下圖所示。 將數(shù)據(jù)的第四位和第五位拿出來為101F,并且把高位放在后低位放在前,得到1F10,然后除以8,會得到轉(zhuǎn)速的實際值。 2.3以下步驟為讀取車速的(SPD)數(shù)據(jù) (1)發(fā)送ATL1 —>ATl1 <—ATl1OK (2)發(fā)送ATSPA —>STAPA <—ATSPAOK (3)發(fā)送 AT MP FEF1,就會接受到數(shù)據(jù),如下圖所示。 將第二位和第三位的數(shù)拿出來為DD 0C,高位在后低位在前為0C DD,然后再除以256,就可以得到實際的車速值。 |