RS232通信網(wǎng)絡(luò )與CAN總線(xiàn)通信網(wǎng)絡(luò )互聯(lián)設計
目前工業(yè)設備之間的通信很多采用RS232接口,但由于RS232通信距離短(根據EAT/TAI-232標準,僅為15 m)、接口易損,而且只能進(jìn)行點(diǎn)到點(diǎn)通信,不能直接組成多點(diǎn)通信網(wǎng)絡(luò )。為了延長(cháng)RS232的通信距離,并將RS232節點(diǎn)組成通信網(wǎng)絡(luò ),目前廣泛使用RS232/RS485信號轉換器。但是,由于RS485通信本身的局限性,在實(shí)際應用中存在許多不足:總線(xiàn)效率低、系統的實(shí)時(shí)性差、通信的可靠性低、網(wǎng)絡(luò )工程調試復雜、傳輸距離不理想、單總線(xiàn)可掛接的節點(diǎn)少、應用不靈活等。
基于CAN通信的優(yōu)越性,本文介紹一種可以將RS232通信網(wǎng)絡(luò )轉換成CAN通信網(wǎng)絡(luò )的方法,以更好地解決用戶(hù)建立遠程通信網(wǎng)絡(luò )的問(wèn)題。
1 CAN總線(xiàn)簡(jiǎn)介
1.1 CAN總線(xiàn)概述
控制器局域網(wǎng)絡(luò )CAN(Controller Area Network),屬于現場(chǎng)總線(xiàn)的范疇,它是一種有效支持分布式控制或實(shí)時(shí)控制的串行通信網(wǎng)絡(luò ), 最初由德國B(niǎo)osch公司于20 世紀80 年代用于汽車(chē)內部測試和控制儀器之間的數據通信[1]。其總線(xiàn)規范已被ISO國際標準組織定為國際標準,CAN 協(xié)議經(jīng)ISO 標準化后有ISO11898 標準和ISO11519標準兩種,這兩種標準對于數據鏈路層定義是相同的,但物理層不同。ISO11898是通信速度為125 kb/s-1 Mb/s的CAN高速通信標準; ISO11519是通信速度為125 kb/s以下的CAN低速通信標準。CAN協(xié)議建立在國際標準組織的開(kāi)放系統互聯(lián)模型基礎上,但其模型結構只有三層:ISO底層的物理層、數據鏈路層和應用層;其信號傳輸介質(zhì)可采用雙絞線(xiàn)、同軸電纜和光纖等;通信最大距離可達10 km;最大通信波特率可達1 Mb/s,可掛設備最多達110個(gè)。CAN總線(xiàn)具有的特點(diǎn),越來(lái)越廣泛地被應用于各種工業(yè)現場(chǎng),并被公認為是最有前途的現場(chǎng)總線(xiàn)之一。
1.2 CAN總線(xiàn)工作機制
1.2.1 CAN的報文類(lèi)型
CAN系統中節點(diǎn)之間以報文的形式進(jìn)行通信,其報文有五種類(lèi)型:數據幀、遠程幀、錯誤幀、過(guò)載幀和幀空間[2]。每種幀都有相應固定的格式,其中數據幀和遠程幀與應用密切相關(guān),其他類(lèi)型幀由CAN控制器根據具體的情況自動(dòng)傳輸。幀種類(lèi)及用途如表1所示。
1.2.2 CAN節點(diǎn)的仲裁機制
只要總線(xiàn)空閑,任何單元都可以開(kāi)始發(fā)送報文(多主控制)。最先訪(fǎng)問(wèn)總線(xiàn)的節點(diǎn)可獲得總線(xiàn)控制權。若多個(gè)節點(diǎn)同時(shí)開(kāi)始傳送報文,就會(huì )有總線(xiàn)訪(fǎng)問(wèn)沖突,可使用識別符的位形式仲裁解決這個(gè)沖突。仲裁期間,每一個(gè)發(fā)送器都對發(fā)送位的電平與被監控的總線(xiàn)電平進(jìn)行比較。如果電平相同,則這個(gè)節點(diǎn)繼續發(fā)送。若發(fā)送的是隱性電平而監控到的是顯性電平,則這個(gè)節點(diǎn)失去了仲裁,必須退出發(fā)送狀態(tài)。ID越小優(yōu)先權越高,發(fā)送高優(yōu)先級 ID 消息的節點(diǎn)可獲得發(fā)送權。
1.2.3 CAN節點(diǎn)的報文濾波機制
CAN 控制器監聽(tīng)接收總線(xiàn)上的所有報文,只有通過(guò)CAN控制器的報文篩選器篩選的報文才能進(jìn)入CAN 的報文接收緩沖區,為該節點(diǎn)所接收并傳送給應用程序。
1.2.4 CAN節點(diǎn)狀態(tài)
CAN總線(xiàn)上每個(gè)節點(diǎn)都處于“錯誤主動(dòng)”、“錯誤被動(dòng)”和“總線(xiàn)關(guān)閉”三種狀態(tài)之一。區分這幾種狀態(tài)的主要依據是發(fā)送錯誤計數器和接收錯誤計數器的值,并且這三種狀態(tài)可以在一定條件下相互轉化。處于錯誤主動(dòng)狀態(tài)的節點(diǎn),當發(fā)現總線(xiàn)上有錯誤傳輸時(shí),將向總線(xiàn)上發(fā)“主動(dòng)出錯幀”;處于錯誤被動(dòng)狀態(tài)的節點(diǎn),當發(fā)現總線(xiàn)上有錯誤傳輸時(shí),將向總線(xiàn)上發(fā)“被動(dòng)出錯幀”;當節點(diǎn)進(jìn)入總線(xiàn)脫離狀態(tài)時(shí),將完全退出總線(xiàn)操作。
2 硬件電路設計
2.1 硬件設計原理
RS232串口通信與CAN通信是兩種不同的傳輸方式,無(wú)論是數據的傳輸方式還是邏輯電平的電壓表示都是不同的,本設計主要完成RS232接口與CAN總線(xiàn)協(xié)議之間的轉換,以及數據的雙向傳輸。設計原理如圖1所示。RS232接口端信號經(jīng)過(guò)RS232電平轉換成TTL電平,直接輸入到微控制器的通用同步/異步串行接口(USART),微控制器控制CAN控制器讀出有效的數據經(jīng)光電隔離的CAN收發(fā)器發(fā)送到CAN總線(xiàn)上。
本設計采用的RS232電平轉換器為MAX232,微控制器為ATmega128,CAN總線(xiàn)控制器采用SJA1000,CAN總線(xiàn)收發(fā)器采用高速的具有收發(fā)和隔離功能的CTM1050控制器。ATmega128是整個(gè)模塊的控制中心,控制著(zhù)RS232接口和CAN總線(xiàn)的通信。器件連接示意圖如圖2所示。
RS232接口的發(fā)送數據端和接收數據端經(jīng)MAX232電平轉換分別與Atmega128串口、接收數據端PE0/RXD0、發(fā)送數據端PE1/TXD0相連;SJA1000的AD0~AD7連接到Atmega128的PA口,INT與Atmega128的INT0相連,ALE與Atmega128的PG2/ALE相連,讀寫(xiě)端RD、WR分別連接Atmega128的PG1/RD、PG0/WR,CS連接到Atmega128的PC6,Atmega128的時(shí)鐘取自SJA1000的振蕩器,即SJA1000的CLKOUT連接到Atmega128的XTAL1;收發(fā)器CTM1050的RX0、TX0分別連接SJA1000T的RX0、TX0, CANH、CANL連接到CAN總線(xiàn)上。
2.2 主要芯片
RS232用正負電壓來(lái)表示邏輯狀態(tài),與TTL以高低電平表示邏輯狀態(tài)的規定不同。因此,為了能夠同計算機接口或終端的TTL器件連接,必須在RS232接口與TTL電路之間進(jìn)行電平和邏輯關(guān)系的變換。MAX232芯片可完成TTL?RS232電平的雙向轉換。
ATmega128單片機是基于A(yíng)VR RISC結構的8位低功耗CMOS微處理器,為AVR單片機系列中的高性能單片機。ATmega128單片機內部帶有128 KB的系統內可編程Flash程序存儲器,具有同時(shí)讀寫(xiě)能力;4 KB的E2PROM;4 KB的SRAM;53個(gè)通用I/O端口線(xiàn);32個(gè)通用工作寄存器;4個(gè)靈活的具有比較模式和PWM功能的定時(shí)器/計數器(T/C);2個(gè)USART;串行外圍設備接口(SPI);與IEEE1149.1規范兼容的JTAG測試接口,可以用于片上調試;6種省電模式;53個(gè)可編程I/O端13線(xiàn);由于其先進(jìn)的指令集以及單周期指令執行時(shí)間,數據吞吐率高達1 MIPS/MHz等。
SJA1000是一種獨立的CAN控制器,主要用于移動(dòng)目標和一般工業(yè)環(huán)境中的區域網(wǎng)絡(luò )控制,具有新的PeliCAN操作模式,這種模式兼容CAN2.0A 和CAN2.0B 兩種技術(shù)規范[3]。SJA1000可完成CAN總線(xiàn)的物理層和數據鏈路層的所有功能,由CAN核心模塊、發(fā)送緩沖區、接收FIFO、驗收濾波器和接口管理邏輯組成[4]。
CTM1050是一款帶隔離的高速CAN收發(fā)器芯片,該芯片內部集成了所有必需的CAN隔離及CAN收、發(fā)器件,其主要功能是將CAN 控制器的邏輯電平轉換為CAN總線(xiàn)的差分電平并且具有直流2 500 V的隔離功能及ESD 保護作用。該芯片符合ISO 11898標準,可與其他遵從ISO 11898標準的CAN 收發(fā)器互連。
3 軟件設計
本設計程序主要包括:串口初始化程序、SJA1000初始化程序、單片機接收串口中斷服務(wù)子程序、單片機發(fā)送數據到串口中斷服務(wù)子程序、單片機接收CAN數據子程序、單片機發(fā)送CAN數據程序以及一些異常錯誤處理子程序等等。程序流程圖如圖3所示。
本設計可以將RS232通信網(wǎng)絡(luò )轉換成CAN通信網(wǎng)絡(luò ),能夠很方便地實(shí)現RS232多點(diǎn)組網(wǎng)、遠程通信,且不需要更改原有RS232通信軟件,用戶(hù)可直接嵌入原有的應用領(lǐng)域,使系統設計達到更先進(jìn)的水平。
評論