《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > CAN-485協(xié)議控制器在列車控制網(wǎng)絡(luò)中的應(yīng)用
CAN-485協(xié)議控制器在列車控制網(wǎng)絡(luò)中的應(yīng)用
來源:微型機與應(yīng)用2013年第15期
錢存元,施招東
(同濟大學(xué) 鐵道與城市軌道交通研究院,,上海 201804)
摘要: 設(shè)計了一種適用于列車控制網(wǎng)絡(luò)的CAN-485協(xié)議控制器來實現(xiàn)RS-485網(wǎng)絡(luò)與CAN網(wǎng)絡(luò)互聯(lián),,對于研究CAN總線在列車控制網(wǎng)絡(luò)中的應(yīng)用具有一定的價值。
Abstract:
Key words :

 CAN總線是一種雙向,、串行,、多節(jié)點網(wǎng)絡(luò),被廣泛應(yīng)用于各種分布式和實時控制系統(tǒng)中,,被認為是一種很有發(fā)展前景的現(xiàn)場總線,。

 列車控制網(wǎng)絡(luò)就是一種分布式計算機系統(tǒng),它通過車輛總線來傳遞控制,、監(jiān)測及故障診斷等信息,。由于列車控制網(wǎng)絡(luò)對于安全性的要求極高,為排除單一故障影響系統(tǒng)功能的可能性,,對于控制系統(tǒng)的重要部分要求采取冗余設(shè)計[1],。CAN總線是一種支持構(gòu)成多主結(jié)構(gòu)或冗余結(jié)構(gòu)的現(xiàn)場總線,對于實現(xiàn)提供多機備份,、提高系統(tǒng)可靠性,、簡化系統(tǒng)結(jié)構(gòu)和降低安裝難度具有十分積極的作用。這種特性正好符合了列車上對于監(jiān)測控制系統(tǒng)布線精簡的要求,,非常適合應(yīng)用于列車控制網(wǎng)絡(luò)的設(shè)計,。
 與RS-485總線相比,CAN總線有其自身不可替代的優(yōu)勢,。CAN總線發(fā)送,、回收電平都需相互校驗,而且每一幀都有響應(yīng)位,,再加上硬化的CRC校驗,,使得CAN總線在強噪聲環(huán)境下較RS-485總線的安全性更高。CAN總線系統(tǒng)還具有良好的故障隔離能力,,在任意時刻CAN_H的電平只能處于高電平和懸浮狀態(tài),,而CAN_L端的電平則只能是低電平和懸浮狀態(tài)?;谶@種電平特性,,當(dāng)多個節(jié)點向總線發(fā)送數(shù)據(jù)時,不會呈現(xiàn)RS-485總線那樣的低電平短路狀態(tài),。此外,,當(dāng)總線節(jié)點在發(fā)生嚴重錯誤時能夠及時關(guān)閉與總線的連接,即當(dāng)有節(jié)點損壞時,,不會導(dǎo)致整個總線停止工作,,保證了列車通信的安全性,,降低了故障風(fēng)險。
 但是在實際應(yīng)用中,,由于RS-485是一種相對經(jīng)濟的,、傳輸速率高、傳輸距離遠和寬共模范圍的總線技術(shù),,仍廣泛地應(yīng)用于工業(yè)現(xiàn)場,。由于列車上大多數(shù)的PLC或微控制器,特別是中小型PLC還不具備與CAN直接通信的能力,,但一般的PLC或微控制器都具有RS-232/RS-485串行通信口,,因此開發(fā)一款適用于列車通信接口的CAN-485協(xié)議控制器對于搭建CAN通信網(wǎng)絡(luò)顯得極為重要??刂凭W(wǎng)絡(luò)示意圖如圖1所示,。

