CAN簡(jiǎn)介
CAN網(wǎng)絡(luò):是目前在汽車上廣泛應(yīng)用的高速網(wǎng)絡(luò)系統(tǒng),但還有比如CANFD和以太網(wǎng)更高效的網(wǎng)絡(luò)系統(tǒng)。
在CAN網(wǎng)絡(luò)上運(yùn)用的是ISO 11898 國(guó)際標(biāo)準(zhǔn)。CAN總線一般采用屏蔽或非屏蔽的雙絞線。
CAN總線接口能在極其惡劣的環(huán)境下正常工作,根據(jù)ISO 11898國(guó)際標(biāo)準(zhǔn),CAN的雙絞線在使用中如果有一根斷路,或有一根接地甚至兩根都短接,CAN總線都必須能繼續(xù)工作。
CAN總線定義
CAN總線是一種串行數(shù)據(jù)通信總線,其通信速率最高可以達(dá)到1MB/S。CAN系統(tǒng)內(nèi)兩個(gè)任意節(jié)點(diǎn)之間的最大傳輸距離與其位速率成反比,即任意兩節(jié)點(diǎn)的傳輸距離越大其位速率越慢。
注:理論上CAN的傳輸速率達(dá)到1MB/S時(shí),最大傳輸距離為40m。
CAN總線具有較強(qiáng)的錯(cuò)誤檢測(cè)能力,可以通過(guò)監(jiān)視、循環(huán)冗余校驗(yàn)、位填充和報(bào)文格式檢查,使得未檢測(cè)出的出錯(cuò)率小于:4.7e-11。
通過(guò)故障界定,CAN節(jié)點(diǎn)有自動(dòng)識(shí)別永久性故障和短暫干擾的能力。處于干擾時(shí),CAN節(jié)點(diǎn)處于關(guān)閉狀態(tài)。而且,CAN中的節(jié)點(diǎn)可在不要求所有節(jié)點(diǎn)及其應(yīng)用層改變?nèi)斡熊浖蛴布那闆r下被接入CAN 網(wǎng)絡(luò)。
CAN總線的特點(diǎn)
1.總線訪問(wèn)采用基于優(yōu)先權(quán)的多主方式。CAN總線的最大特點(diǎn)是任意節(jié)點(diǎn)所發(fā)送的數(shù)據(jù)信息不會(huì)包含發(fā)送端或接收端的物理地址。
什么是多主方式?在整個(gè)CAN網(wǎng)絡(luò)中,所有信息內(nèi)容都有唯一的標(biāo)識(shí)符(即ID),當(dāng)網(wǎng)絡(luò)中出現(xiàn)信息時(shí),每個(gè)節(jié)點(diǎn)都會(huì)對(duì)信號(hào)進(jìn)行識(shí)別,從而判斷該信息是否與自己相關(guān)。如果相關(guān)這節(jié)點(diǎn)開(kāi)始對(duì)信息進(jìn)行處理,反之則被忽略。
多主方式的優(yōu)點(diǎn)有哪些?首先,多主方式可以讓CAN網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)都能接收到網(wǎng)絡(luò)中的每個(gè)信號(hào),其次在理論上可使網(wǎng)絡(luò)中的節(jié)點(diǎn)數(shù)為無(wú)限個(gè),但實(shí)際會(huì)受到電子電器的負(fù)載等因素的影響。數(shù)據(jù)字段最多為8個(gè)字節(jié)。
2.在線路存在擁擠競(jìng)爭(zhēng)時(shí)采用非破壞性的仲裁機(jī)制。CAN采用的是具有沖突檢測(cè)的載波監(jiān)聽(tīng)多路的訪問(wèn)方式,其優(yōu)點(diǎn)就是非破壞性的仲裁。CAN總線的數(shù)據(jù)采用不歸零編碼(即NRZ),數(shù)據(jù)位有“隱性”和“顯性”兩種邏輯值,總線仲裁時(shí)通常采用顯性覆蓋隱性的方式進(jìn)行。
CAN總線的信息是用固定格式的幀進(jìn)行傳輸?shù)模瑤拈L(zhǎng)度有限。總線空閑時(shí),任何節(jié)點(diǎn)都能發(fā)送幀,如果有兩個(gè)或兩個(gè)以上節(jié)點(diǎn)同時(shí)開(kāi)始傳輸信號(hào),則會(huì)引起總線沖突,這時(shí)就會(huì)用到非破壞性仲裁機(jī)制,經(jīng)過(guò)處理后,既不丟失信號(hào)也不會(huì)因?yàn)樾盘?hào)競(jìng)爭(zhēng)浪費(fèi)時(shí)間。
什么樣的信號(hào)在仲裁機(jī)制中有優(yōu)先權(quán)呢?這時(shí)就要關(guān)注幀的優(yōu)先級(jí),優(yōu)先級(jí)越高的幀就有優(yōu)先訪問(wèn)總線的權(quán)利。
3.接收濾波從而對(duì)幀進(jìn)行多節(jié)點(diǎn)傳輸。在CAN總線中,接收器對(duì)信號(hào)的處理是基于幀接收濾波的處理方式上,這種方式可以判斷出接收到的信號(hào)是否為接收端所需要的,因此,接收端無(wú)需識(shí)別信號(hào)的發(fā)送端ID,反之亦然。
4.支持遠(yuǎn)程數(shù)據(jù)請(qǐng)求。通過(guò)發(fā)送一個(gè)遠(yuǎn)程幀,接收端可以請(qǐng)求發(fā)送端給自己發(fā)送需要的數(shù)據(jù)幀,該數(shù)據(jù)幀的標(biāo)識(shí)符(ID)被指定為和相應(yīng)遠(yuǎn)程幀的標(biāo)識(shí)符相同。
5.配置靈活。在CAN網(wǎng)絡(luò)中添加節(jié)點(diǎn)時(shí),如果要添加的節(jié)點(diǎn)不是任何數(shù)據(jù)幀的放送端或接收端,則網(wǎng)絡(luò)中的所有節(jié)點(diǎn)都不用做任何改變(軟硬件)。
6.在整體的CAN網(wǎng)絡(luò)中數(shù)據(jù)是具有一致性的,即一幀信號(hào)可以同時(shí)被所有節(jié)點(diǎn)接收或不接受。這一特點(diǎn)是基于多點(diǎn)傳送和故障處理方法來(lái)實(shí)現(xiàn)的。所有接收器都會(huì)幀的一致性進(jìn)行校驗(yàn),將一致的幀進(jìn)行處理,將不一致的幀進(jìn)行標(biāo)記。
7.有檢錯(cuò)和出錯(cuò)報(bào)文功能。其中檢錯(cuò)方式有以下幾種:
- 位檢測(cè)
- 15位循環(huán)冗余碼校驗(yàn)
- 填充寬度為5的位填充
- 幀校驗(yàn)
8.仲裁失敗或傳輸期間被故障損壞的幀會(huì)自動(dòng)重發(fā)。在任何是否無(wú)論發(fā)送端和接收端處于什么狀態(tài)它們都會(huì)出現(xiàn)的錯(cuò)誤幀進(jìn)行標(biāo)記和通報(bào),隨后這些錯(cuò)誤幀就會(huì)立刻被拋棄,最后循壞機(jī)制就會(huì)采用恢復(fù)計(jì)時(shí)機(jī)制重新發(fā)送錯(cuò)誤幀,恢復(fù)時(shí)間一般占17~23個(gè)位時(shí)間,若總線遭受嚴(yán)重干擾則最多占29個(gè)位時(shí)間。
錯(cuò)誤幀在進(jìn)入自動(dòng)重發(fā)前需要參與到仲裁的過(guò)程中,才能獲得對(duì)總線的訪問(wèn)權(quán)利。
9.能區(qū)分節(jié)點(diǎn)的臨時(shí)故障和永久性故障并能自動(dòng)斷開(kāi)故障節(jié)點(diǎn)。如果出現(xiàn)自動(dòng)斷開(kāi)故障節(jié)點(diǎn)則說(shuō)明該節(jié)點(diǎn)退出了網(wǎng)絡(luò)的訪問(wèn)機(jī)制,在邏輯上斷連,因此該故障節(jié)點(diǎn)不能發(fā)和收任何信號(hào)。通常情況下,一個(gè)CAN節(jié)點(diǎn)必須處于(錯(cuò)誤 ~ 激活),(錯(cuò)誤 ~ 認(rèn)可)和離線狀態(tài)中的某一種狀態(tài),不能同時(shí)處于兩種及以上狀態(tài)。
處于(錯(cuò)誤~激活)狀態(tài)的節(jié)點(diǎn)可以正常參與總線通信,而且可以在檢測(cè)到錯(cuò)誤是發(fā)送錯(cuò)誤標(biāo)識(shí),錯(cuò)誤標(biāo)識(shí)由連續(xù)的6個(gè)顯性位構(gòu)成,這違反了位填充規(guī)則及正常幀所具備的各種規(guī)定格式。
處于(錯(cuò)誤~認(rèn)可)狀態(tài)的節(jié)點(diǎn)不能發(fā)送錯(cuò)誤標(biāo)識(shí),但能參與總線通信,在檢測(cè)到錯(cuò)誤時(shí)發(fā)送的是“認(rèn)可錯(cuò)誤標(biāo)識(shí)”?!罢J(rèn)可錯(cuò)誤標(biāo)識(shí)”由6個(gè)連續(xù)的隱性位構(gòu)成,發(fā)送完畢后,處于(錯(cuò)誤 ~ 認(rèn)可)狀態(tài)的節(jié)點(diǎn)在啟動(dòng)下一次發(fā)送之前還要再等待一段時(shí)間。
處于離線狀態(tài)的節(jié)點(diǎn)無(wú)法收發(fā)任何幀,只有用戶請(qǐng)求才能使該節(jié)點(diǎn)結(jié)束離線狀態(tài)。