摘 要:本文結(jié)合整車CAN總線網(wǎng)絡(luò)的實(shí)際開發(fā),對(duì)CAN規(guī)范中對(duì)信號(hào)可靠性設(shè)定進(jìn)行梳理;對(duì)CAN規(guī)范未定義到進(jìn)行了信號(hào)的可靠性研究。
關(guān)鍵詞:CAN規(guī)范;信號(hào)可靠性;研究
0 引言
CAN(Controller Area Networking)是控制器局域網(wǎng),CAN通信協(xié)議主要描述ECU(Eletronic Control Unit)之間的信息傳遞方式,總線的信息傳遞是指將N個(gè)信號(hào)加上幀頭、幀尾打包成的固定格式的報(bào)文發(fā)送。各個(gè)ECU根據(jù)通訊矩陣設(shè)定,確認(rèn)自己應(yīng)該發(fā)送和接收哪些信號(hào)來實(shí)現(xiàn)自身功能。如果信號(hào)有問題,與其相關(guān)的功能就會(huì)異常,所以信號(hào)的可靠性顯得尤為重要。
1 信號(hào)可靠性的定義
可靠性是指抗故障性及數(shù)據(jù)交換的穩(wěn)定與準(zhǔn)確性。
CAN信號(hào)可靠性是指在規(guī)定條件下和規(guī)定時(shí)間區(qū)間信號(hào)不被損壞,能穩(wěn)定、準(zhǔn)確被傳遞。
汽車CAN網(wǎng)絡(luò)的信號(hào)可靠性取決于多方面因素,如發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)的性能,傳輸路徑,電磁環(huán)境、總線負(fù)載率等都會(huì)影響信號(hào)可靠性。報(bào)文傳輸路徑越長(zhǎng),轉(zhuǎn)發(fā)次數(shù)越多,信號(hào)延遲就越大;車上電磁環(huán)境越惡劣,對(duì)CAN節(jié)點(diǎn)干擾越大,信號(hào)完整性就會(huì)越低,即信號(hào)越容易失真;總線負(fù)載率影響CAN網(wǎng)絡(luò)的實(shí)時(shí)性,負(fù)載率越高,信號(hào)延遲越大,車輛的功能受到影響越嚴(yán)重,網(wǎng)絡(luò)系統(tǒng)可靠性越低。
2 CAN規(guī)范中的信號(hào)可靠性
2.1 CAN協(xié)議對(duì)信號(hào)可靠性的設(shè)定
CAN協(xié)議中關(guān)于CAN層的定義與OSI(Open System Interconnection)一致,CAN協(xié)議主要定義了OSI模型的最下面兩層[1]:數(shù)據(jù)鏈路層和物理層。
CAN協(xié)議中各層做了相應(yīng)的規(guī)定來保證信號(hào)可靠性的實(shí)現(xiàn)。
物理層設(shè)定同步方式,CAN的數(shù)據(jù)流包含不同的時(shí)鐘,CAN協(xié)議中定義的同步保證報(bào)文可以不管節(jié)點(diǎn)間積累的相位誤差正確的譯碼;位編碼方式可以有效的檢測(cè)出位錯(cuò)誤或填充錯(cuò)誤,從而更好的修正信號(hào),提供信號(hào)傳遞的可靠性。
數(shù)據(jù)鏈路層CRC (Cyclic Redundancy Check)、應(yīng)答和格式檢查等檢錯(cuò)機(jī)制,錯(cuò)誤恢復(fù)功能等更好的確保了ECU間的數(shù)據(jù)能準(zhǔn)確的發(fā)送和接收。
2.2 其他規(guī)范對(duì)信號(hào)可靠性的設(shè)定
ISO11898和SAE J1939標(biāo)準(zhǔn)設(shè)定了CAN總線的終端電阻,防止能量反射,影響信號(hào)波形質(zhì)量;還對(duì)CAN通信線束長(zhǎng)度及總線電阻率進(jìn)行限定,以免能量衰減造成信號(hào)波形的衰減。
2.3 小結(jié)
CAN規(guī)范自身不是完美的,所以除了CAN規(guī)范里定義的安全機(jī)制外,新的安全機(jī)制也成為了重要的研究方向。
3 CAN規(guī)范外的信號(hào)可靠性實(shí)現(xiàn)研究
CAN的分層不一定嚴(yán)格按照OST模型來分,根據(jù)數(shù)據(jù)的傳輸過程,也可以分為四層圖:應(yīng)用層、交互層、數(shù)據(jù)鏈路層、物理層。交互層(SIL)是應(yīng)用層和數(shù)據(jù)鏈路層之間的抽象層,它為上一層提供信號(hào)接口,是網(wǎng)絡(luò)(幀級(jí))到本地ECU(信號(hào)級(jí))之間提供轉(zhuǎn)換接口。
3.1 物理層
為了保證電平轉(zhuǎn)換,控制總線的電平狀態(tài)、異步串行通信功能可靠的實(shí)現(xiàn),在設(shè)計(jì)ECU的物理層接口電路時(shí),需要考慮增加電路的保護(hù)設(shè)計(jì),如圖1:
信號(hào)共模扼流圈,可抑制傳輸線上的共模干擾,而令傳輸線上的數(shù)據(jù)信號(hào)可暢通無阻地通過。ESD保護(hù)齊納二極管,可提高抗靜電能力。
CAN收發(fā)器是控制器局域網(wǎng)CAN協(xié)議驅(qū)動(dòng)器和物理總線之間的接口,它的性能參數(shù)直接影響CAN網(wǎng)絡(luò)的性能。如收發(fā)器的EMC、ESD、工作溫度范圍如果沒有達(dá)到指定要求,就會(huì)影響整車CAN網(wǎng)絡(luò)的信號(hào),可能導(dǎo)致信號(hào)變形,影響信號(hào)的可靠性。所以在新項(xiàng)目開展中,主機(jī)廠可以指定性能高的CAN收發(fā)器的型號(hào),這樣信號(hào)的一致性不僅更好,網(wǎng)絡(luò)的抗干擾性也得到更大的保證。
3.2 交互層
3.2.1 信號(hào)的參數(shù)設(shè)定
CAN信號(hào)的默認(rèn)值,在網(wǎng)絡(luò)非正常運(yùn)行或網(wǎng)絡(luò)故障出現(xiàn)時(shí)ECU功能處理必不可少。對(duì)于發(fā)送ECU來說,在應(yīng)用程序更新為有效信號(hào)值前COM驅(qū)動(dòng)將發(fā)送這默認(rèn)值。對(duì)于接收ECU來說,在接收到有效網(wǎng)絡(luò)有效信號(hào)前或網(wǎng)絡(luò)發(fā)生錯(cuò)誤時(shí),應(yīng)用程序?qū)⑹褂眠@默認(rèn)值。
默認(rèn)值沒有標(biāo)準(zhǔn)定義,主機(jī)廠可以根據(jù)具體情況定義,但要與整車的功能策略定義方向一致,如ECU以接收信號(hào)CraOuSts(信號(hào)值為0=No crash 和 1=crash)為依據(jù)來實(shí)現(xiàn)碰撞斷油功能,實(shí)現(xiàn)策略為收到CraOuSts為1,ECU執(zhí)行斷油操作,為0不做反應(yīng)。斷油跟安全相關(guān),必須是真碰撞才執(zhí)行斷油,所以網(wǎng)絡(luò)故障時(shí),默認(rèn)值不能為1,要求設(shè)定為0。
CAN信號(hào)的錯(cuò)誤值表示發(fā)送ECU發(fā)現(xiàn)了錯(cuò)誤或信號(hào)不可用時(shí)發(fā)出來的值,錯(cuò)誤值不要求每個(gè)信號(hào)都定義,重要的信號(hào)可以定義錯(cuò)誤值,使接收ECU更好應(yīng)用此信號(hào)。
CAN信號(hào)值定義一項(xiàng)原則:為了使信號(hào)值不出現(xiàn)丟失,可能同時(shí)出現(xiàn)的信號(hào)值,不能放在同一個(gè)信號(hào)里面,如信號(hào)PeA(1=ES,2=PE)定義就不合理,2個(gè)信號(hào)值都可能同時(shí)出現(xiàn),總線上只能發(fā)送一個(gè)值,1個(gè)值就會(huì)丟失掉。
3.2.2 重要信號(hào)的保護(hù)
扭矩類重要的信號(hào),對(duì)傳輸可靠性要求更嚴(yán)格,雖然CAN總線各規(guī)范定義了安全機(jī)制如CRC,但不夠,所以規(guī)范外的各安全機(jī)制應(yīng)運(yùn)而生。
報(bào)文循環(huán)計(jì)數(shù)器,該信號(hào)算法在0~15之間循環(huán)計(jì)數(shù),從0開始,每發(fā)一幀報(bào)文加1,加到15后返回0重新計(jì)數(shù)。接收方在收到該報(bào)文時(shí),首先判斷報(bào)文循環(huán)計(jì)數(shù)器是不是滿足算法要求,如滿足說明這次收到的報(bào)文有效,如不滿足這次報(bào)文不可靠應(yīng)丟棄。
報(bào)文總和校驗(yàn)(CheSum),信號(hào)長(zhǎng)度一般為8bits,算法可以根據(jù)需要自定義。算法CheSum = { (byte1 +…byte7 ?) && ( 0XFF) }接收方在接收到報(bào)文時(shí),先判斷報(bào)文總和校驗(yàn)是不是滿足該的算法要求,如果滿足,說明這次接收到的報(bào)文有效,如果不滿足,說明這次報(bào)文不可靠放棄使用這次報(bào)文。
有效校驗(yàn)值(簡(jiǎn)寫為Vd),信號(hào)長(zhǎng)度為1bits,表示兩個(gè)狀態(tài),即有效和無效。例如信號(hào)sig1很重要,會(huì)有一個(gè)信號(hào)sig1Vd加于校驗(yàn),sig1和sig1Vd需要打包在一幀報(bào)文中。接收方在接收到報(bào)文時(shí),先會(huì)讀取信號(hào)sig1Vd,如果值為無效,就判斷sig1無效,不再去讀取,如果sig1Vd有效,說明sig1有戲,再去讀取sig1。
報(bào)文循環(huán)計(jì)數(shù)器、報(bào)文總和校驗(yàn)、有效校驗(yàn)值進(jìn)一步加強(qiáng)的信號(hào)保護(hù)作用,加強(qiáng)收發(fā)雙方的握手,使用到的信號(hào)更安全可靠,功能和性能實(shí)現(xiàn)更有保障。但不是說每個(gè)信號(hào)或每幀報(bào)文都需要用到這三個(gè)冗余信號(hào),這會(huì)增加網(wǎng)絡(luò)負(fù)擔(dān)。設(shè)計(jì)師可以根據(jù)具體功能性能,給重要信號(hào)增加,更好的平衡網(wǎng)絡(luò)。
有效校驗(yàn)值使用沒有限定條件,但是報(bào)文循環(huán)計(jì)數(shù)器、報(bào)文總和校驗(yàn)不是什么情況下都可以使用,一般情況要求通過網(wǎng)關(guān)轉(zhuǎn)發(fā)不能使用。因?yàn)榫W(wǎng)關(guān)轉(zhuǎn)發(fā)的信號(hào),基本通過報(bào)文拆包、組包和更改發(fā)送周期,這樣網(wǎng)關(guān)轉(zhuǎn)發(fā)后,這兩個(gè)信號(hào)計(jì)算的結(jié)果有變化。
3.3 應(yīng)用層
3.3.1 信號(hào)ID的分配研究
CAN總線根據(jù)標(biāo)識(shí)符(ID)決定優(yōu)先級(jí)進(jìn)行仲裁,兩個(gè)以上的ECU同時(shí)開始發(fā)送報(bào)文時(shí),對(duì)各報(bào)文ID 的每個(gè)位進(jìn)行逐個(gè)仲裁比較。仲裁獲勝(被判定為優(yōu)先級(jí)最高)的ECU可繼續(xù)發(fā)送報(bào)文,仲裁失利的ECU則立刻停止發(fā)送而進(jìn)行接收工作。所以優(yōu)先級(jí)低的ID存在發(fā)送延遲,進(jìn)而可能影響功能的實(shí)現(xiàn)。這是CAN總線系統(tǒng)客觀存在的缺陷,不可避免的。但可以根據(jù)整車的功能性能需求,合理分配ID,實(shí)現(xiàn)即使信號(hào)發(fā)送延遲,也不會(huì)對(duì)整車功能實(shí)現(xiàn)、性能穩(wěn)定造成影響,ID分配原則為:分配優(yōu)先級(jí)高的ID,如 安全、實(shí)時(shí)性要求高,如碰扭矩信號(hào);分配優(yōu)先級(jí)低的ID, 實(shí)時(shí)性要求不高,如診斷信號(hào)。
3.3.2 信號(hào)打包位置研究
關(guān)于信號(hào)打包位置,如果信號(hào)能放在一個(gè)字節(jié)里,就不要放兩個(gè),放兩個(gè)字節(jié)增加誤讀風(fēng)險(xiǎn)。
3.3.3 信號(hào)解讀研究
關(guān)于信號(hào)解讀,對(duì)ECU來說,最好只解讀本ECU使用的信號(hào)比特位,沒有使用到的比特位不解讀,以免產(chǎn)生錯(cuò)誤。一般情況下,主機(jī)廠給每個(gè)ECU釋放的DBC,只與本ECU有關(guān),無關(guān)的信號(hào)ECU1是看不到的,如圖2字節(jié)4高四位整車是有信號(hào)的,ECU1看不到。
3.3.4 特殊信號(hào)的發(fā)送策略
有些ECU以IG off/on為條件,當(dāng)IG on時(shí), ECU喚醒網(wǎng)絡(luò),當(dāng)IG off時(shí),ECU退出網(wǎng)絡(luò)。但在IG off時(shí),某些功能需要ECU提供信號(hào),所以 ECU不能以IG off/on為當(dāng)喚醒休眠條件,需進(jìn)行特殊的定義。
3.4 CAN總線網(wǎng)絡(luò)的負(fù)載率
CAN總線網(wǎng)絡(luò)的負(fù)載率是CAN總線一個(gè)非常重要的網(wǎng)絡(luò)性能指標(biāo),負(fù)載率如果過高,會(huì)引起網(wǎng)絡(luò)延遲,嚴(yán)重可能引起網(wǎng)絡(luò)堵塞。影響網(wǎng)絡(luò)負(fù)載率的主要有兩個(gè)因素,報(bào)文數(shù)量和報(bào)文周期。在CAN總線開發(fā)前期,需要根據(jù)項(xiàng)目需求,評(píng)估報(bào)文的數(shù)量和報(bào)文的周期,用專業(yè)的軟件(如Volcano Network Architect)進(jìn)行時(shí)序分析和負(fù)載率的計(jì)算,以此作為CAN網(wǎng)絡(luò)開發(fā)可行性的依據(jù)。
4結(jié)束語(yǔ)
本文主要對(duì)CAN規(guī)范中對(duì)信號(hào)可靠性的設(shè)定進(jìn)行梳理;對(duì)CAN規(guī)范未定義的信號(hào)可靠性實(shí)現(xiàn)進(jìn)行研究,主要從物理層、交互層、應(yīng)用層以及CAN網(wǎng)絡(luò)的負(fù)載率方面,對(duì)影響和提高信號(hào)可靠性的因素進(jìn)行了分析。
參考文獻(xiàn):
[1]牛躍聽,周立功,方舟.汽車CAN總線系統(tǒng)原理、設(shè)計(jì)與應(yīng)用.01版[M].北京:電子工業(yè)出版社,2010.
[2]Boschs CAN specification 2.0.
[3]瑞薩科技.CAN入門書.1.0版[M].2006年2月20日.
作者簡(jiǎn)介:莊麗興(1986-),女,海南??谌耍究?,助理工程師,研究方向:汽車網(wǎng)絡(luò)通訊。