目錄
第1章 CAN總線概述
1.1 概述
1.2 CAN總線的優點
1.3 應用廣泛
1.4 CAN總線的發展曆史
1.5 傳輸距離與傳輸速度的關系
第2章 CAN總線的網絡拓撲
2.1 總線拓撲
2.2 星形拓撲
2.3 樹形拓撲
2.4 環形
第3章 CAN總線裝置的硬體連接配接方式
3.1 單個網絡節點的硬體連接配接框圖
3.2 多個網絡節點的連接配接方式
第4章 CAN總線的網絡協定棧
4.1 ISO七層協定與CAN總線協定棧
4.2 CAN協定棧
4.3 CAN總線通信模型
4.4 CAN總線實體電氣特性
第1章 CAN總線概述
1.1 概述
CAN 即控制器區域網路絡,屬于工業現場總線的範疇。
CAN 是Controller Area Network 的縮寫(以下稱為CAN),是ISO國際标準化的串行通信協定。
CAN協定主要用于汽車中各種不同元件之間的通信,以此取代昂貴而笨重的配電線束
在汽車産業中,出于對安全性、舒适性、友善性、低功耗、低成本的要求,各種各樣的電子控制系統被開發了出來。由于這些系統之間通信所用的資料類型及對可靠性的要求不盡相同,由多條總線構成的情況很多,線束的數量也随之增加。為适應“減少線束的數量”、“通過多個LAN,進行大量資料的高速通信”的需要,1986 年德國電氣商博世公司開發出面向汽車的CAN
1.2 CAN總線的優點
CAN屬于現場總線的範疇,它是一種有效支援分布式控制或實時控制的串行通信網絡。較之許多RS-485基于R線建構的分布式控制系統而言,基于CAN總線的分布式控制系統在以下方面具有明顯的優越性:
除上面所述,CAN還具備如下的優勢:
(1)網絡各節點之間的資料通信實時性強
首先,CAN控制器工作于多種方式,網絡中的各節點都可根據總線通路優先權(取決于封包辨別符)采用無損結構的逐位仲裁的方式競争向總線發送資料,且CAN協定廢除了站位址編碼,而代之以對通信資料進行編碼,這可使不同的節點同時接收到相同的資料,這些特點使得CAN總線構成的網絡各節點之間的資料通信實時性強,并且容易構成備援結構,提高系統的可靠性和系統的靈活性。而利用RS-485隻能構成主從式結構系統,通信方式也隻能以主站輪詢的方式進行,系統的實時性、可靠性較差;
(2)開發周期短
CAN總線通過CAN收發器接口晶片82C250的兩個輸出端CANH和CANL與實體總線相連,而CANH端的狀态隻能是高電平或懸浮狀态,CANL端隻能是低電平或懸浮狀态。這就保證不會再出現在RS-485網絡中的現象,即當系統有錯誤,出現多節點同時向總線發送資料時,導緻總線呈現短路,進而損壞某些節點的現象。而且CAN節點在錯誤嚴重的情況下具有自動關閉輸出功能,以使總線上其他節點的操作不受影響,進而保證不會出現像在網絡中,因個别節點出現問題,使得總線處于“死鎖”狀态。而且,CAN具有的完善的通信協定可由CAN控制器晶片及其接口晶片來實作,進而大大降低系統開發難度,縮短了開發周期,這些是僅有電氣協定的RS-485所無法比拟的。
(3)已形成國際标準的現場總線
另外,與其它現場總線比較而言,CAN總線是具有通信速率高、容易實作、且成本效益高等諸多特點的一種已形成國際标準的現場總線。這些也是CAN總線應用于衆多領域,具有強勁的市場競争力的重要原因。
1.3 應用廣泛
該協定的健壯性使其同樣适用于自動化和工業環境中。
與一般的通信總線相比,CAN總線的資料通信具有突出的可靠性、實時性和靈活性。由于其良好的性能及獨特的設計,CAN總線越來越受到人們的重視。它在汽車領域上的應用是最廣泛的,世界上一些著名的汽車制造廠商都采用了CAN總線來實作汽車内部控制系統與各檢測和執行機構間的資料通信。
不再局限于汽車行業,而向自動控制、航空航天、航海、過程工業、機械工業、紡織機械、農用機械、機器人、數控機床、醫療器械及傳感器等領域發展。
CAN已經形成國際标準,并已被公認為幾種最有前途的現場總線之一。
CAN 的高性能和可靠性已被認同,并被廣泛地應用于工業自動化、船舶、醫療裝置、工業裝置等方面。現場總線是當今自動化領域技術發展的熱點之一,被譽為自動化領域的計算機區域網路。它的出現為分布式控制系統實作各節點之間實時、可靠的資料通信提供了強有力的技術支援。
1.4 CAN總線的發展曆史
CAN總線協定距今已經發展40多年。如今,CAN總線已成為汽車(汽車、卡車、公共汽車、拖拉機等)、輪船、飛機、電動汽車電池、機械等的标準配置。
- CAN之前的版本:汽車ECU采用的是複雜的點對點布線
- 1986年:BOSCH(博世)開發了CAN協定作為解決方案
- 1991年:BOSCH(博世)釋出了CAN 2.0(CAN 2.0A:11位,2.0B:29位)
- 1993年:CAN被采用為國際标準(ISO 11898)
- 2003年:ISO 11898成為标準系列
- 2012年:博世釋出了CAN FD 1.0
- 2015年:CAN FD協定标準化(ISO 11898-1)
- 2016年:CAN實體層,資料速率高達5 Mbit/s,已認證ISO 11898-2标準化
1.5 傳輸距離與傳輸速度的關系
CAN總線是一種串行資料通信總線,其通信速率最高可達1 Mb/s。
CAN系統内兩個任意節點之間的最大傳輸距離與其位速率有關。
第2章 CAN總線的網絡拓撲
2.1 總線拓撲
CAN總線是一種廣播類型的總線,可支援線形拓撲、星形拓撲、樹形拓撲和環形拓撲等。
CAN網絡中至少需要兩個節點裝置才可進行通信,無法僅向某一個特定節點裝置發送消息,發送資料時所有節點都不可避免地接收所有流量。但是,CAN總線硬體支援本地過濾,是以每個節點可以設定對有效的消息做出反應。
線形拓撲是在一條主幹總線分出各個節點支線,其優點在于布線施工簡單,接線友善,阻抗比對規則固定,缺點是拓撲不夠靈活,在一定程度上影響通訊距離,如下圖所示:
2.2 星形拓撲
星形拓撲是每個節點通過中央裝置連到一起,其優點是容易擴充。
缺點是一旦中央裝置出故障會導緻總線集體故障,而且分支線長不同,阻抗比對複雜,可能需要通過一些中繼器或集線器進行擴充,如下圖所示:
2.3 樹形拓撲
樹形拓撲是節點分支比較多,且分支長度不同,其優點是布線友善
缺點是網絡拓撲複雜,阻抗比對困難,通訊中極易出現問題,必須加一些集線器裝置,如下圖所示:
2.4 環形
環形拓撲是将CAN總線頭尾相連,形成環狀
其優點是線纜任意位置斷開,總線都不會出現問題
缺點是信号反射嚴重,無法用于高波特率和遠距離傳輸,如下圖所示:
第3章 CAN總線裝置的硬體連接配接方式
3.1 單個網絡節點的硬體連接配接框圖
CAN節點通常由如下幾部分組成:
- CAN總線:CAN總線通過差分信号進行資料傳輸
- CAN收發器:CAN收發器将TTL電平信号轉換為差分信号,或差分信号轉換為TTL電平信号。
- CAN控制器:CAN控制器将TTL電平信号接收并傳輸給MCU
- MCU:可以采用STM32、華大、瑞薩等單片機,其内部就內建了CAN控制器外設,通過配置就可實作對CAN封包(MAC層)資料的讀取和發送。
3.2 多個網絡節點的連接配接方式
雖然CAN總線可以支援多種網絡拓撲,但在實際應用中比較推薦使用總線形拓撲,且在IOS 11898-2中高速CAN實體層規範推薦也是總線形拓撲。
在ISO 11898-2和ISO 11898-3中分别規定了兩種CAN總線結構的硬體連接配接方式(在BOSCH CAN2.0規範中,并沒有關于總線拓撲結構的說明)。
在發送資料時,CAN控制器把要發送的二進制編碼通過CAN_Tx線發送到CAN收發器,然後由收發器把這個普通的邏輯電平信号轉化成差分信号,通過差分線CAN_High和CAN_Low輸出到CAN總線網絡。
接收資料過程,相反。
采用差分信号,可以取得更好的電磁相容效果。是以,CAN總線實體傳輸媒介隻需要兩根線。
(1)高速互聯
ISO 11898-2中定義了通信速率為125Kbps~1Mbps的高速閉環CAN通信标準,當通信總線長度≤40米,最大通信速率可達到1Mbps,高速閉環CAN(高速CAN)通信如下圖所示:
(2)低速互聯
ISO 11898-3中定義了通信速率為10~125Kbps的低速開環CAN通信标準,當傳輸速率為40Kbps時,總線距離可達到1000米。低速開環CAN(低速容錯CAN)通信如下圖所示:
第4章 CAN總線的網絡協定棧
4.1 ISO七層協定與CAN總線協定棧
4.2 CAN協定棧
CAN總線标準之規定了實體層和資料鍊路層,至于應用層需要使用者自行定義,不同的應用領域,标準不同,有些領域的應用層是沒有國際标準的。
(1)實體層和資料鍊路層:ISO11898; =》CAN總線标準
- CAN總線與以太網總線類似,工作在實體層和MAC層。
- 不同的CAN标準僅實體層不同,MAC層是相同的。
(2)應用層:不同的應用領域使用不同的應用層标準。 =》 非CAN總線标準,屬于工業應用标準。
其典型的應用協定有:
- SAE J1939/ISO11783
- CANOpen
- CANaerospace
- DeviceNet
- NMEA 2000等。
4.3 CAN總線通信模型
4.4 CAN收發器
CAN總線分高速CAN和低速CAN,收發器也分為高速CAN收發器(1Mbps)和低速CAN收發器(125Kbps)。
低速CAN也叫Fault Tolerance CAN,指的是即使總線上一根線失效,總線依然可以通信。如同序列槽中的MAX3232用作電平轉換,CAN收發器的作用則是把TTL電平邏輯信号轉換為差分信号。
4.5 CAN總線實體電氣特性
在CAN總線上,利用CAN_H和CAN_L兩根線上的電位差來表示CAN信号。這與以太網采用差分信号是一樣的,不同的是以太網是單向的,CAN總線是雙向的。
CAN 總線上的電位差分為顯性電平(Dominant Voltage)和隐性電平(Recessive Voltage),其中顯性電平為邏輯 0,隐性電平為邏輯 1。
(1)高速CAN總線
高速CAN總線(ISO 11898-2,通信速率為125Kbps~1Mbps)在傳輸顯性(0)信号時,會将 CAN_H端擡向5V高電平,将CAN_L拉向0V低電平。當傳輸隐性(1)信号時,并不會驅動 CAN_H 或者 CAN_L 端。 顯性信号 CAN_H 和 CAN_L 兩端差分标稱電壓為 2V。 終端電阻在沒有驅動時,将差分标稱電壓降回 0V。顯性信号(0)的共模電壓需要在 1.5V 到 3.5V 之間。隐性信号(1)的共模電壓需要在+/-12V。
(2)低速CAN總線
低速/容錯CAN(ISO 11898-3,通信速率為10~125Kbps)在傳輸顯性信号(0)時,驅動CANH端擡向5V,将CANL端降向0V。在傳輸隐性信号(1)時并不驅動CAN 總線的任何一端。在電源電壓VCC為5V時,顯性信号差分電壓需要大于2.3V,隐性信号的差分電壓需要小于0.6V。CAN總線兩端未被驅動時,終端電阻使CAN L端回歸到RTH電壓(當電源電壓VCC為5V時,RTH電壓至少為Vcc-0.3V=4.7V),同時使CAN H端回歸至RTL電壓(RTL電壓最大為0.3V)。兩根線需要能夠承受-27V至40V的電壓而不被損壞。
在高速和低速CAN中從隐性信号向顯性信号過渡的速度更快,因為此時CAN線纜被主動積極地驅動,顯性向隐性的過渡速度主要取決于CAN網絡的長度和導線的電容。