

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