《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > RS232通信網(wǎng)絡(luò)與CAN總線通信網(wǎng)絡(luò)互聯(lián)設(shè)計(jì)
RS232通信網(wǎng)絡(luò)與CAN總線通信網(wǎng)絡(luò)互聯(lián)設(shè)計(jì)
來(lái)源:電子技術(shù)應(yīng)用2010年第9期
王 強(qiáng)1, 張建喜2
1.許昌職業(yè)技術(shù)學(xué)院信息工程系,河南 許昌461000; 2.蘭州交通大學(xué),甘肅 蘭州 730070
摘要: 基于CAN總線原理,結(jié)合CAN控制器SJA1000、CAN收發(fā)器CTM和ATmega128的特性,針對(duì)CAN總線和RS232互聯(lián)問(wèn)題,提出了RS232-CAN接口模塊的設(shè)計(jì)方案,詳細(xì)介紹了硬軟件設(shè)計(jì)模塊以及本設(shè)計(jì)的具體應(yīng)用。
中圖分類號(hào): TP368.1
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2010)09-0158-03
Design of connection between RS232 communication network and CAN bus communication network
WANG Qiang1, ZHANG Jian Xi2
1. Information Engineering Department, Xuchang Vocational Technology College, Xuchang 461000, China;2. Lanzhou Jiaotong University, Lanzhou 730070, China;
Abstract: Based on the principle of CAN and the feature of CAN controller SJA1000,CAN transceiver CTM1050 and MCU ATmega128,the paper provided the communication and connection issues between CAN bus line and RS-232 bus line.The paper also provided the RS232-CAN interface module for the issues.The paper introduced the design and application of the hardware module and the software module.
Key words : CAN; ATmega128; SJA1000; RS232

    目前工業(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ò)。為了延長(zhǎng)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ò)的問(wèn)題。
1 CAN總線簡(jiǎn)介
1.1 CAN總線概述

    控制器局域網(wǎng)絡(luò)CAN(Controller Area Network),屬于現(xiàn)場(chǎng)總線的范疇,它是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò), 最初由德國(guó)Bosch公司于20 世紀(jì)80 年代用于汽車內(nèi)部測(cè)試和控制儀器之間的數(shù)據(jù)通信[1]。其總線規(guī)范已被ISO國(guó)際標(biāo)準(zhǔn)組織定為國(guó)際標(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é)議建立在國(guó)際標(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),越來(lái)越廣泛地被應(yīng)用于各種工業(yè)現(xiàn)場(chǎng),并被公認(rèn)為是最有前途的現(xiàn)場(chǎng)總線之一。
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ò)誤幀、過(guò)載幀和幀空間[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)文(多主控制)。最先訪問(wèn)總線的節(jié)點(diǎn)可獲得總線控制權(quán)。若多個(gè)節(jié)點(diǎn)同時(shí)開始傳送報(bào)文,就會(huì)有總線訪問(wèn)沖突,可使用識(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)文,只有通過(guò)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通信是兩種不同的傳輸方式,無(wú)論是數(shù)據(jù)的傳輸方式還是邏輯電平的電壓表示都是不同的,本設(shè)計(jì)主要完成RS232接口與CAN總線協(xié)議之間的轉(zhuǎn)換,以及數(shù)據(jù)的雙向傳輸。設(shè)計(jì)原理如圖1所示。
    RS232接口端信號(hào)經(jīng)過(guò)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所示。

    RS232接口的發(fā)送數(shù)據(jù)端和接收數(shù)據(jù)端經(jīng)MAX232電平轉(zhuǎn)換分別與Atmega128串口、接收數(shù)據(jù)端PE0/RXD0、發(fā)送數(shù)據(jù)端PE1/TXD0相連;SJA1000的AD0~AD7連接到Atmega128的PA口,INT與Atmega128的INT0相連,ALE與Atmega128的PG2/ALE相連,讀寫端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總線上。
