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

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

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

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

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

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

 


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

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

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

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