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