重型柴油車標準CAN協議遵循J1939,同樣適用于一些工程機械和大部分的客車,SAE J1939物理層基于ISO11898-2,速率為250kbit/s。CAN(Controller Area Network)總線信息傳輸著車輛各總成控制器的重要控制信號,如何直接從CAN總線上獲取、保存與分析報文非常重要。
我們針對各類不同的汽車做數據采集,這些數據不僅有利于駕駛員更好獲取駕駛信息,提高車輛操控性,而且便于交通事故的調查分析,為汽車智能化提供了數據基礎。SAE J1939協議是目前客車、卡車等大型汽車中最廣泛的應用層協議,其針對車輛內部ECU(Electronic Control Unit)的報文格式、ISO拉丁字母符集、參數范圍、傳輸重復率、地址配置、發動機參數命名、通信方式及報文發送優先級等做了明確的規定。
SAE J1939的消息格式使用參數群編號作為一組參數的標號。這些參數中的每一個都可以用ASCII碼表達,或者由兩個或者兩個以上的字母組成的功能狀態。字母數字字符將首先作為最高位的有效字節進行傳送,除非另外有特殊指定,字母數字字符都遵照ISO字母組,其他兩個或者兩個以上數字字節組成的參數,首先作為最低位有效字節進行傳送。
對每個參數都應該確定它的數據類型,數據的類型可以是狀態值或者是測量值。狀態值表示一個或多個狀態參數的目前狀態,比如車門為打開狀態、或者為關閉狀態,當下車速是60碼,這些都是狀態數據,這些都是傳輸節點在執行操作后所產生的結果。這個操作是根據本地或者網絡測量值或者狀態信息進行計算的結果。要注意的是,這樣的操作不需要有特定的確認信息。例如狀態數據表示有一個電磁線圈已經被激活了,我們并不需要對他進行測試來確認這個電磁線圈已經實現了它的功能,直接通過報文信息比對便可以輸出這個結果。狀態類的數據有發動機剎車被啟動,速度運行、巡航控制運行、巡航狀態、故障代碼、轉矩、油門以及這些狀態數據不對稱性的調整等等。
測量之類的數據表示了傳輸節點對某個參數測量后得到的當前值,這樣可以確定已定義的參數的狀態。數據測量值類型的數據有進氣壓力、點火開關、巡航設置開關打開、最大巡航速度、剩余油量、速度、負載百分比等等。
通信參數的定義:
看下面三個表格,包含了確定的傳輸信號有效數值范圍、表示離散參數的傳輸數值(測量值)及表示控制模式命令狀態的數值范圍。在錯誤指示范圍內的數值表示,由于傳感器、子系統或功能模塊中出現某種類型的錯誤,因而沒有可利用的參數(比如該車沒有這個傳感器)。
在不可用的范圍內的素質表示,模塊傳遞的消息包含的參數在該模塊中不可用或者不支持,在不可被請求范圍內的數值提供了設備傳輸命令消息和識別那些不要接收設備發出響應的參數的手段。
如果一個元件故障阻礙了某個參數有效數據的傳輸,那表示離散參數的傳輸數值及控制命令傳輸數值的下表中描述的錯誤顯示數值應該用于代替該參數的數值。然而,如若測量或計算出來的數據所產生的數值是否有效的,但它超過了已定義的范圍,那么我們采集到的錯誤顯示的數值就不應該使用,而應該用合適的最小或者最大數值進行傳輸,采集的時候容易掉坑。
傳輸信號有效數值范圍
范圍名稱 | 1字節 | 2字節 | 4字節 | ASCII |
有效信號 | 00-FA | 0000-FAFF | 00000000-FAFFFFFF | 01-FE |
特定參數指示 | FB | FB00-FBFF | FBXXXXXX | - |
保留給將來指示使用的范圍 | FC-FD | FC00-FDFF | FC000000-FDFFFFFF | - |
錯誤指示 | FE | FEXX | FEXXXXXX | 00 |
不可用或者不可請求 | FF | FFXX | FFXXXXXX | FF |
表示離散參數的傳輸數值(測量值)
范圍名稱 | 傳輸數值 |
禁止(關閉,非運行等) | 00 |
啟動(打開,正在運行等) | 01 |
錯誤提示 | 10 |
不可用或不能裝 | 11 |
表示控制命令的傳輸數值(狀態)
范圍名稱 | 傳輸數值 |
用于停止功能的命令(關閉等) | 00 |
用于啟動功能的命令(打開等) | 01 |
保留 | 10 |
無關緊要/無動作(看功能決定) | 11 |
我們在采集數據的過程中會涉及到比例、界限、偏移量、和傳送等,這樣給在CAN總線上給定的參數類型(如溫度、壓力、速度)中盡量保持數據的一致性。例如大眾汽車的方向盤轉向角度通過CAN報文采集的是-32768至32768的范圍,它的分辨率是0.1秒位,數據長度是16位,偏移量就是-3276.8,為此可以判定這個的角度和方向。另如制動踏板,這個數據在DBC報文顯示踩下為01,放開為00,也十分容易判別。
類似這樣的數據采集,可以從DBC獲得豐富的數據包含了計數、里程、剩余油量、電流、進氣流量、耗油量、調速增益、齒輪傳動比、重力負荷、進氣壓力、溫度等等,在BCM系統還可以采集安全帶、手剎、車門狀態、鑰匙狀態、方向盤轉向角度、動力開關等,控制上基本都可以實現動力開閉、閃燈鳴笛、門鎖開閉、升窗、關天窗、控雨刮、尾箱等。
發動機的有些參數是根據曲柄角的變化進行計算或者更新的,它們不是在某個特定的時間后進行的。這個情況下,參考特定的更新就會失效,因為這個時候是按照轉速變化而變化。為了避免網絡負擔過重,我們采用總線監聽的方式,讀懂了發動機的通信與控制參數,發動機也是盡量縮短采樣時間、運算和傳輸數據的反應時間。大體有2種,一是基于時間的采樣、運算和傳輸;二是基于時間和基于曲柄角混合使用的采樣、運算和傳輸。這時,為了在可接受的范圍內保持數據更新速度,曲柄角的角度值會根據當前的運轉速度,在前后更新的時間間隔中改變。
例如下面幾組發動機電子控制單元的主報文幀內容:
Torque/ Speed Conrtol-轉矩速度控制
發動節點:HCU
接受節點:ECU
發送周期:取決控制目的
數據長度:8
數據頁:0
PDU格式:0
特定PDU:DA
默認優先值(P):3
參數群編號(PGN):0
起始位 | 長度 | 數據名 | SPN |
1.1 | 2bit | 發動機控制模式 | 695 |
1.3 | 2bit | 發動機請求速度控制狀況 | 696 |
1.5 | 2bit | 控制模式優先級 | 897 |
2-3 | 2 byte | 所請求的輸出轉速/速度極限 | 898 |
4 | 1 byte | 所請求的轉/轉矩限制 | 518 |
5.1 | 3bit | TSC發送速率 | 3349 |
5.4 | 5bit | TSC 控制目的 | 3350 |
Turbocharger-渦輪增壓器
發送周期:1秒
數據長度:8
數據頁:0
PDU格式:254
特定PDU:221
默認優先值(P):6
參數群編號(PGN):0XFEDD
起始位 | 長度 | 數據名 | SPN |
1 | 1 byte | 渦輪增壓器潤滑油壓力 | 104 |
2-3 | 2 byte | 渦輪增壓器1轉速 | 103 |
4.7 | 2bit | 渦輪增壓器油位開關 | 1665 |
在國六遠程OBD在線排放終端控制器的系統中,速銳得就是采用這一特性,從J1939的數據協議中采集獲得發動機工況包含了車速、大氣壓力、發動機扭矩、摩擦扭矩、發動機轉速、燃料流量、SCR上游氮氧化物傳感器輸出值、反應劑余量、進氣量、SCR出入口溫度、DPF壓差、發動機冷卻液溫度、郵箱液平面百分比、定位狀態、經緯度、累計里程、發動機扭矩模式、油門踏板、油耗、尿素箱溫度、實際尿素噴射量、DPF排氣溫度等數據,通過移動4G/5G網絡,采用GB-17691網絡通訊傳輸協議,將終端數據發送給數據平臺,實現重型車J1939在環保排放領域的CAN總線數據應用。