CAN Bus(Controller Area Network),控制器區(qū)域網(wǎng),起源于80年代,由國際標(biāo)準(zhǔn)化組織(ISO)所發(fā)布,因為利用雙線差動(two-wired differential),使其即使在電器條件惡劣環(huán)境下,也可正常運作的一種傳輸總線。又因雙線溝通的特性,大幅縮減了其應(yīng)用線路的使用量,也降低傳統(tǒng)線路復(fù)雜易造成錯誤的發(fā)生機會。 基于以上特性,CAN Bus一大應(yīng)用層面即被導(dǎo)入于汽車工業(yè),因傳統(tǒng)的汽車使用線路復(fù)雜,使得早期汽車內(nèi)部線路易于發(fā)生故障時且較難以排除。因此雙線差動訊號式CAN Bus的電器特性即被快速導(dǎo)入并廣泛運用在各交通工具領(lǐng)域(航空、輪船與汽車)或是工業(yè)控制。 強健的協(xié)議與其編碼格式 CAN Bus基本的協(xié)議可分為CAN2.0A與CAN2.0B兩個版本,A版與B版的主要差別在于識別子(ID)長度分別為11位與29位。如圖1所示為一個CAN 2.0協(xié)議傳輸?shù)臄?shù)據(jù)封包(Data Frame)。 ![]() 圖1. CAN協(xié)議編碼格式圖 圖1為一個CAN數(shù)據(jù)封包的格式,可分為起始域、仲裁域、控制域、數(shù)據(jù)域、CRC域、應(yīng)答域和結(jié)束域。每個封包(Frame)最長可達128位,以下分別說明各域的意義,其它詳細(xì)資料可參考BOSCH公司的相關(guān)CAN Bus技術(shù)文件。 ●起始域(SOF, Start of Frame):該值必為0,表示封包的開始。 ●仲裁域(Arbitration Field):用于確定封包的優(yōu)先級,由11位或29位識別子(ID)加上一位的RTR(Remote Transfer Request),當(dāng)RTR為0時,表示傳出資料;RTR為1則表示為接收資料。 ●控制域(Control Field):包含兩個保留位(一般為0)和表示數(shù)據(jù)域內(nèi)的數(shù)據(jù)長度DLC0~DLC3共有4位。 ●數(shù)據(jù)域(Data Field):0~8個Byte的被傳送數(shù)據(jù) ●CRC域(CRC Field):從SOF到Data Field的CRC驗證碼,用于檢測傳輸上的錯誤,共有15位的長度。 ●應(yīng)答域(ACK Field):確認(rèn)對方接收是否正常,若接收成功則會回傳1。 ●結(jié)束域(EOF, End of Frame):表示封包的結(jié)束,為7位連續(xù)的1。 CAN Bus的特征與優(yōu)點 ●CAN Bus可透過簡單的信息濾波設(shè)定實現(xiàn)點對點、一對多個點或全網(wǎng)絡(luò)廣播等資料的傳輸方式。 ●沒有特定的主從端,且可以以多個主端方式工作,因此Bus上各節(jié)點均可在任一時刻主動發(fā)送信息至其它節(jié)點。 ●藉由封包內(nèi)仲裁域內(nèi)的識別子來判定優(yōu)先權(quán),而非藉由地址,因CAN Bus為非破壞性的總線仲裁之技術(shù),當(dāng)優(yōu)先層級不同的事件發(fā)生,層級低的節(jié)點會主動放棄總線訪問的權(quán)利,而高優(yōu)先層級的可繼續(xù)傳輸而不受影響。 ●因具有優(yōu)先層級之特性,大幅節(jié)省了當(dāng)總線發(fā)生沖突時的仲裁時間,提升系統(tǒng)的實時性,而不會出現(xiàn)網(wǎng)絡(luò)癱瘓的機會。 ●具有良好的擴充性,因CAN Bus協(xié)議是定義信息,非以站臺方式定義,因此可不需為軟件硬件做修改即可增加站臺。 ●傳輸?shù)木嚯x與傳輸速度成反比,當(dāng)傳輸距離達10km時傳輸速率約為5Kbps,若需較高的傳輸速率1Mbps,此時的傳輸距離為40m。 ●在CAN Bus上的每個封包具有強大的CRC檢驗與防錯機制,大幅降低了資料的出錯率。 ●CAN Bus的通訊介質(zhì)可為光纖、同軸電纜與常見的雙絞線,相較其它通訊方式較為彈性。 CAN Bus的架構(gòu)與輸出準(zhǔn)位 CAN Bus為利用一種雙線的差動訊號傳輸規(guī)格,典型的CAN節(jié)點皆會由一個機械控制單元(Micro Controller Unit, MCU)來做控制,如圖2所示,MCU中CAN Controller透過CAN_TX與CAN_RX傳送/接收訊號至CAN Transceiver轉(zhuǎn)換成差動訊號CAN_H與CAN_L。而終端電阻120歐姆能有效的吸收CAN網(wǎng)絡(luò)上的反射波,有效地增強信號。 ![]() 圖2. CAN Bus架構(gòu)圖 圖3為CAN Bus輸出準(zhǔn)位圖,當(dāng)CAN_H與CAN_L均為2.5V時,數(shù)據(jù)值為邏輯1(隱性);而CAN_H = 3.5V與CAN_L = 1.5V時,數(shù)據(jù)值為邏輯0(Dominant)。 ![]() 圖3. CAN Bus輸出準(zhǔn)位圖 強大且可靠的自我檢測能力 CAN Bus協(xié)議中具有五種錯誤偵測的方法,其中三個是屬于信息(Message)層級,而另外兩個位(Bit)層級的檢查。當(dāng)一個信息發(fā)生錯誤,使該節(jié)點不接收這個信息,并產(chǎn)生一個錯誤的封包,而發(fā)送端會嘗試重新發(fā)送新的一個信息。通過以下的偵錯方法使CAN Bus的錯誤率低于4.7x10-11。 1. CRC:循環(huán)冗余校驗,CRC檢查為一個15位的CRC,計算其傳送訊息結(jié)尾的FCS(Frame Check Sequence)并進行比對,如果不同則為CRC錯誤。 2. ACK Errors:接收的一端在接收訊息后會發(fā)送ACK告知發(fā)送端,如果發(fā)送訊息的一端沒有收到則為ACK錯誤。 3. Frame Check:檢查封包中的幾個特定位,來驗證內(nèi)容是否正確。 4. Monitoring:將一個位的資料寫至CAN Bus在讀回來驗證是否發(fā)生錯誤。 5. Bit Stuffing:用于訊號同步使用。 基于優(yōu)先權(quán)的仲裁特色解決多節(jié)點發(fā)生沖突的問題 CAN Bus采用了非破壞性的仲裁(Non-Destructive Bitwise Arbitration),因為每個訊息封包都具其優(yōu)先權(quán),而優(yōu)先權(quán)由仲裁域內(nèi)部的識別子決定。當(dāng)許多結(jié)果同時發(fā)送訊息時,只有發(fā)送高優(yōu)先權(quán)的封包的節(jié)點才能成為CAN Bus上的主站。 基于在各優(yōu)先層級的仲裁來自于識別子與跟隨在識別子后的傳送請求(RTR)決定,具有兩個不同識別子的封包中,較高優(yōu)先權(quán)的識別子具有較低的二進制數(shù)值。因此注意到的是,在一個系統(tǒng)中每條訊息都需給予唯一的是識別子;具有指定的識別子和Data Length Code (DLC)的數(shù)據(jù)封包僅可由一個節(jié)點所激活。 當(dāng)CAN Bus閑置時呈現(xiàn)隱性電壓準(zhǔn)位,這時任何一個節(jié)點都可以發(fā)送一個顯性電壓準(zhǔn)位做為一個封包的開始;若有兩個以上的節(jié)點發(fā)送,即產(chǎn)生了競爭,而CAN Bus解決的方式為對識別子進行仲裁,各發(fā)送節(jié)點除了一邊向CAN Bus發(fā)送電壓準(zhǔn)位,同時與回收CAN Bus進行比較,若電壓準(zhǔn)位相同,則繼續(xù)發(fā)送下一位,若電壓準(zhǔn)位不同則不向下發(fā)送,退出競爭。因此識別子為隱性準(zhǔn)位時,競爭的優(yōu)先級就較低,而最高優(yōu)先級的識別子應(yīng)該全是顯性準(zhǔn)位。 以NUC240/NUC140/NUC130作為電梯控制器和監(jiān)測應(yīng)用設(shè)計的解決方案 NUC240 CAN Bus的特色 在實現(xiàn)電梯控制器和監(jiān)測的設(shè)計模塊應(yīng)用,筆者選擇的解決方案為臺灣新唐科技的NUC240、NUC140與NUC130,新唐科技于2012年年底推出NUC200系列MCU,其中NUC240為NUC200系列中富含最多周邊的產(chǎn)品系列,也是少數(shù)具有兩組CAN信道的MCU廠商。使用者亦可透過Nu-LB-NUC240學(xué)習(xí)板搭配BSP鏈接庫(Board Support Package)即可簡易地對相關(guān)周邊上手。 NUC240 CANBus特色如下: ●支持CAN的協(xié)議規(guī)范2.0 A和2.0 B。 ●傳輸速率最快可達1 MBit/s。 ●32個訊息目標(biāo) ●每一個訊息目標(biāo)都有自己的識別子屏蔽。 ●可程序化的FIFO模式(鏈接訊息目標(biāo)) ●可作為屏蔽中斷。 ●對時間觸發(fā)的CAN應(yīng)用關(guān)閉自動重傳模式。 ●自我檢測時具可程序化的look-back模式。 ●16-bit模塊接口至AMBA APB Bus。 ●支持MCU由熟睡模式中喚醒功能。 NuMicro MCU CAN Bus方塊圖 圖4為NuMicro MCU內(nèi)部CAN模塊的內(nèi)部架構(gòu),主要包含CAN Core、Message RAM、Module Interface和Message Handler四個部分,其中CAN Core負(fù)責(zé)錯誤偵測與處里,是CAN的主要核心;Message RAM為傳送與接收的緩沖器;Module Interface為與CAN Core與CPU溝通的主要接口。Message Handler則為傳送與接收命令控制中樞。 ![]() 圖4. NuMicro MCU CAN Bus方塊圖 電梯控制系統(tǒng)方塊圖說明 由圖5電梯控制系統(tǒng)圖得知,在各樓層皆需要一個MCU來做為樓層信息的判斷或是錯誤的回報,故選具有一組CAN功能的NUC130作為各樓層的MCU配置。依序?qū)㈦娞輼菍泳幪?-1~1-7與第二棟樓層編號2-1~2-7以CANBus連至一起,形成一個網(wǎng)絡(luò)系統(tǒng)(A1)。同理樓層編號3-1~3-7與4-1~4-7形成另一CAN網(wǎng)絡(luò)系統(tǒng)(A2),每一棟電梯皆有其獨立的步進馬達來控制電梯的包廂。 在此選用具有兩組CAN Bus信道的NUC240做為電梯系統(tǒng)主要的運算處理與馬達控制器,其一信道為連接兩棟電梯大樓間的CANBus;另一信道(B)則連接至另一電梯控制器以及中控室的部分。最后中控室可透過USB方式與PC端連接,做為顯示監(jiān)控接口或除錯處里。 ![]() 圖5. 電梯控制與監(jiān)測系統(tǒng)圖 電梯模塊運作流程說明 電梯的運作行為可以很多種方式呈現(xiàn),但主要的目的皆來自于接獲各樓層乘客指令,平安地送達至指定樓層。如同搭乘百貨大樓電梯,于樓層顯示面板(NUC130)按下上(下)樓按鍵,此時因CAN Bus網(wǎng)絡(luò)特性,可發(fā)現(xiàn)不同棟而相同樓層之上下樓按鍵會同時顯示燈號,并且所有樓層與NUC240皆顯示當(dāng)下電梯廂之樓層;待電梯移至被按下上(下)按鍵之樓層,乘客進入后再按下指定前往樓層按鍵即可。另外當(dāng)電梯發(fā)生故障時,位處中控室之管理員亦可透過簡單的人機接口以簡單的USB連接計算機與NUC140將其資料讀出。 |