摘 要: 基于CAN總線和RS485總線的廣泛應用和各自的優(yōu)缺點,,設計了基于AT89C52單片機的RS485-CAN智能轉(zhuǎn)換器。在保留現(xiàn)有RS485系統(tǒng)硬件的基礎上添加了一個CAN總線接口,,實現(xiàn)了CAN總線與RS485之間的數(shù)據(jù)傳輸,,具有一定的使用價值。
關鍵詞: RS485總線,;CAN總線,;AT89C52單片機;串口通信
現(xiàn)場總線是一種應用于生產(chǎn)現(xiàn)場,,在現(xiàn)場設備之間,、現(xiàn)場設備與控制器之間實行雙向、串行,、多節(jié)點數(shù)字通信的技術,。RS485是一種平衡傳輸方式的串行接口標準,采用半雙工異步數(shù)據(jù)通信方式,。RS485的共線電路結構是在一對平衡傳輸線的兩端都配置終端電阻,,其收發(fā)器和接收器可以掛在平衡傳輸線的任何位置,,實現(xiàn)在數(shù)據(jù)傳輸中多個驅(qū)動器和接收器共用一個傳輸線的多點應用。目前,,在我國應用的現(xiàn)場總線中,,RS485通信總線也是被廣泛使用的數(shù)據(jù)通信總線。隨著科技的發(fā)展,,RS485總線的效率低,、系統(tǒng)的實時性差、通信的可靠性低,、后期不靈活等缺點逐漸暴露出來,。但完全放棄RS485網(wǎng)絡系統(tǒng)是不可能的,尤其是在已經(jīng)具有現(xiàn)場的硬件網(wǎng)絡中,。而CAN現(xiàn)場總線作為一種由帶CAN控制器組成的高性能串行數(shù)據(jù)通信網(wǎng)絡,,是國際上應用最廣泛的現(xiàn)場總線之一,是一種技術先進,、可靠性高,、功能完善、成本合理的遠程網(wǎng)絡通信控制方式,。因此,,可以考慮一種折中的方法,就是在保留現(xiàn)有RS485系統(tǒng)硬件結構的基礎上,,添加一個CAN總線接口,,以實現(xiàn)CAN總線接口和RS485接口之間的相互轉(zhuǎn)換。
1 系統(tǒng)整體設計方案
RS485-CAN智能轉(zhuǎn)換器實現(xiàn)了RS485總線網(wǎng)絡與CAN總線的網(wǎng)絡互連,,這種連接方法一般作為過渡性的方案,,適合那些新舊系統(tǒng)并存,性能要求不高,,新系統(tǒng)與舊系統(tǒng)有相同運行機制的地方,。該設計有1個RS485通道和1個CAN通道,可以很方便地嵌入使用RS485接口通信的網(wǎng)絡接口,、工業(yè)現(xiàn)場控制單元,、智能網(wǎng)絡接口中。原有系統(tǒng)中的RS485網(wǎng)絡與CAN網(wǎng)絡是相互獨立的,,現(xiàn)在可以在不改變原有硬件結構的前提下,,使用RS485總線設備通過RS485-CAN智能嵌入式網(wǎng)關,經(jīng)由CAN總線網(wǎng)絡與上位機進行通信,。
2 硬件設計
RS485-CAN智能轉(zhuǎn)換器由微控制器模塊,、基本模塊、CAN接口模塊,、RS485接口模塊和儲存模塊組成,。如果選擇的微處理器中集成了CAN控制器,,則無需外接CAN控制器;否則需要外接CAN控制器,。硬件設計框圖如圖1所示,。
2.1 微控制器模塊
本系統(tǒng)采用性價比較高的ATMEL單片機AT89C52,AT89C52是一個低電壓,、高性能CMOS 8 bit單片機,,片內(nèi)含8 KB的可反復擦寫的只讀程序存儲器Flash和256 B的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度,、非易失性存儲技術生產(chǎn),,兼容標準MCS-51指令系統(tǒng),內(nèi)置通用8 bit中央處理器和Flash存儲單元,。AT89C52單片機電路如圖2所示,。
D100為電源指示燈;P0口連接CAN控制器SJA1000的總線,;P2.0控制SJA1000片選信號,,SJA1000向微控制器發(fā)送數(shù)據(jù)通過INT0外部中斷的方式通知,微控制器的RD,、WD分別與SJA1000的讀寫信號相連,;TXD,、RXD與RS485收發(fā)器相連,;P1.0~P1.3與儲存器AT93C46相連;P2.6經(jīng)上拉電阻與J100跳線相連,。當不接跳線時,,P2.6為高電平,表示進行正常的RS485總線數(shù)據(jù)傳輸,;當連接跳線時,,P2.6為低電平,表示串口作為配置參數(shù)使用,。
2.2 CAN接口模塊
2.2.1 CAN總線接口的結構
一個CAN總線接口由微控制器,、CAN控制器和CAN收發(fā)器三部分組成,它們分別對應于CAN總線的物理層,、數(shù)據(jù)鏈路參和應用層,。微控制器主要負責上層應用及系統(tǒng)控制,包括CAN協(xié)議的應用層協(xié)議的實現(xiàn),,協(xié)調(diào)系統(tǒng)各設備的工作,。中間層為CAN控制器,主要負責處理數(shù)據(jù)幀,,完成數(shù)據(jù)的打包,、解包和錯誤界定,,并提供報文緩沖和傳輸濾波。底層是CAN收發(fā)器,,主要是接口電平的轉(zhuǎn)換及接口電氣特征的處理,。
2.2.2 CAN總線控制器和收發(fā)器
CAN控制器選用飛利浦公司生產(chǎn)的SJA1000 CAN總線控制模塊。SJA1000是一種獨立控制器,,用于工業(yè)環(huán)境中的CAN總線,。SJA1000的基本特征有:管腳及電氣特性與獨立CAN總線控制器PCA82C200兼容;軟件與PCA82C200兼容(缺省為基本CAN模式),;擴展接收緩沖器(64 B FIFO),;支持CAN2.0B協(xié)議,同時支持11 bit和29 bit標識符,;通信速率為1 Mb/s,;增強CAN模式(PeliCAN),支持具有很多特性的CAN2.0協(xié)議,;采用24 MHz時鐘頻率,;支持多種微處理器接口。
本設計選擇TJA1050作為CAN總線收發(fā)器,。TJA1050是CAN協(xié)議控制器和物理總線之間的接口,,是一種標準的高速CAN收發(fā)器,可以為總線提供不同的發(fā)送性能,,也為CAN控制器提供不同的接收性能,。TJA1050的主要特征有[3]:完全符合ISO 11898標準;速率最高達1 Mb/s,;電磁輻射(EME)極低,;電磁抗干擾EMI性極高;不上電的節(jié)點不會對總線造成擾動,;TXD引腳有防止箝位在顯性總線電平的超時功能,;靜音模式中提供了只聽模式和Babbling Idiot保護;保護總線引腳防止汽車環(huán)境中的瞬態(tài)干擾,;輸入級和3.3 V以及5 V的器件兼容,;輸出驅(qū)動器受到溫度保護。
CAN總線收發(fā)器TJA1050與CAN總線控制器SJA1000連接的電路圖如圖3所示,。
SJA1000的AD0~AD7與單片機的數(shù)據(jù)總線相連,,P2.0引腳作為SJA1000的片選使能端,由ALE,、WR,、RD控制SJA1000數(shù)據(jù)的接收和發(fā)送;SJA1000的11腳MODE接高電平;SJA1000的16引腳是中斷信號輸出,,與單片機的外部中斷INT0引腳相連,,在中斷允許的情況下,當有中斷發(fā)生時,,16引腳出現(xiàn)由高電平到低電平的跳變,,從而通知單片機進行相應處理;SJA1000的TX1腳懸空,;RX1引腳的電位必須維持在0.5VCC以上,,否則,將不能形成CAN總線所要求的電平邏輯,;SJA1000的TD1和RD1分別通過高速光耦6N137與SJA1000的TXD和RXD相連,,以提高CAN總線節(jié)點的抗干擾能力,保證各節(jié)點之間在電氣上是完全隔離和獨立的,。
2.3 RS485接口模塊和儲存模塊
在RS485接口電路中采用MAX485芯片作為總線接收器,,它是+5 V低功耗半雙工器件。MAX485的驅(qū)動器輸出是差分輸出,,完全滿足RS485串行協(xié)議的要求,,兼容工業(yè)標準規(guī)范。系統(tǒng)對儲存模塊的要求比較低,,掉電不丟失,,僅用來儲存系統(tǒng)的配置信息,要求的儲存空間較小,,因此選用ATMEL公司的AT93C46芯片作為存儲模塊,。
3 系統(tǒng)軟件設計
軟件設計由主程序模塊、初始化程序和中斷程序三部分組成,。CAN總線通信模塊和RS485通信模塊的主程序可以分為初始化部分和循環(huán)部分,。CAN通信模塊和RS485通信模塊的接收和發(fā)送采用的是中斷方式,。CAN總線和RS485總線的數(shù)據(jù)接收和發(fā)送采用的是中斷方式,,在中斷程序中設置相應的接收中斷標志,然后在主程序中用查詢的方式根據(jù)不同的標志進入到相應的中斷程序,。CAN控制器接收到數(shù)據(jù)后輸出中斷信號到微控制器,,引起中斷,RS485則利用微控制器的串口中斷,。初始化部分包括單片機初始化和SJA1000的初始化,。AT89C52的初始化主要是對總線片選、串口工作方式,、串口波特率,、中斷等寄存器賦初值。SJA1000初始化主要是對模式寄存器,、時鐘分頻寄存器,、驗收濾波寄存器,、驗收屏蔽寄存器、總線定時器以及輸出控制器進行設置,。在設置前要檢查SJA1000是否為復位模式,,因為要得到配置信息的寄存器僅在復位模式可寫。中斷服務程序CAN總線的接收分為查詢控制接收和中斷控制接收兩種,,為了更好地處理實時數(shù)據(jù)和實時響應控制命令,,CAN采用中斷控制命令,主流程在中斷控制的數(shù)據(jù)接收之前必須使能SJA1000的接收中斷和全局中斷,,接收中斷使能表示位于中斷使能控制器中,。首先讀取SJAQ000的中斷寄存器,然后判斷是接收中斷,、發(fā)送中斷,、總線錯誤中斷還是數(shù)據(jù)超載中斷。判斷出是哪種中斷后進入該中斷服務程序進行處理,。
本文通過RS485-CAN智能轉(zhuǎn)換器實現(xiàn)了RS485總線和CAN總線這兩種串行數(shù)據(jù)總線之間的數(shù)據(jù)通信,,而且可以設置CAN和RS485的波特率,并將參數(shù)保存到儲存器中,,具有一定的通用性,。但本文在軟件設計方面沒有更多地考慮人機交互界面的設計,還需要不斷完善,。
參考文獻
[1] 丁元杰.單片微機原理與應用技術[M].北京:北京航空航天大學出版社,,2003.
[2] 廣州周立功單片機發(fā)展有限公司.CJA1000獨立CAN控制器[Z].2003.
[3] 廣州周立功單片機發(fā)展有限公司.TJA1050CAN高速收發(fā)器應用指南[Z].2003.
[4] 劉澤祥.現(xiàn)場總線技術[M].北京:機械工業(yè)出版社,2011.