基于CAN總線的家庭控制器的設(shè)計與實現(xiàn)
引言
CAN(Controller Area Network)總線是德國Bosch公司為解決現(xiàn)代汽車中眾多的控制與測試儀器之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議,它是一種多主總線,通信介質(zhì)可以是雙絞線、同軸電纜或光導(dǎo)纖維,通信速率可達(dá)1Mbps,通信距離可達(dá)10km,CAN協(xié)議的一個最大特點是廢除了傳統(tǒng)的站地址編碼,而代之以對通信數(shù)據(jù)塊進(jìn)行編碼,使網(wǎng)絡(luò)內(nèi)的節(jié)點個數(shù)在理論上不受限制。由于CAN總線具有較強的糾錯能力,支持差分收發(fā),因而適合高干擾環(huán)境,并具有較遠(yuǎn)的傳輸距離。因此,CAN協(xié)議對于許多領(lǐng)域的分布式測控是很有吸引力的。目前CAN已成為ISO11898標(biāo)準(zhǔn),其特性如下:
?。?)CAN是一種有效支持分布式控制和實時控制的串行通信網(wǎng)絡(luò)。
?。?)CAN協(xié)議遵循ISO/OSI模型,采用了其中的物理層、數(shù)據(jù)鏈路層與應(yīng)用層。
?。?)CAN 可以多主方式工作,本質(zhì)上也是一種CSMA/CD方式,網(wǎng)絡(luò)上任意一個節(jié)點均可以在任意時刻主動地向網(wǎng)絡(luò)上的其它節(jié)點發(fā)送信息,而不分主從,節(jié)點之間有優(yōu)先級之分,因而通信方式靈活;CAN采用非破壞性位仲裁技術(shù),優(yōu)先級發(fā)送,可以大大節(jié)省總線沖突促裁時間,在重負(fù)荷下表現(xiàn)出良好的性能;CAN可以點對點、一點對多點(成組)及全局廣播等幾種方式傳送和接收數(shù)據(jù)。
?。?)CAN的直接通信距離最遠(yuǎn)可達(dá)10km(傳輸速度為5 Kbps);最高通信速率可達(dá)1Mbps(傳輸距離為40m)。
?。?)CAN上的節(jié)點數(shù)據(jù)實際可達(dá)110個。
(6)CAN數(shù)據(jù)鏈路層采用短幀結(jié)構(gòu),每一幀為8個字節(jié),易于糾錯;CAN每幀信息都有CRC校驗及其它檢錯措施,有效地降低了數(shù)據(jù)的錯誤率;CAN節(jié)點在錯誤嚴(yán)重的情況下,具有自動關(guān)閉的功能,使總線上其它節(jié)點不受影響。
?。?)信號調(diào)制解調(diào)方式采用NRZ編碼/解碼方式,并且采用插入填充位(位填充)技術(shù)。
?。?)數(shù)據(jù)位具有支配“0”(Dominant bit)和退讓“1”(Recessive bit)兩種邏輯值,采用時鐘同步技術(shù),具有硬件自同步和定時時間自動跟蹤功能。
基于CAN總線的家庭控制器總線設(shè)計方案
在進(jìn)入信息化時代的今天,人們對于居住環(huán)境中的安全性、舒適性要求已越來越高,建立住宅小區(qū)計算機管理局域網(wǎng),實現(xiàn)小區(qū)綜合管理的網(wǎng)絡(luò)化勢在必行。通過遍布于整個住宅區(qū)的家庭控制器和中央計算機系統(tǒng),實現(xiàn)對住宅的智能化管理。
圖 1是基于CAN總線的總體結(jié)構(gòu)示意圖,系統(tǒng)采用支持CAN標(biāo)準(zhǔn)的總線型網(wǎng)絡(luò)。中央計算機系統(tǒng)(上位機PC)通過CAN接口適配卡與CAN總線相連,進(jìn)行數(shù)據(jù)交換。通過雙絞線把中央計算機系統(tǒng)和家庭控制器(下位智能節(jié)點)掛接在一條總線上,構(gòu)成低層通信網(wǎng)絡(luò)。由于采用了CSMA/CD的信息傳輸控制技術(shù),允許總線上各節(jié)點平等爭用總線,從而可構(gòu)成具有多主節(jié)點的冗余網(wǎng)絡(luò)結(jié)構(gòu)。
在低層通信網(wǎng)絡(luò)中,中央計算機系統(tǒng)和家庭控制器分別有自己的ID標(biāo)志。由于采用CAN標(biāo)準(zhǔn)作為網(wǎng)絡(luò)通信協(xié)議,各節(jié)點在網(wǎng)絡(luò)中的地位相同,于是我們可以將中央計算機系統(tǒng)虛擬成主機,而家庭控制器則虛擬成從機,響應(yīng)主機的要求。中央計算機系統(tǒng)負(fù)責(zé)對整個CAN總線系統(tǒng)進(jìn)行監(jiān)視管理,具有系統(tǒng)參數(shù)(如傳輸速率、節(jié)點地址等)設(shè)置、數(shù)據(jù)發(fā)送、數(shù)據(jù)請求、本機狀態(tài)查詢、節(jié)點狀態(tài)查詢、中斷狀態(tài)查詢等功能。系統(tǒng)工作過程為上位機向下位節(jié)點(家庭控制器)發(fā)送命令,下位節(jié)點識別并執(zhí)行相應(yīng)命令。同時各下位節(jié)點也可按要求進(jìn)行信息交換。
在數(shù)據(jù)鏈路層中,規(guī)定了支持CAN協(xié)議的兩種幀類型:數(shù)據(jù)幀和遠(yuǎn)程幀。數(shù)據(jù)幀用來發(fā)送數(shù)據(jù),用于一個節(jié)點傳送信息到其它任一或所有節(jié)點;遠(yuǎn)程幀用來“遠(yuǎn)程發(fā)送請求”,用于一個節(jié)點主動要求其它節(jié)點發(fā)送信息,兩種幀的具體格式如圖2所示。
硬件電路設(shè)計
家庭控制器硬件設(shè)計
本系統(tǒng)是由許多智能家庭控制器通過CAN總線相連而組成的一個控制器局部網(wǎng),因此,CAN總線的設(shè)計就顯得極為重要。其中,CAN控制器的選取、CAN收發(fā)器以及抗干擾措施將成為設(shè)計的關(guān)鍵。
①CAN控制器的選取
為了系統(tǒng)進(jìn)一步擴展的需要,可選取支持CAN2.0B通信協(xié)議的SJA1000。SJA1000是PHILIPS公司最新生產(chǎn)的既支持CAN2.0B又支持 CAN2.0A的CAN控制器,它與僅支持CAN2.0A的CAN控制器PCA82C200在硬件上和軟件上完全兼容。
?、贑AN收發(fā)器
PCA82C250是PHILIPS公司的CAN控制器和物理總線間的接口,提供對總線的差動發(fā)送和接收能力。它與ISO11898標(biāo)準(zhǔn)完全兼容,有三種不同的工作方式即高速、斜率控制和待機,可根據(jù)實際情況選擇。
?、酃怆姼綦x
為了進(jìn)一步提高系統(tǒng)的抗干擾能力,在控制器SJA1000和收發(fā)器PCA82C250之間增加了由高速隔離器件6N137構(gòu)成的隔離電路,電源采用DC-DC變換器。
硬件電路中使用PCA82C250是為了增大通信距離,提高系統(tǒng)的瞬間抗干擾能力,保護(hù)總線,降低射頻干擾(RFI),實現(xiàn)熱防護(hù)等。
CAN器件與微處理器的硬件結(jié)構(gòu)圖如圖3所示。
CAN接口適配卡和CAN總線中繼器
CAN接口適配卡完成CAN-PC總線的通信。適配卡由單片機89C51、CAN控制器SJA100、CAN收發(fā)器89C250及其控制電路組成。
由于CAN收發(fā)器的限制,在一個CAN總線網(wǎng)絡(luò)中,最多只能有110個CAN節(jié)點,最多只能有110個CAN節(jié)點。利用中繼器可對CAN總線進(jìn)行擴展,不但可使CAN節(jié)點總數(shù)達(dá)到2032個,而且可使CAN通信距離成倍增加,同時也可以把兩個不同速率的CAN網(wǎng)連接在一起,組成更復(fù)雜的CAN網(wǎng)絡(luò)。
中繼器采用特定的控制邏輯控制一對CAN收發(fā)器82C250.CAN收發(fā)器背-背相接,連接兩個物理上獨立的CAN網(wǎng),雙向傳輸數(shù)據(jù)。從物理層上看,中繼器實現(xiàn)CAN總線信號的透時中繼。
軟件設(shè)計
上位機軟件
采用Visual Basic 6.0開發(fā)軟件。分兩大功能模塊:高層系統(tǒng)管理模塊和低層通信模塊。程序流程圖如圖4所示。
家庭控制器(節(jié)點)軟件
實現(xiàn)與上位機及其它節(jié)點的信息交換。
在軟件設(shè)計中, 遵循模塊化設(shè)計思想,采用結(jié)構(gòu)化程序設(shè)計方案,使之具有良好的模塊性、可修改性和可移值性。
CAN總線系統(tǒng)的初始化設(shè)計是軟件設(shè)計的關(guān)鍵,這一部分設(shè)計不好,系統(tǒng)將不可能正常工作。因此初始化設(shè)計是一個難點,又是一個重點。
在初始化之前,應(yīng)設(shè)置輸出控制寄存器(OCR)的復(fù)位請求位為高,再設(shè)置其它寄存器??刂萍拇嫫鳎–R)設(shè)定中斷;命令寄存器(CMR)控制緩存器的接收狀態(tài);中斷寄存器(IR)、狀態(tài)寄存器(SR)查詢SJA1000的工作狀態(tài);接收碼寄存器(ACR)設(shè)定工作地址;接收屏蔽寄存器(AMR)設(shè)定工作形式,總線定時寄存器(BTR0、BTR1)設(shè)定工作頻率、采樣頻率;輸出控制寄存器(OCR)一般為正常輸出方式,最后應(yīng)使復(fù)位請求位從高變低,使CAN 控制器進(jìn)入正常工作狀態(tài)。因此,對CAN控制器進(jìn)行初始化,實際上就是對ACR,AMR,BTR0,BTR1和OCR這些寄存器進(jìn)行訪問。
成功地初始化SJA1000后,系統(tǒng)就可以應(yīng)用它來傳輸報文。
結(jié)語
CAN總線以其高性能、高可靠性及其獨特的設(shè)計越來越受到人們的重視,并被公認(rèn)為最有前途的總線之一。我們在家庭控制器系統(tǒng)中應(yīng)用了這種總線技術(shù),設(shè)計了硬件電路和軟件,并得到實際應(yīng)用。