歡迎訪問(wèn)新悅網(wǎng)絡(luò)設(shè)備有限公司
CAN(控制器局域網(wǎng))是一種串行通信協(xié)議,最初由博世公司(Bosch)在1980年代為汽車電子系統(tǒng)開(kāi)發(fā),用于連接汽車的各個(gè)微控制器和設(shè)備,提供可靠的、實(shí)時(shí)的數(shù)據(jù)交換。由于其高可靠性、抗干擾能力強(qiáng)和支持多節(jié)點(diǎn)通信的特點(diǎn),CAN協(xié)議被廣泛應(yīng)用于汽車、工業(yè)自動(dòng)化、醫(yī)療設(shè)備、航空航天等多個(gè)領(lǐng)域。
CAN建立在基于信息導(dǎo)向傳輸協(xié)定的廣播機(jī)制上。其根據(jù)信息的內(nèi)容,利用信息標(biāo)志符(每個(gè)標(biāo)志符在整個(gè)網(wǎng)絡(luò)中獨(dú)一無(wú)二)來(lái)定義內(nèi)容和消息的優(yōu)先順序進(jìn)行傳遞,而并非指派特定站點(diǎn)地址的方式。
因此,CAN擁有了良好的彈性調(diào)整能力,可以在現(xiàn)有網(wǎng)絡(luò)中增加節(jié)點(diǎn)而不用在軟、硬件上做出調(diào)整。除此之外,消息的傳遞不基于特殊種類的節(jié)點(diǎn),增加了升級(jí)網(wǎng)絡(luò)的便利性。
CAN協(xié)議的原理
CAN協(xié)議是一種基于總線拓?fù)涞亩嘀骺偩€通信協(xié)議,允許多個(gè)設(shè)備(節(jié)點(diǎn))通過(guò)共享的一條通信線路進(jìn)行數(shù)據(jù)交換。其關(guān)鍵原理包括:
-
差分信號(hào)傳輸:CAN使用兩條信號(hào)線(CAN_H和CAN_L)來(lái)傳輸差分信號(hào)。這種傳輸方式大大增強(qiáng)了抗干擾能力。
-
多主通信:CAN總線上所有節(jié)點(diǎn)可以主動(dòng)發(fā)送數(shù)據(jù),并且沒(méi)有主從之分。多個(gè)節(jié)點(diǎn)可共享同一總線,但只有優(yōu)先級(jí)最高的消息可以在總線忙時(shí)發(fā)送,避免沖突。
-
無(wú)沖突仲裁機(jī)制:CAN使用位級(jí)仲裁機(jī)制,即當(dāng)多個(gè)節(jié)點(diǎn)同時(shí)發(fā)送數(shù)據(jù)時(shí),優(yōu)先級(jí)較高的節(jié)點(diǎn)(ID較低的消息)優(yōu)先發(fā)送,而低優(yōu)先級(jí)的節(jié)點(diǎn)會(huì)自動(dòng)停止發(fā)送,等待下一次傳輸機(jī)會(huì)。這樣避免了數(shù)據(jù)沖突。
-
錯(cuò)誤檢測(cè)與恢復(fù):CAN協(xié)議內(nèi)置多種錯(cuò)誤檢測(cè)機(jī)制,如位錯(cuò)誤、幀錯(cuò)誤、CRC校驗(yàn)等,確保數(shù)據(jù)傳輸?shù)目煽啃?。?dāng)檢測(cè)到錯(cuò)誤時(shí),節(jié)點(diǎn)可自動(dòng)恢復(fù)并重發(fā)數(shù)據(jù)。
CAN協(xié)議的架構(gòu)
CAN是一個(gè)用于連接電子控制單元(ECU)的多主機(jī)串行總線標(biāo)準(zhǔn)。電子控制單元有時(shí)也被稱作節(jié)點(diǎn)。CAN網(wǎng)絡(luò)上需要至少兩個(gè)節(jié)點(diǎn)才可進(jìn)行通信。節(jié)點(diǎn)的復(fù)雜程度可以只是簡(jiǎn)單的輸入輸出設(shè)備,也可以是包含有CAN交互器并搭載了軟件的嵌入式組件。節(jié)點(diǎn)還可能是一個(gè)網(wǎng)關(guān),允許普通計(jì)算機(jī)通過(guò)USB或以太網(wǎng)端口與CAN網(wǎng)絡(luò)上的設(shè)備通信。
所有節(jié)點(diǎn)通過(guò)兩根平行的總線連接在一起。兩條電線組成一條雙絞線,并且接有120Ω的特性阻抗。
ISO 11898-2,也稱為高速度CAN。它在總線的兩端均接有120Ω電阻。

