丁國君,王立德,申 萍,王蘇敬
(北京交通大學(xué) 電氣工程學(xué)院,北京100044)
目前用于機(jī)車車輛上的常用總線是 TCN、Lon-Works、ARENET和控制器局域網(wǎng)(CAN,Controller Area Network)總線等[1]。與 TCN 、ARENET、LonWorks總線相比,CAN總線響應(yīng)時(shí)間短,系統(tǒng)工作和數(shù)據(jù)傳輸?shù)目煽啃愿?系統(tǒng)擴(kuò)充靈活,性價(jià)比高。CAN總線強(qiáng)調(diào)了實(shí)時(shí)性,又具有極高的可靠性和獨(dú)特的設(shè)計(jì),價(jià)格低廉,發(fā)展前景廣闊。因此采用CAN總線作為電力機(jī)車分布式車載狀態(tài)監(jiān)測與故障診斷系統(tǒng)的網(wǎng)絡(luò)總線[2]。
CAN總線是一種有效支持分布式監(jiān)控或?qū)崟r(shí)控制的串行通信現(xiàn)場總線網(wǎng)絡(luò)[1]。作為ISO11898國際標(biāo)準(zhǔn)的現(xiàn)場總線技術(shù),以其自身的優(yōu)勢不斷得到推廣和應(yīng)用,CAN最早出現(xiàn)在20世紀(jì)80年代末的汽車行業(yè)中,由德國Bosch公司提出,CAN可提供高達(dá)1Mbit/s的數(shù)據(jù)傳輸速率,這使實(shí)時(shí)控制和分布式監(jiān)控變得非常容易,外硬件的錯(cuò)誤檢定特性也增強(qiáng)了CAN的抗電磁干擾能力。針對開發(fā)的分布式車載狀態(tài)監(jiān)測檢測與診斷系統(tǒng)(如圖1所示),制定了標(biāo)準(zhǔn)CAN總線應(yīng)用層協(xié)議。實(shí)際運(yùn)行結(jié)果表明,設(shè)計(jì)開發(fā)的CAN通信網(wǎng)絡(luò)具有較高的可靠性、實(shí)時(shí)性和抗干擾能力。
圖1 機(jī)車狀態(tài)監(jiān)測診斷系統(tǒng)框圖
目前流行的CAN總線器件有2大類[3]:一類是獨(dú)立的CAN控制器,如SJA1000 CAN控制器,另一類是帶有片上CAN的微控制器,如DSP、ARM 和C8051F系列等。由于C8051F045單片機(jī)內(nèi)部集成CAN控制器,符合Bosch規(guī)范2.0B(全功能CAN),且C805lF045的集成度高,只需少量外圍電路便可組成CAN網(wǎng)絡(luò)通信系統(tǒng),可提高系統(tǒng)的整體可靠性。另外,C8051F045內(nèi)核和普通51系列兼容,指令簡單易學(xué),可縮短系統(tǒng)研發(fā)周期,故系統(tǒng)采用C8051F045作為微控制器。系統(tǒng)硬件由微處理器和隔離的CAN收發(fā)器以及與網(wǎng)絡(luò)節(jié)點(diǎn)通信的SPI或 UART串行接口3部分組成。CAN收發(fā)器建立CAN控制器和物理總線之間的連接,控制邏輯電平信號在CAN控制器與物理總線之間的傳輸,CAN控制器執(zhí)行CAN協(xié)議,用于信息緩沖和濾波。SPI或UART串行總線接口實(shí)現(xiàn)網(wǎng)絡(luò)節(jié)點(diǎn)與CAN總線內(nèi)部的數(shù)據(jù)傳輸功能。
C805lF045單片機(jī)是Silicon Laboratories公司推出的完全集成的混合信號SOPC型MCU,具有以下特點(diǎn):①高速、流水線結(jié)構(gòu)的8051兼容的CIP-51內(nèi)核(可達(dá)25MIPS);②控制器局域網(wǎng)(CAN2.0B)控制器,具有32個(gè)消息對象,每個(gè)消息對象有其自己的標(biāo)識掩碼;③全速、非侵入式的在系統(tǒng)調(diào)試接口(片內(nèi));④64kB可在系統(tǒng)編程的FLASH存儲器和4 352(4k+256)字節(jié)的片內(nèi)RAM;⑤可尋址64kB地址空間的外部數(shù)據(jù)存儲器接口;⑥硬件實(shí)現(xiàn)的SPI和兩個(gè)UART串行接口。
對于CAN收發(fā)器,選用CTM1050收發(fā)模塊[4],這是一款帶隔離的高速CAN收發(fā)器芯片,該芯片內(nèi)部集成了必須的電源隔離、電氣隔離和CAN收發(fā)器件,并且面積不到3 cm2,可以將CAN控制器的邏輯電平轉(zhuǎn)換為CAN總線的差分電平,并且具有DC2 500 V的隔離功能和ESD保護(hù)作用。該模塊TXD、RXD引腳兼容+3.3 V、+5 V的CAN控制器.不需外接其他元器件.直接將+3.3 V或+5 V的CAN控制器發(fā)送、接收引腳與CTM1050的發(fā)送、接收引腳相連。由于采用隔離CAN收發(fā)器模塊,實(shí)現(xiàn)CAN總線上各節(jié)點(diǎn)電氣、電源間完全隔離和獨(dú)立,提高了節(jié)點(diǎn)的穩(wěn)定性和安全性。CAN總線通信系統(tǒng)中CAN節(jié)點(diǎn)硬件結(jié)構(gòu)框圖如圖2所示。
圖2 CAN節(jié)點(diǎn)硬件結(jié)構(gòu)框圖
C8051F045內(nèi)部集成的CAN控制器符合Bosch規(guī)范2.0B,CAN控制器包含一個(gè)CAN核、消息RAM(獨(dú)立于CIP-51的RAM)、消息處理狀態(tài)機(jī)和控制寄存器。CAN內(nèi)核由CAN協(xié)議控制器和負(fù)責(zé)消息收發(fā)的串行/并行轉(zhuǎn)換RX/TX移位寄存器組成,消息RAM用于存儲消息對象和每個(gè)對象的仲裁掩碼。CAN處理器有32個(gè)可配置為發(fā)送和接收的消息對象,并且每一個(gè)消息對象都有自己的識別掩碼,所有的數(shù)據(jù)傳輸和接收濾波都是由CAN控制器完成的,而不是由CIP-51來完成,大大減小了CPU的負(fù)擔(dān)。
CAN內(nèi)部寄存器中存儲了所有CAN的控制和配置信息,其中包括控制寄存器、狀態(tài)寄存器、設(shè)置波特率的位定時(shí)寄存器,測試寄存器、錯(cuò)誤計(jì)數(shù)器和消息接口寄存器。另外,CIP51的SFR并不能直接訪問CAN內(nèi)部寄存器的所有單元,其配置CAN、消息對象、讀取CAN狀態(tài)以及獲取接收數(shù)據(jù)、傳遞發(fā)送數(shù)據(jù)都由SFR中的 6個(gè)特殊寄存器來完成,其中CANOCN,CANOTST和CANOSTA 3個(gè)寄存器可直接獲取或修改CAN控制器中對應(yīng)的寄存器,而CANODATH,CANOATL,CANOADR 3個(gè)寄存器主要用來訪問修改其他不能直接訪問的CAN內(nèi)部寄存器,其中CANOADR用來指出要訪問寄存器的地址,CAODATH,CANODAT L這時(shí)就相當(dāng)于要訪問的16位寄存器的高低字節(jié)的映射寄存器,而對他們的讀寫則相當(dāng)于所指向寄存器的讀寫。
到目前為止,國際上已經(jīng)先后出現(xiàn) DeviceNet、CAL、CANopen、J1939和SDS等基于 CAN協(xié)議標(biāo)準(zhǔn)的應(yīng)用子協(xié)議。但基于CAN總線的商業(yè)應(yīng)用層協(xié)議主要有DeviceNet和CANopen兩種[5]。但是由于這兩種協(xié)議是基于通用目的而開發(fā)的,結(jié)構(gòu)復(fù)雜而且協(xié)議軟件的價(jià)格不菲,因此并非完全適合分布式車載狀態(tài)監(jiān)測與診斷系統(tǒng)。針對上述原因,結(jié)合CAN總線和列車通信網(wǎng)絡(luò)系統(tǒng)的結(jié)構(gòu)特點(diǎn),在吸收以上兩種高層協(xié)議的基礎(chǔ)上,結(jié)合IEC61375列車通信網(wǎng)絡(luò)標(biāo)準(zhǔn)提出了一種可靠實(shí)用并且適合于分布式車載狀態(tài)監(jiān)測與診斷系統(tǒng)的CAN總線應(yīng)用層協(xié)議[6]。CAN應(yīng)用協(xié)議最基本的要求就是對標(biāo)識符ID和數(shù)據(jù)信息代碼的合理編寫,在設(shè)計(jì)的同時(shí)還要考慮到數(shù)據(jù)的相對重要程度(優(yōu)先權(quán))、數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性要求(時(shí)序)、數(shù)據(jù)相對于CAN總線在汽車應(yīng)用而言,考慮到電力機(jī)車自身的特殊性,設(shè)計(jì)的CAN總線應(yīng)用層協(xié)議如表1所示。
表1 面向機(jī)車車輛的CAN應(yīng)用層協(xié)議
報(bào)文優(yōu)先級(3位)將所有網(wǎng)絡(luò)數(shù)據(jù)分為8個(gè)等級的優(yōu)先權(quán).報(bào)文優(yōu)先級的設(shè)計(jì)是以報(bào)文重要性、報(bào)文傳輸頻率、報(bào)文數(shù)據(jù)長度和報(bào)文具體的實(shí)時(shí)性要求為參考的。分段編號(3位)用于對數(shù)據(jù)分段進(jìn)行編號,最大支持64 B的數(shù)據(jù)長度,如果需要傳輸大于64 B的數(shù)據(jù),可以利用應(yīng)用程序來定義更高一層的用戶層協(xié)議來予以實(shí)現(xiàn)。資源號(2位)用于指示所要操作的節(jié)點(diǎn)設(shè)備內(nèi)部單元,根據(jù)報(bào)文資源節(jié)點(diǎn)地址號對設(shè)備內(nèi)部的單元進(jìn)行操作.目的MAC地址(8位)和源MAC地址(8位)用來指示接收數(shù)據(jù)的目的節(jié)點(diǎn)地址和發(fā)送數(shù)據(jù)的源節(jié)點(diǎn)地址,支持同一網(wǎng)絡(luò)系統(tǒng)中掛接的最大節(jié)點(diǎn)數(shù)理論為256個(gè)資源節(jié)點(diǎn)號。功能碼(4位)用于指示報(bào)文所需要實(shí)現(xiàn)的功能。結(jié)束標(biāo)記(1位)是用來標(biāo)記該數(shù)據(jù)包傳輸過程的結(jié)束。
數(shù)據(jù)長度(4位)是標(biāo)識傳輸數(shù)據(jù)的字節(jié)數(shù),支持0-8個(gè)字節(jié)的數(shù)據(jù)傳輸,大于8個(gè)字節(jié)時(shí)結(jié)合分段編號分幀傳輸。
CAN總線應(yīng)用層協(xié)議規(guī)定了標(biāo)準(zhǔn)設(shè)備在執(zhí)行網(wǎng)絡(luò)功能時(shí)的基本過程,在CAN網(wǎng)絡(luò)中,各節(jié)點(diǎn)功能大小不同,按照CAN總線應(yīng)用層協(xié)議對報(bào)文處理的要求,網(wǎng)絡(luò)中的標(biāo)準(zhǔn)設(shè)備的軟件設(shè)計(jì)流程圖如圖3所示。
圖3 標(biāo)準(zhǔn)設(shè)備軟件設(shè)計(jì)流程圖
網(wǎng)絡(luò)測試采用如圖4所示的CAN總線網(wǎng)絡(luò)組網(wǎng)測試方案。首先進(jìn)行是SPI(UART)-CAN卡的傳輸測試(以SPI-CAN卡為例),試驗(yàn)用于檢驗(yàn)是否能夠把網(wǎng)絡(luò)節(jié)點(diǎn)的數(shù)據(jù)通過SPI經(jīng)CAN網(wǎng)卡轉(zhuǎn)換并傳輸?shù)紺AN總線上,通過多通道示波器探測SPI總線的SCK、MOSI和MISO信號,測得波形如圖5所示,其中波形1為SPI時(shí)鐘信號SCK,波形2為SPI的MOSI信號。SCK波特率為467 kb/s,CAN網(wǎng)卡能夠正常收發(fā)網(wǎng)絡(luò)節(jié)點(diǎn)的數(shù)據(jù)。網(wǎng)絡(luò)節(jié)點(diǎn)的SPI總線在時(shí)鐘下降沿發(fā)送數(shù)據(jù),上升沿接收數(shù)據(jù),符合設(shè)計(jì)要求。
其次測試CAN總線收發(fā)數(shù)據(jù),在測試CAN總線數(shù)據(jù)傳輸過程中,將USB-CAN模塊與故障檢測記錄儀連接,觀察檢測記錄儀發(fā)出的數(shù)據(jù)查詢幀信息。如圖6所示為上位機(jī)截獲的檢測記錄終端查詢幀,可以看出檢測記錄終端的查詢幀在CAN網(wǎng)絡(luò)中成功的傳輸,沒有出現(xiàn)丟幀或者幀錯(cuò)誤的現(xiàn)象。
圖4 CAN總線網(wǎng)絡(luò)測試示意圖
圖5 SPI-CAN多字節(jié)數(shù)據(jù)傳輸波形圖
圖6 CAN總線數(shù)據(jù)傳輸測試
該CAN總線網(wǎng)絡(luò)通信系統(tǒng)經(jīng)過試驗(yàn)室的測試,能夠完成數(shù)據(jù)的點(diǎn)對點(diǎn)主從通訊、組播廣播通訊、設(shè)備輪詢/應(yīng)答、時(shí)間觸發(fā)傳輸、事件觸發(fā)傳輸、故障觸發(fā)鎖存以及故障信息傳輸?shù)裙δ堋?/p>
設(shè)計(jì)的基于C8051F045單片機(jī)的CAN總線智能節(jié)點(diǎn)以及配套開發(fā)的應(yīng)用層協(xié)議具有集成度高、性能穩(wěn)定、實(shí)時(shí)性好等特點(diǎn),在通信波特率設(shè)置為250 kb/s時(shí)通信順暢、可靠。硬件和軟件設(shè)計(jì)方案均已通過測試,并成功應(yīng)用于昆明鐵路局SS34000型電力機(jī)車的分布式車載狀態(tài)監(jiān)測與故障診斷系統(tǒng)的實(shí)際項(xiàng)目中,已無故障運(yùn)行兩年。運(yùn)行結(jié)果證明了開發(fā)的CAN總線具有較高可靠性、實(shí)時(shí)性和抗干擾性。而且后續(xù)節(jié)點(diǎn)在開發(fā)過程中遵循此協(xié)議,可使產(chǎn)品開發(fā)標(biāo)準(zhǔn)化,更有效保障產(chǎn)品的一致性,增強(qiáng)CAN總線的可靠性和穩(wěn)定性。
[1]路向陽.我國列車通信網(wǎng)絡(luò)的發(fā)展和應(yīng)用[J].機(jī)車電傳動(dòng),2001,(6):1-5.
[2]馬釗,嚴(yán)祥,丁國君,等.基于 ARM9的車載智能顯示終端設(shè)計(jì)與應(yīng)用[J].鐵道機(jī)車車輛,2010,(2):72-75.
[3]饒運(yùn)濤.現(xiàn)場總線CAN原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2003.
[4]楊志國,孫斌.基于CAN總線的橡膠生產(chǎn)監(jiān)測系統(tǒng)的開發(fā)[J].儀器儀表學(xué)報(bào),2008,(8):1 686-1 689.
[5]張侃諭.方正.適合于溫室控制系統(tǒng)的CAN總線應(yīng)用層協(xié)議開發(fā)[J].工業(yè)儀表與自動(dòng)化裝置,2007,(1):18-21.
[6]王蘇敬,王立德 ,申萍,等.列車用 CAN總線應(yīng)用層協(xié)議研究與實(shí)現(xiàn)[J].北京交通大學(xué)學(xué)報(bào)(自然科學(xué)版),2008,(5):102-106.