1 引言
隨著汽車工業(yè)的發(fā)展,20世紀80年代中期,率先由Bosch公司研發(fā)出新一代的汽車總線即控制器局域網(wǎng)CAN(Controller Area Network)總線,CAN總線具有布線簡單、典型的總線型結(jié)構(gòu)、可最大限度地節(jié)約布線與維護成本、穩(wěn)定可靠、實時、抗干擾能力強、傳輸距離遠等特點,這些都決定了CAN總線必定是一種成功的總線。CAN總線一經(jīng)推出,不僅在汽車行業(yè)得到廣泛的推廣與應用,在諸如航天、電力、石化、冶金、紡織、造紙等領(lǐng)域也得到廣泛應用。在自動化儀表、工業(yè)生產(chǎn)現(xiàn)場和數(shù)控機床等系統(tǒng)中也越來越多地使用了CAN總線,CAN總線的未來發(fā)展依然充滿活力,有著巨大的發(fā)展空間。
由于CAN總線本身只定義ISO/OSI模型中的第一層(物理層)和第二層(數(shù)據(jù)鏈路層),通常情況下CAN總線網(wǎng)絡(luò)都是獨立的網(wǎng)絡(luò),所以沒有網(wǎng)絡(luò)層。在實際使用中,用戶還需要自己定義應用層的協(xié)議,因此在CAN總線的發(fā)展過程中出現(xiàn)了各種版本的CAN應用層協(xié)議,現(xiàn)階段最流行的CAN應用層協(xié)議主要有CANopen、DeviceNet和J1939等協(xié)議。
本系列文章主要介紹CAN總線、基于CAN總線的應用層協(xié)議——CANopen,以及CANopen設(shè)備的應用及組網(wǎng)方式。本文主要介紹CAN總線相關(guān)的概念及網(wǎng)絡(luò)結(jié)構(gòu)。
2 CAN總線特點
CAN總線采用差分信號傳輸,通常情況下只需要兩根信號線(CAN-H和CAN-L)就可以進行正常的通信。在干擾比較強的場合,還需要用到屏蔽地即CAN-G(主要功能是屏蔽干擾信號),CAN協(xié)議推薦用戶使用屏蔽雙絞線作為CAN總線的傳輸線。在隱性狀態(tài)下,CAN-H與CAN-L的輸入差分電壓為0 V(最大不超過0.5 V),共模輸入電壓為2.5 V。在顯性狀態(tài)下,CAN-H與CAN-L的輸入差分電壓為2 V(最小不小于0.9 V),如圖 1所示。
?
其物理傳輸層詳細和高效的定義,使得CAN總線具有其他總線無法達到的優(yōu)勢,注定其在工業(yè)現(xiàn)場總線中占有不可動搖的地位,CAN總線通信主要具有如下優(yōu)勢和特點。
(1)CAN總線上任意節(jié)點均可在任意時刻主動地向其他節(jié)點發(fā)起通信,節(jié)點沒有主從之分,但在同一時刻優(yōu)先級高的節(jié)點能獲得總線的使用權(quán),在高優(yōu)先級的節(jié)點釋放總線后,任意節(jié)點都可使用總線。
(2)CAN總線傳輸波特率為5 kb/s~1 Mb/s,在5 kb/s的通信波特率下最遠傳輸距離可以達到10 km,即使在1 Mb/s的波特率下也能傳輸40 m的距離。在1 Mb/s波特率下節(jié)點發(fā)送一幀數(shù)據(jù)最多需要134 μs。
(3)CAN總線采用載波監(jiān)聽多路訪問、逐位仲裁的非破壞性總線仲裁技術(shù)。在節(jié)點需要發(fā)送信息時,節(jié)點先監(jiān)聽總線是否空閑,只有節(jié)點監(jiān)聽到總線空閑時才能夠發(fā)送數(shù)據(jù),即載波監(jiān)聽多路訪問方式。在總線出現(xiàn)兩個以上的節(jié)點同時發(fā)送數(shù)據(jù)時,CAN協(xié)議規(guī)定,按位進行仲裁,按照顯性位優(yōu)先級大于隱性位優(yōu)先級的規(guī)則進行仲裁,最后高優(yōu)先級的節(jié)點數(shù)據(jù)毫無破壞地被發(fā)送,其他節(jié)點停止發(fā)送數(shù)據(jù)(即逐位仲裁無破壞的傳輸技術(shù))。這樣能大大地提高總線的使用效率及實時性。
(4)CAN總線所掛接的節(jié)點數(shù)量主要取決于CAN總線收發(fā)器或驅(qū)動器,目前的驅(qū)動器一般都可以使同一網(wǎng)絡(luò)容量達到110個節(jié)點。CAN報文分為兩個標準即CAN2.0A標準幀和CAN2.0B擴展幀,兩個標準最大的區(qū)別在于CAN2.0A只有11位標識符,CAN2.0B具有29位標識符。
(5)CAN總線定義使用了硬件報文濾波,可實現(xiàn)點對點及點對多點的通信方式,不需要軟件來控制。數(shù)據(jù)采用短幀發(fā)送方式,每幀數(shù)據(jù)不超過8 B,抗干擾能力強,每幀接收的數(shù)據(jù)都進行CRC校驗,使得數(shù)據(jù)出錯機率極大限度地降低。CAN節(jié)點在錯誤嚴重的情況下具有自動關(guān)閉功能,避免了對總線上其他節(jié)點的干擾。
(6)CAN總線通信介質(zhì)可采用雙絞線、同軸電纜或光纖,選擇極為靈活,可大大節(jié)約組網(wǎng)成本。
3 CAN控制器介紹
隨著CAN總線的不斷發(fā)展壯大,符合CAN2.0A和CAN2.0B協(xié)議的獨立芯片越來越多。如NXP公司推出的SJA1000及SJA1000F,可以直接與普通單片機組合,使該單片機具有CAN通信的能力。隨著CAN需求的日益增大,芯片廠商也把CAN控制器直接集成到芯片內(nèi)部,例如NXP公司的LPC2119、LPC2294、LPC2378等。以下主要以LPC2378的集成CAN控制器為例,對CAN控制器作一個介紹。
LPC2378 CAN控制器結(jié)構(gòu)如圖2所示。該控制器是一個帶有發(fā)送和接收緩沖器的串行接口,但它并不含有驗收過濾器。驗收過濾器是一個獨立的模塊,能夠?qū)λ蠧AN通道進行CAN標識符過濾。
LPC2378 CAN控制器工作流程主要分為發(fā)送過程和接收過程。
(1)發(fā)送過程
CAN控制器完全受處理器控制,CPU通過內(nèi)部總線向CAN控制器的發(fā)送寄存器里填寫需要發(fā)的數(shù)據(jù),然后啟動CAN控制器的發(fā)送使能,發(fā)送的數(shù)據(jù)分別經(jīng)過位流管理器(變成在總線上發(fā)送的二進制碼)、錯誤管理邏輯(負責檢測總線狀態(tài)及發(fā)送是否出現(xiàn)錯誤)及位時序邏輯(管理數(shù)據(jù)在總線上的發(fā)送時序)、CAN收發(fā)器(負責把位流數(shù)據(jù)轉(zhuǎn)換成CAN總線能夠傳輸?shù)牟罘蛛娖?,這樣就完成了一幀CAN數(shù)據(jù)的發(fā)送,如圖3所示。
(2)接收過程
CAN數(shù)據(jù)的接收與CAN數(shù)據(jù)的發(fā)送是一個相反的過程,如圖4所示。當CAN收發(fā)器檢測到CAN總線上有數(shù)據(jù)時,CAN收發(fā)器把CAN總線上的差分信號轉(zhuǎn)換成位流數(shù)據(jù),經(jīng)過錯誤管理器及位時序邏輯單元對位數(shù)據(jù)流和時序進行檢查,再經(jīng)過位流管理器把位流數(shù)據(jù)轉(zhuǎn)換成字節(jié)數(shù)據(jù)并存放到接收緩沖器中,當一幀數(shù)據(jù)接收完了之后則由接收緩沖器產(chǎn)生數(shù)據(jù)接收中斷(通知CPU已經(jīng)接收到一幀新數(shù)據(jù)),并將產(chǎn)生的各種狀態(tài)通過改變狀態(tài)寄存器的值來表示。
以上主要介紹LPC2378 CAN工作流程,CAN2.0A/B標準協(xié)議在CAN控制器中都得以實現(xiàn),用戶只需要操作相關(guān)的CAN寄存器就可以控制CAN控制器動作(控制器的具體操作請參考LPC2378數(shù)據(jù)手冊),因此可以大大提高CAN節(jié)點的開發(fā)時間,提高工作效率。
4 CAN總線網(wǎng)絡(luò)結(jié)構(gòu)
作為一個總線型網(wǎng)絡(luò),其結(jié)構(gòu)如圖5所示,其組網(wǎng)與維護相當方便。CAN總線具有在線增減設(shè)備,即總線在不斷電的情況下也可以向網(wǎng)絡(luò)中增加或減少節(jié)點。一條總線最多可以容納110個節(jié)點,通信波特率為5 kb/s~1 Mb/s,在通信的過程中要求每個節(jié)點的波特率保持一致(誤差不能超過5%),否則會引起總線錯誤,從而導致節(jié)點的關(guān)閉,出現(xiàn)通信異常。
5 CAN總線應用層協(xié)議
由于CAN總線只定義了ISO/OSI中的物理層和數(shù)據(jù)鏈路層,因此對于不同的應用出現(xiàn)了不同的應用層協(xié)議,為了使不同廠商的產(chǎn)品能夠相互兼容,世界范圍內(nèi)需要通用的CAN應用層通信協(xié)議,在過去的20年中涌現(xiàn)出許多的協(xié)議,不過到現(xiàn)在為止能夠廣泛被承認的協(xié)議卻不多,現(xiàn)在CAN應用層協(xié)議主要有以下三種:
(1)在歐洲等地占有大部分市場份額的CANopen協(xié)議,主要應用在汽車、工業(yè)控制和自動化儀表等領(lǐng)域,目前由CIA負責管理和維護;
(2)J1939是CAN總線在商用車領(lǐng)域占有絕大部分市場份額的應用層協(xié)議,由美國機動車工程師學會發(fā)起,現(xiàn)已在全球范圍內(nèi)得到廣泛的應用;
(3)DeviceNet協(xié)議在美國等地占有相當大的市場份額,主要用于工業(yè)通信及控制和儀器儀表等領(lǐng)域。
在以后的文章中將向讀者重點介紹CANopen協(xié)議的基本概念及CANopen相關(guān)設(shè)備的使用及組網(wǎng)方法。
現(xiàn)階段我國在工業(yè)領(lǐng)域與歐洲和美國等其他的發(fā)達國家存在較大的差距。CAN總線作為新型現(xiàn)場總線已經(jīng)漫延到生活生產(chǎn)的各個領(lǐng)域,能夠提高生產(chǎn)效率以及降低生產(chǎn)成本,成為工業(yè)現(xiàn)場總線的發(fā)展趨勢。
廣州致遠電子有限公司提供各種接口的CAN卡、CAN總線分析儀、CAN網(wǎng)關(guān)及網(wǎng)橋、CAN卡的OPC服務(wù)器以及CAN相關(guān)的測試工具。