高速CAN總線在傳輸顯性(0)信號(hào)時(shí),會(huì)將CAN_H端抬向5V高電平,將CAN_L拉向0V低電平。當(dāng)傳輸隱性(1)信號(hào)時(shí),并不會(huì)驅(qū)動(dòng)CAN_H或者CAN_L端。 顯性信號(hào)CAN_H和CAN_L兩端差分標(biāo)稱電壓為2V。 終端電阻在沒(méi)有驅(qū)動(dòng)時(shí),將差分標(biāo)稱電壓降回0V。顯性信號(hào)(0)的共模電壓需要在1.5V到3.5V之間。隱性信號(hào)(1)的共模電壓需要在+/-12V。

ISO 11898-3,也被稱作低速或者容錯(cuò)CAN。它使用線性主線,星形主線或者連接到一個(gè)線性主線上的多星結(jié)構(gòu)主線著稱。每個(gè)節(jié)點(diǎn)都有終端電阻作為全局終端電阻的一部分。全局終端電阻不應(yīng)低于100 Ω。

低速/容錯(cuò)CAN信號(hào)在傳輸顯性信號(hào)(0)時(shí),驅(qū)動(dòng)CANH端抬向5V,將CANL端降向0V。在傳輸隱性信號(hào)(1)時(shí)并不驅(qū)動(dòng)CAN 總線的任何一端。在電源電壓Vcc為5V時(shí),顯性信號(hào)差分電壓需要大于2.3V,隱性信號(hào)的差分電壓需要小于0.6V。CAN總線兩端未被驅(qū)動(dòng)時(shí),終端電阻使CANL端回歸到RTH電壓(當(dāng)電源電壓Vcc為5V時(shí),RTH電壓至少為Vcc-0.3V=4.7V),同時(shí)使CANH端回歸至RTL電壓(RTL電壓最大為0.3V)。兩根線需要能夠承受-27V至40V的電壓而不被損壞。

在高速和低速CAN中,從隱性信號(hào)向顯性信號(hào)過(guò)渡的速度更快,因?yàn)榇藭r(shí)CAN線纜被主動(dòng)積極地驅(qū)動(dòng)。顯性向隱性的過(guò)渡速度主要取決于CAN網(wǎng)絡(luò)的長(zhǎng)度和導(dǎo)線的電容。
高速CAN通常被用于汽車和工業(yè)應(yīng)用,在這些應(yīng)用環(huán)境中,總線通常從一端橫跨至另一端。容錯(cuò)CAN總線則經(jīng)常被用在需要連接在一起的一組節(jié)點(diǎn)。
ISO規(guī)格只要求總線共模電壓必須保持在最小和最大范圍內(nèi),但不定義如何將總線電壓保持在這個(gè)范圍。
CAN總線必須使用終端電阻。終端電阻可以用來(lái)抑制信號(hào)反射,同時(shí)可以使總線電壓回到隱性狀態(tài)或者閑置狀態(tài)。
高速CAN在總線兩端使用120Ω電阻。低速CAN在每個(gè)節(jié)點(diǎn)均使用電阻。也有其他類型的終端,例如ISO 11783中定義了終端偏壓電路。
終端偏壓電路使用由4條導(dǎo)線組成的線纜,除了CAN信號(hào)線以外還有電源線和地線。這在每段總線兩端提供自動(dòng)偏壓和終端功能。ISO11783網(wǎng)絡(luò)是專為熱拔插總線段和電子控制單元設(shè)計(jì)的。
每個(gè)節(jié)點(diǎn)需要:
- 中央處理器、微處理器或主處理器
- 處理主機(jī)決定收到的信息的意思以及想要傳輸?shù)男畔ⅰ?/span>
- 傳感器、驅(qū)動(dòng)器和控制設(shè)備可以與主處理器連接。
- CAN控制器;通常是集成單片機(jī)的一部分
- 接收:CAN控制器將從總線上接收的串位字節(jié)存儲(chǔ)直到整個(gè)消息可用,之后主處理器可以獲取這個(gè)消息(通常由于CAN控制器觸發(fā)一個(gè)中斷)。
- 發(fā)送:主處理器發(fā)送傳遞信息到CAN控制器,之后當(dāng)總線空閑時(shí)將串位信息傳遞至總線。
- 收發(fā)器;由ISO11898-2/3介質(zhì)訪問(wèn)單元(MAU)標(biāo)準(zhǔn)定義
- 接收:把數(shù)據(jù)流從CAN總線層轉(zhuǎn)換成CAN控制器可以使用的標(biāo)準(zhǔn)。 CAN控制器通常配有保護(hù)電路。
- 傳輸:把來(lái)自CAN控制器的數(shù)據(jù)流轉(zhuǎn)換至CAN總線層。