1 硬件電路設(shè)計
 傳統(tǒng)的CAN-485協(xié)議控制器設(shè)計一般采用SJA1000和51單片機來實現(xiàn),但是由于其硬件電路較為復(fù)雜,,不利于系統(tǒng)集成化,。本文介紹的協(xié)議控制器以PIC18F258為核心處理芯片,該芯片自帶CAN收發(fā)接口,,是一款高性能的PIC系列單片,,有著先進的精簡指令集構(gòu)架、增強型內(nèi)核,、32級堆棧,,片內(nèi)具有Flash程序存儲器、EEPROM數(shù)據(jù)存儲器,、自編程功能,、在線調(diào)試器(ICD)和多種內(nèi)部、外部中斷源[2],,應(yīng)用十分廣泛,。與傳統(tǒng)的設(shè)計方式不同,它并不需要通過訪問外部設(shè)備的方式來對CAN模塊進行控制,,而只需對芯片內(nèi)部的寄存器進行操作即可,,降低了設(shè)計難度。
 此外,,為減少分立元件的數(shù)量,,精簡電路設(shè)計,,系統(tǒng)采用了ZLG公司帶隔離的485模塊RSM485C和高速CAN隔離收發(fā)器CTM1050,。RSM485C和CTM1050模塊在內(nèi)部集成了高速光耦合器6N137及DC隔離模塊,并具有極高的電磁抗干擾性(EMI),。不僅如此,,還在CAN總線和RS485總線上添加了差分電阻,,使總線的抗干擾能力更強,保證了數(shù)據(jù)傳輸質(zhì)量,,非常適用于列車中的高電磁噪聲環(huán)境,。在數(shù)據(jù)操作方面,設(shè)計者只需要在程序編寫過程中操作TXD和RXD兩根線即可,。這樣的設(shè)計使電路達到最簡,,極大地提高了硬件電路的可靠性。硬件電路圖如圖2所示,。

 PIC18F258的RA,、RB、RC均可作為I/O口進行使用,,其中RB5/PGM,、RB6/PGC、RB7/PGD可復(fù)用為ICSP下載端口,,可直接通過連接下載器對程序進行燒寫和在線調(diào)試,。RB2/CANTX、RB3/CANRX復(fù)用為CAN數(shù)據(jù)收發(fā)線,,直接與CAN收發(fā)器連接進行通信,。
考慮到實際應(yīng)用的需要和調(diào)試的便利性,為了表征系統(tǒng)的通信狀況,,在硬件設(shè)計中,,將RA0、RA1,、RA2這3個I/O口分別與2個LED指示燈和1個蜂鳴器相連,,用于系統(tǒng)的故障監(jiān)測。LED燈用于指示當(dāng)前系統(tǒng)的通信狀況,,而蜂鳴器則用于報警,,具體的監(jiān)測邏輯可在程序中根據(jù)需要進行修改。
2 程序設(shè)計
 程序的設(shè)計采用Microchip公司提供的開發(fā)工具Mplab,,用C語言進行編寫,,并選用了Microchip公司的PICkit 3編程器/調(diào)試器對程序進行在線調(diào)試和下載。PICkit 3是一款支持硬件和軟件開發(fā)的調(diào)試器系統(tǒng),,用于基于在線串行編程ICSP(In-Circuit Serial Programming)和增強型在線串行編程雙線串行接口的Microchip PIC單片機(MCU)和dsPIC數(shù)字信號控制器DSC(Digital Signal Controller)[3],。
為了提高可靠性和可理解性,軟件設(shè)計采用了模塊結(jié)構(gòu),,主要包括初始化函數(shù),、CAN接收中斷服務(wù)程序、USART接收中斷服務(wù)程序以及主程序。
2.1 初始化程序
 初始化程序用于設(shè)置串口初始化,、CAN模塊通信波特率,、工作方式、發(fā)送優(yōu)先級,、接收郵箱,、發(fā)送郵箱及對應(yīng)的接收過濾器和接收屏蔽器等。初始化程序框圖如圖3所示,。

 首先,,對串口進行初始化設(shè)置。由于串口的初始化較為簡單,,主要是對中斷優(yōu)先級,、波特率等進行設(shè)置, 在此不作過多的敘述,,串口初始化的程序如下所示:
void SCIInit()
{
SPBRG=51,;
/*8 MHz晶振波特率為9 600=Fosc/16(X+1)*/
TXSTA=0x04;
/*選擇異步高速方式傳輸8位數(shù)據(jù)*/
RCSTA=0x80,;/*允許串口工作使能*/
TRISC=(TRISC|0x80)&0xBF,;
/*設(shè)置RX/RC7為輸入,TX/RC6為輸出*/
PIE1=PIE1|0x20,;/*允許串行通信接收中斷使能*/
PIE1=PIE1|0x10,;/*允許串行通信發(fā)送中斷使能*/
IPR1bits.TXIP=0;
/*設(shè)置SCI發(fā)送中斷為低優(yōu)先級中斷*/
IPR1bits.RCIP=0,;
/*設(shè)置SCI接收中斷為低優(yōu)先級中斷*/
RCSTAbits.CREN=1,;/*允許串口接收數(shù)據(jù)*/
}
 PIC18F258系列CAN模塊有6種操作方式:配置方式、關(guān)閉方式,、正常工作方式,、監(jiān)聽方式、自檢方式及錯誤識別方式,。在實際應(yīng)用時,,首先使單片機進入配置方式,CAN模塊的初始化也只能在配置模式下進行,。配置完成后使單片機進入正常方式,,也就是標準的工作方式。在該方式下,,模塊會主動地監(jiān)控所有總線信息和產(chǎn)生應(yīng)答位,、錯誤幀等。這也是可以在CAN總線上發(fā)送信息的唯一方式,。在系統(tǒng)的開發(fā)測試過程中,,配置完CAN模塊參數(shù)后,,可以使其進入自檢方式。自檢方式允許信息不發(fā)到CAN總線,,而在發(fā)送緩沖器和接收緩沖器之間內(nèi)部進行信息發(fā)送與接收,。在該方式下,,ACK位被忽略,,單片機可以接收來自自身的信息,就像來自其他節(jié)點一樣[4],。
