目前工業(yè)設(shè)備之間的通信很多采用RS232接口,但由于RS232通信距離短(根據(jù)EAT/TAI-232標(biāo)準(zhǔn),僅為15 m)、接口易損,而且只能進(jìn)行點(diǎn)到點(diǎn)通信,不能直接組成多點(diǎn)通信網(wǎng)絡(luò)。為了延長RS232的通信距離,并將RS232節(jié)點(diǎn)組成通信網(wǎng)絡(luò),目前廣泛使用RS232/RS485信號(hào)轉(zhuǎn)換器。但是,由于RS485通信本身的局限性,在實(shí)際應(yīng)用中存在許多不足:總線效率低、系統(tǒng)的實(shí)時(shí)性差、通信的可靠性低、網(wǎng)絡(luò)工程調(diào)試復(fù)雜、傳輸距離不理想、單總線可掛接的節(jié)點(diǎn)少、應(yīng)用不靈活等。
基于CAN通信的優(yōu)越性,本文介紹一種可以將RS232通信網(wǎng)絡(luò)轉(zhuǎn)換成CAN通信網(wǎng)絡(luò)的方法,以更好地解決用戶建立遠(yuǎn)程通信網(wǎng)絡(luò)的問題。
1 CAN總線簡介
1.1 CAN總線概述
控制器局域網(wǎng)絡(luò)CAN(Controller Area Network),屬于現(xiàn)場總線的范疇,它是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò), 最初由德國Bosch公司于20 世紀(jì)80 年代用于汽車內(nèi)部測試和控制儀器之間的數(shù)據(jù)通信[1]。其總線規(guī)范已被ISO國際標(biāo)準(zhǔn)組織定為國際標(biāo)準(zhǔn),CAN 協(xié)議經(jīng)ISO 標(biāo)準(zhǔn)化后有ISO11898 標(biāo)準(zhǔn)和ISO11519標(biāo)準(zhǔn)兩種,這兩種標(biāo)準(zhǔn)對(duì)于數(shù)據(jù)鏈路層定義是相同的,但物理層不同。ISO11898是通信速度為125 kb/s-1 Mb/s的CAN高速通信標(biāo)準(zhǔn); ISO11519是通信速度為125 kb/s以下的CAN低速通信標(biāo)準(zhǔn)。CAN協(xié)議建立在國際標(biāo)準(zhǔn)組織的開放系統(tǒng)互聯(lián)模型基礎(chǔ)上,但其模型結(jié)構(gòu)只有三層:ISO底層的物理層、數(shù)據(jù)鏈路層和應(yīng)用層;其信號(hào)傳輸介質(zhì)可采用雙絞線、同軸電纜和光纖等;通信最大距離可達(dá)10 km;最大通信波特率可達(dá)1 Mb/s,可掛設(shè)備最多達(dá)110個(gè)。CAN總線具有的特點(diǎn),越來越廣泛地被應(yīng)用于各種工業(yè)現(xiàn)場,并被公認(rèn)為是最有前途的現(xiàn)場總線之一。
1.2 CAN總線工作機(jī)制
1.2.1 CAN的報(bào)文類型
CAN系統(tǒng)中節(jié)點(diǎn)之間以報(bào)文的形式進(jìn)行通信,其報(bào)文有五種類型:數(shù)據(jù)幀、遠(yuǎn)程幀、錯(cuò)誤幀、過載幀和幀空間[2]。每種幀都有相應(yīng)固定的格式,其中數(shù)據(jù)幀和遠(yuǎn)程幀與應(yīng)用密切相關(guān),其他類型幀由CAN控制器根據(jù)具體的情況自動(dòng)傳輸。幀種類及用途如表1所示。
1.2.2 CAN節(jié)點(diǎn)的仲裁機(jī)制
只要總線空閑,任何單元都可以開始發(fā)送報(bào)文(多主控制)。最先訪問總線的節(jié)點(diǎn)可獲得總線控制權(quán)。若多個(gè)節(jié)點(diǎn)同時(shí)開始傳送報(bào)文,就會(huì)有總線訪問沖突,可使用識(shí)別符的位形式仲裁解決這個(gè)沖突。仲裁期間,每一個(gè)發(fā)送器都對(duì)發(fā)送位的電平與被監(jiān)控的總線電平進(jìn)行比較。如果電平相同,則這個(gè)節(jié)點(diǎn)繼續(xù)發(fā)送。若發(fā)送的是隱性電平而監(jiān)控到的是顯性電平,則這個(gè)節(jié)點(diǎn)失去了仲裁,必須退出發(fā)送狀態(tài)。ID越小優(yōu)先權(quán)越高,發(fā)送高優(yōu)先級(jí) ID 消息的節(jié)點(diǎn)可獲得發(fā)送權(quán)。
1.2.3 CAN節(jié)點(diǎn)的報(bào)文濾波機(jī)制
CAN 控制器監(jiān)聽接收總線上的所有報(bào)文,只有通過CAN控制器的報(bào)文篩選器篩選的報(bào)文才能進(jìn)入CAN 的報(bào)文接收緩沖區(qū),為該節(jié)點(diǎn)所接收并傳送給應(yīng)用程序。
1.2.4 CAN節(jié)點(diǎn)狀態(tài)
CAN總線上每個(gè)節(jié)點(diǎn)都處于“錯(cuò)誤主動(dòng)”、“錯(cuò)誤被動(dòng)”和“總線關(guān)閉”三種狀態(tài)之一。區(qū)分這幾種狀態(tài)的主要依據(jù)是發(fā)送錯(cuò)誤計(jì)數(shù)器和接收錯(cuò)誤計(jì)數(shù)器的值,并且這三種狀態(tài)可以在一定條件下相互轉(zhuǎn)化。
處于錯(cuò)誤主動(dòng)狀態(tài)的節(jié)點(diǎn),當(dāng)發(fā)現(xiàn)總線上有錯(cuò)誤傳輸時(shí),將向總線上發(fā)“主動(dòng)出錯(cuò)幀”;處于錯(cuò)誤被動(dòng)狀態(tài)的節(jié)點(diǎn),當(dāng)發(fā)現(xiàn)總線上有錯(cuò)誤傳輸時(shí),將向總線上發(fā)“被動(dòng)出錯(cuò)幀”;當(dāng)節(jié)點(diǎn)進(jìn)入總線脫離狀態(tài)時(shí),將完全退出總線操作。
2 硬件電路設(shè)計(jì)
2.1 硬件設(shè)計(jì)原理
RS232串口通信與CAN通信是兩種不同的傳輸方式,無論是數(shù)據(jù)的傳輸方式還是邏輯電平的電壓表示都是不同的,本設(shè)計(jì)主要完成RS232接口與CAN總線協(xié)議之間的轉(zhuǎn)換,以及數(shù)據(jù)的雙向傳輸。設(shè)計(jì)原理如圖1所示。
RS232接口端信號(hào)經(jīng)過RS232電平轉(zhuǎn)換成TTL電平,直接輸入到微控制器的通用同步/異步串行接口(USART),微控制器控制CAN控制器讀出有效的數(shù)據(jù)經(jīng)光電隔離的CAN收發(fā)器發(fā)送到CAN總線上。
本設(shè)計(jì)采用的RS232電平轉(zhuǎn)換器為MAX232,微控制器為ATmega128,CAN總線控制器采用SJA1000,CAN總線收發(fā)器采用高速的具有收發(fā)和隔離功能的CTM1050控制器。ATmega128是整個(gè)模塊的控制中心,控制著RS232接口和CAN總線的通信。器件連接示意圖如圖2所示。
作者:王 強(qiáng) 張建喜 來源:電子技術(shù)應(yīng)用