每個(gè)節(jié)點(diǎn)能夠發(fā)送和接收信息,但不是同時(shí)進(jìn)行的。 一個(gè)消息或幀主要包括標(biāo)識(shí)符(ID),它表示信息的優(yōu)先級(jí),最多八個(gè)數(shù)據(jù)字節(jié)。CRC、ACK和其他幀部分也是消息的一部分。改進(jìn)了的CAN FD將每個(gè)幀拓展至最多64字節(jié)。 消息采用不歸零(NRZ)格式串聯(lián)傳送到主線并可被所有節(jié)點(diǎn)接收。
被CAN網(wǎng)絡(luò)連接的設(shè)備通常是傳感器,驅(qū)動(dòng)器和其他控制設(shè)備。 這些設(shè)備通過(guò)一個(gè)中央處理器、一個(gè)CAN控制器,和一個(gè)CAN接收器連接至總線。
CAN協(xié)議由物理層和數(shù)據(jù)鏈路層組成,符合OSI模型的底層兩層設(shè)計(jì):
-
物理層:物理層定義了信號(hào)傳輸?shù)碾姎馓匦院途€路配置,規(guī)定了節(jié)點(diǎn)通過(guò)差分電壓來(lái)傳輸數(shù)據(jù)的方式。典型的CAN總線由兩條線組成:CAN_H和CAN_L,通過(guò)兩者的電壓差來(lái)判斷是邏輯0(顯性位)還是邏輯1(隱性位)。
-
數(shù)據(jù)鏈路層:包括數(shù)據(jù)幀格式、仲裁方法、錯(cuò)誤處理等,確保不同節(jié)點(diǎn)之間的數(shù)據(jù)通信。CAN協(xié)議支持以下幾種幀類型:
- 數(shù)據(jù)幀:實(shí)際傳輸數(shù)據(jù)的幀。
- 遠(yuǎn)程幀:用于請(qǐng)求發(fā)送特定ID的數(shù)據(jù)幀。
- 錯(cuò)誤幀:當(dāng)檢測(cè)到錯(cuò)誤時(shí)發(fā)送的幀。
- 過(guò)載幀:用于指示節(jié)點(diǎn)忙碌無(wú)法處理新的數(shù)據(jù)幀。
每個(gè)數(shù)據(jù)幀主要包括標(biāo)識(shí)符(決定優(yōu)先級(jí))、控制字段、數(shù)據(jù)字段(最大8字節(jié))、CRC校驗(yàn)字段和確認(rèn)字段。
CAN協(xié)議的應(yīng)用
-
汽車電子:CAN協(xié)議是現(xiàn)代汽車中最常用的通信協(xié)議,用于連接發(fā)動(dòng)機(jī)控制單元(ECU)、傳感器、制動(dòng)系統(tǒng)、安全氣囊、車載娛樂(lè)系統(tǒng)等。它可以實(shí)現(xiàn)車輛內(nèi)多個(gè)控制器之間的實(shí)時(shí)、高效數(shù)據(jù)傳輸。
-
工業(yè)自動(dòng)化:在工業(yè)領(lǐng)域,CAN常用于傳感器、執(zhí)行器和控制系統(tǒng)的連接,例如機(jī)器人控制、工廠自動(dòng)化設(shè)備等,能確保數(shù)據(jù)可靠傳輸和實(shí)時(shí)反饋。
-
醫(yī)療設(shè)備:CAN被應(yīng)用于病床監(jiān)控系統(tǒng)、手術(shù)設(shè)備、CT掃描儀等設(shè)備的內(nèi)部通信,確保系統(tǒng)運(yùn)行的安全性和可靠性。
-
礦業(yè)與重型機(jī)械:CAN廣泛用于重型設(shè)備如礦用車輛和機(jī)械設(shè)備的控制與監(jiān)測(cè)。其抗干擾能力使其適合在惡劣的工業(yè)環(huán)境下運(yùn)行,能確保設(shè)備的安全操作。
-
航空與航天:CAN被用作飛機(jī)和衛(wèi)星內(nèi)各個(gè)模塊的通信協(xié)議,幫助系統(tǒng)實(shí)現(xiàn)同步控制和實(shí)時(shí)數(shù)據(jù)交換。
- 07-21
- 07-21
- 07-14
- 07-14
- 07-07
- 07-07
- 06-23
- 06-23
最新內(nèi)容
- 04-14
- 02-17
- 11-11
- 10-21
- 09-23
- 08-02
- 07-24
- 07-18
知識(shí)庫(kù)