2.2 接收中斷程序
 考慮到更好地處理實時數(shù)據(jù),、實時響應(yīng)控制命令,CAN報文和USART數(shù)據(jù)均采用中斷控制的接收方法,。PIC18系列單片機提供了可配置的高低中斷優(yōu)先級的方式,,由于CAN通信的傳輸速率較快,為避免長時間占用總線,,提高傳輸速率,,可將CAN接收中斷設(shè)置為高優(yōu)先級中斷。
 中斷函數(shù)的處理邏輯十分簡單,,若產(chǎn)生CAN接收中斷,,則將CAN通信數(shù)據(jù)傳遞給串口通信數(shù)據(jù)緩存區(qū);反之,,若產(chǎn)生串口接收中斷,,則將串口通信數(shù)據(jù)傳遞給CAN模塊接收數(shù)據(jù)緩存區(qū)。經(jīng)過這樣的設(shè)計,,可實現(xiàn)多節(jié)點網(wǎng)絡(luò)的雙向通信,,提高了系統(tǒng)的互操作性。在對系統(tǒng)進行監(jiān)控時,,既可以及時獲取各個節(jié)點的工作狀態(tài)信息,,又可以通過上位機對各節(jié)點進行網(wǎng)絡(luò)配置和發(fā)送指令。
2.3 主函數(shù)

 


 主函數(shù)的作用主要是對CAN模塊,、串口進行初始化,,并不斷地掃描CAN和串口的中斷標志位。若經(jīng)查詢得知產(chǎn)生了CAN接收中斷或串口接收中斷,,則在發(fā)送數(shù)據(jù)之前對接收到的數(shù)據(jù)進行相應(yīng)的處理,,通過對數(shù)據(jù)的一系列處理,使得在上位機上可以直觀地了解到各節(jié)點的運行狀況,。程序的整體流程圖如圖4所示,。

3 系統(tǒng)測試
 在軟硬件搭建完成后,對系統(tǒng)進行測試,,系統(tǒng)的測試共分為兩個部分,。
 第一部分是利用PIC單片機CAN模塊的自檢模式,,實現(xiàn)單一CAN-485協(xié)議控制器的自通信,即并不要求CAN數(shù)據(jù)對外傳輸,,而是將數(shù)據(jù)收回,,發(fā)送到上位機端,用于檢測單一模塊的功能是否正常,。
第二部分是組建RS-232→RS-485→CAN→CAN→RS-485→RS-232通信網(wǎng)絡(luò),,用于實現(xiàn)雙機通信,充分驗證了CAN-485協(xié)議控制器的雙向數(shù)據(jù)傳輸能力,。測試結(jié)果如圖5所示,。

 至此,系統(tǒng)的測試基本完成,,若對于系統(tǒng)的應(yīng)用有進一步的要求,,只需對程序作相應(yīng)的修改,并測試驗證即可,。由測試結(jié)果可知,,CAN-485協(xié)議控制器的設(shè)計是可行的。
CAN總線技術(shù)的優(yōu)越性,,使其在列車控制網(wǎng)絡(luò)方面的應(yīng)用逐步得到推廣,。在測試過程中,借助串口調(diào)試助手來發(fā)送和接收數(shù)據(jù),,并將CAN模塊設(shè)定為自檢模式,,驗證了本協(xié)議控制器的可靠性。在正常的工作模式下,,組建的多主結(jié)構(gòu)實現(xiàn)了RS-485網(wǎng)絡(luò)與CAN總線網(wǎng)絡(luò)的互聯(lián),。實踐證明,本協(xié)議控制器的轉(zhuǎn)換速率高,、誤碼率低,、抗干擾能力強、電路精簡,、占用空間小,,非常適用于搭建列車控制網(wǎng)絡(luò)系統(tǒng)。
參考文獻
[1] 陳帥.CAN總線在列車通信網(wǎng)絡(luò)系統(tǒng)中的應(yīng)用研究[J].黑龍江科技信息,,2009(12):67.
[2] 王義.CAN總線單片機PIC18F258在汽車電子控制單元中的應(yīng)用[J].貴州師范大學(xué)(自然科學(xué)版),,2010,28(1):117-120.
[3] PI18F258英文手冊[Z].Microchip Technology Inc,, 2003.
[4] 劉和平,,劉釗,鄭群英,,等.PIC18Fxxx單片機程序設(shè)計及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,,2005.

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