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