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