摘要:目前現(xiàn)場總線有以下十幾種,各總線之間規(guī)范不一樣,都有自己的適用范圍,其中CAN (Controller Area Network)總線以其高性能、高可靠性及更獨特的設(shè)計越來越受到人們的重視,并已被公認(rèn)為幾種最有前途的現(xiàn)場總線之一。本文給出了智能儀表中通用的CAN通信接口的硬件設(shè)計與軟件實現(xiàn)框圖。
關(guān)鍵詞:單片機;智能儀表;CAN
1 前言
在計算機數(shù)據(jù)傳輸領(lǐng)域內(nèi),長期以來使用RS-232通信標(biāo)準(zhǔn),盡管它們被廣泛的使用,但卻是一種低數(shù)據(jù)速率和點對點的數(shù)據(jù)傳輸標(biāo)準(zhǔn),無能力支持更高層次的計算機之間的功能操作。同時,在復(fù)雜或大規(guī)模應(yīng)用中(如工業(yè)現(xiàn)場控制或生產(chǎn)自動化領(lǐng)域),需要使用大量的傳感器、執(zhí)行器和控制器等,它們通常分布在非常廣的范圍內(nèi),所以,在最底層上的確需要設(shè)計出一種造價低廉而又能經(jīng)受工業(yè)現(xiàn)場環(huán)境的通信系統(tǒng),現(xiàn)場總線(Field Bus)在這種背景下產(chǎn)生了。
現(xiàn)場總線是連接智能現(xiàn)場設(shè)備和自動化系統(tǒng)的數(shù)字式、雙向傳輸、多分支結(jié)構(gòu)的通信網(wǎng)絡(luò)。其拓?fù)浣Y(jié)構(gòu)如圖一?,F(xiàn)場總線技術(shù)自70年代誕生至今,由于它在減少系統(tǒng)線纜,簡化系統(tǒng)安裝、維護和管理,降低系統(tǒng)的投資和運行成本,增強系統(tǒng)性能等方面的優(yōu)越性,引起人們的廣泛注意,得到大范圍的推。
CAN 是一種有效支持分布式控制或?qū)崟r控制的串行通信網(wǎng)絡(luò),最初是由德國BOSCH公司為汽車監(jiān)測、控制系統(tǒng)而設(shè)計的。由于CAN總線本身的特點,其應(yīng)用范圍目前己不再局限于汽車行業(yè),而向過程工業(yè)、機械工業(yè)、紡織機械、農(nóng)用機械、機器人、數(shù)控機床、醫(yī)療器械、傳感器及智能儀表等領(lǐng)域發(fā)展。
智能儀表是自動化學(xué)科的重要組成部分。隨著科學(xué)技術(shù)的迅速發(fā)展,尤其是微電子、計算機和通信技術(shù)日新月異的變化,智能儀表向著數(shù)字化、網(wǎng)絡(luò)化和智能化方向發(fā)展,智能儀表一方面可以進(jìn)行人機對話及與外部儀器設(shè)備對話,通過現(xiàn)場總線接連入自動測試系統(tǒng)。另一方面,使用者借助面板上的鍵盤和顯示屏,可用對話方式選擇測量功能、設(shè)置參數(shù)。當(dāng)然,通過總線中的工業(yè)計算機也可獲得測量節(jié)點的數(shù)據(jù)。
2 CAN的接口設(shè)計
CAN總線是一種串行數(shù)據(jù)通信協(xié)議,在CAN總線通信接口中集成了CAN協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可以完成對通信數(shù)據(jù)成幀處理。CAN總線接口的具體的電路設(shè)計如圖1所示。
筆者用SJA1000作為流量計的CAN控制器,與CPU(單片機)的I/O口直接相連,再通過PCA82C250組成CAN總線。這種結(jié)構(gòu)很容易實現(xiàn)CAN網(wǎng)絡(luò)節(jié)點中的信息收發(fā),從而實現(xiàn)對現(xiàn)場的控制。
SJA1000 的AD0~AD7連接到MSP420F149的P0口,INT接到P1.0,/CS接到P1.1,/RD連接到P1.2,/WR連到P1.3,ALE連到 P1.4,SJA1000的RX0與TX0分別通過兩個高速光耦CNW137與PCA82C250相連后,連到CAN總線上。
PCA82C250為CAN總線收發(fā)器,是CAN控制器與CAN總線的接口器件,對CAN總線差分方式發(fā)送,其RS引腳用于選擇PCA82C250的工作方式:高速方式、斜率方式。RS接地為高速,RS引腳串接一個電阻后再接地,用于控制上升和下降斜率,從而減小射頻干擾。RS引腳接高電平, PCA82C250處于等待狀態(tài)。此時,發(fā)送器關(guān)閉,接收器處于低電流工作,可以對CAN總線上的顯性位做出反應(yīng),通知CPU。實驗數(shù)據(jù)表明 15~200K為較理想的取值范圍,在這種情況下,可以使用平行線或雙絞線作總線,本文中PCA82C250的斜率電阻為取30K。
CNW137為高速光耦,最高速度為10Mbps,用于保護CAN總控制器SJA1000。CAN總線的終端匹配電阻起相當(dāng)重要的作用,不合適的電阻會使數(shù)據(jù)通信的抗干擾性及可靠性大大降低,甚至無法通信,范圍為108~132Ω,本文使用的電阻為124Ω。
2.1 SJA1000的功能
CAN通信協(xié)議主要由CAN控制器完成。SJA1000是適用于汽車和一般工業(yè)環(huán)境控制器局域網(wǎng)(CAN)的高集成度獨立控制器,具有完成高性能通信協(xié)議所要求的全部必要特性,具有簡單總線連接的SJA1000可完成物理層和數(shù)據(jù)鏈路層的所有功能,應(yīng)用層功能可由微控制器完成,SJA1000為其提供了一個多用途的接口。
SJA1000是一個獨立的CAN控制器,它是Philips公司另一個CAN控制器PCA82C200的后繼產(chǎn)品,在軟件和引腳上均與 PCA82C200兼容。但它不僅僅是PCA82C200的一個簡單替代產(chǎn)品,它增加了許多新的功能,使得其性能更佳,尤其適用于對系統(tǒng)優(yōu)化、診斷和維護要求比較高的場合。
SJA1000的功能框圖如圖2所示,由以下幾部分構(gòu)成:接口管理邏輯;發(fā)送緩沖器,能夠存儲1個完整的報文(擴展的或標(biāo)準(zhǔn)的);驗收濾波器;接收FIFO;CAN核心模塊。
2.2 82C250
SJA1000的一端與單片機相連,另一端與CAN總線相連。但是,為了提高單片機對CAN總線的驅(qū)動能力,可以把82C250作為CAN控制器和物理總線間的接口,以提供對總線的差動發(fā)送能力和對CAN控制器的差動接收能力。82C250的主要特性如下:
·與ISO/DIS11898標(biāo)準(zhǔn)兼容;
·高速(最高可達(dá)1 Mb/s );
·具有抗汽車環(huán)境下的瞬間干擾和保護總線能力;
·降低射頻干擾的斜率控制 ;
·熱保護;
·防護電池與地之間發(fā)生短路 ;
·低電流待機方式;
·某個節(jié)點掉電不會影響總線 ;
·可有110個節(jié)點相連接。
3 CAN通信程序框圖
SJA1000操作期間,在上電之前必須配置控制線路(中斷、復(fù)位、片選等)用于建立與CAN控制器之間進(jìn)行通信的硬件連接。初始化、CAN通信采用中斷方式數(shù)據(jù)發(fā)送和接收子程序,其流程如圖3、圖4和圖5所示。
[ALIGN=CENTER]
[/ALIGN]
如果在上電后獨立CAN控制器在引腳17得到1個復(fù)位脈沖(低電平),它能夠進(jìn)入復(fù)位模式。在對SJA1000寄存器設(shè)置前,CAN控制器通過讀復(fù)位模式/請求標(biāo)志來檢查是否已達(dá)到復(fù)位模式,因為要配置信息的寄存器僅在復(fù)位模式才能寫入,涉及對控制寄存器(CR),驗收碼寄存器(ACR ),驗收屏蔽寄存器(AMR ),總線定時寄存器(BTRO和BTR1)和輸出控制寄存器(OCR)的初始化編程。
時鐘分頻寄存器,可以選擇BasicCAN或PeliCAN工作模式,設(shè)置CLKOUT管腳使能用來選擇頻率,設(shè)置是否使用旁路CAN輸入比較器和是否使用TX 1輸出被用作專門的接收中斷輸出。
驗收代碼和驗收屏蔽寄存器的設(shè)置可以過濾信息,為收到的信息定義驗收代碼為和驗收代碼相關(guān)位比較定義驗收屏蔽代碼。
總線定時寄存器,定義總線上的位速率。輸出控制寄存器定義CAN總線輸出管腳TX0和TX1的輸出模式,定義TX0和TX1輸出管腳配置是懸空、下拉、上拉或推挽以及極性。中斷寄存器設(shè)置允許識別的中斷源。
4 結(jié)論
多個智能儀表與通過CAN接口與PC聯(lián)系成總線網(wǎng),系統(tǒng)運行良好。這種基于現(xiàn)場總線的智能儀表系統(tǒng)抗干擾性強、性能可靠,無論是測量速度、精確度、自動化程序還是性價比都是傳統(tǒng)儀表不能比擬的,是今后儀器儀表發(fā)展的方向。