2.2 主要芯片
   RS232用正負(fù)電壓來(lái)表示邏輯狀態(tài),與TTL以高低電平表示邏輯狀態(tài)的規(guī)定不同。因此,為了能夠同計(jì)算機(jī)接口或終端的TTL器件連接,必須在RS232接口與TTL電路之間進(jìn)行電平和邏輯關(guān)系的變換。MAX232芯片可完成TTL⇔RS232電平的雙向轉(zhuǎn)換。
   ATmega128單片機(jī)是基于AVR RISC結(jié)構(gòu)的8位低功耗CMOS微處理器,為AVR單片機(jī)系列中的高性能單片機(jī)。ATmega128單片機(jī)內(nèi)部帶有128 KB的系統(tǒng)內(nèi)可編程Flash程序存儲(chǔ)器,具有同時(shí)讀寫能力;4 KB的E2PROM;4 KB的SRAM;53個(gè)通用I/O端口線;32個(gè)通用工作寄存器;4個(gè)靈活的具有比較模式和PWM功能的定時(shí)器/計(jì)數(shù)器(T/C);2個(gè)USART;串行外圍設(shè)備接口(SPI);與IEEE1149.1規(guī)范兼容的JTAG測(cè)試接口,可以用于片上調(diào)試;6種省電模式;53個(gè)可編程I/O端13線;由于其先進(jìn)的指令集以及單周期指令執(zhí)行時(shí)間,數(shù)據(jù)吞吐率高達(dá)1 MIPS/MHz等。
   SJA1000是一種獨(dú)立的CAN控制器,主要用于移動(dòng)目標(biāo)和一般工業(yè)環(huán)境中的區(qū)域網(wǎng)絡(luò)控制,具有新的PeliCAN操作模式,這種模式兼容CAN2.0A 和CAN2.0B 兩種技術(shù)規(guī)范[3]。SJA1000可完成CAN總線的物理層和數(shù)據(jù)鏈路層的所有功能,由CAN核心模塊、發(fā)送緩沖區(qū)、接收FIFO、驗(yàn)收濾波器和接口管理邏輯組成[4]。
   CTM1050是一款帶隔離的高速CAN收發(fā)器芯片,該芯片內(nèi)部集成了所有必需的CAN隔離及CAN收、發(fā)器件,其主要功能是將CAN 控制器的邏輯電平轉(zhuǎn)換為CAN總線的差分電平并且具有直流2 500 V的隔離功能及ESD 保護(hù)作用。該芯片符合ISO 11898標(biāo)準(zhǔn),可與其他遵從ISO 11898標(biāo)準(zhǔn)的CAN 收發(fā)器互連。
3 軟件設(shè)計(jì)
    本設(shè)計(jì)程序主要包括:串口初始化程序、SJA1000初始化程序、單片機(jī)接收串口中斷服務(wù)子程序、單片機(jī)發(fā)送數(shù)據(jù)到串口中斷服務(wù)子程序、單片機(jī)接收CAN數(shù)據(jù)子程序、單片機(jī)發(fā)送CAN數(shù)據(jù)程序以及一些異常錯(cuò)誤處理子程序等等。程序流程圖如圖3所示。

    本設(shè)計(jì)可以將RS232通信網(wǎng)絡(luò)轉(zhuǎn)換成CAN通信網(wǎng)絡(luò),能夠很方便地實(shí)現(xiàn)RS232多點(diǎn)組網(wǎng)、遠(yuǎn)程通信,且不需要更改原有RS232通信軟件,用戶可直接嵌入原有的應(yīng)用領(lǐng)域,使系統(tǒng)設(shè)計(jì)達(dá)到更先進(jìn)的水平。
參考文獻(xiàn)
[1]  王黎明,夏立,邵英,等.CAN現(xiàn)場(chǎng)總線系統(tǒng)的設(shè)計(jì)與應(yīng)用[M]. 北京:電子工業(yè)出版社,2008.
[2]  饒運(yùn)濤,鄒繼軍,鄭勇蕓,等.現(xiàn)場(chǎng)總線CAN 原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2003.
[3]  PHILIPS Corporation.SJA 1000 stand-alone CAN controller product specification[S].2000.
[4]  夏繼強(qiáng).現(xiàn)場(chǎng)總線工業(yè)控制網(wǎng)絡(luò)技術(shù)[M].北京:北京航空航天大學(xué)出版社,2005.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。