魯猛 楊世峰 王帥斌 朱萍玉
基于CANopen協(xié)議的塊SDO列車數(shù)據(jù)傳輸系統(tǒng)*
魯猛1楊世峰2王帥斌2朱萍玉1
(1.廣州大學(xué)機(jī)械與電氣工程學(xué)院 2.廣州南方高速鐵路測(cè)量技術(shù)有限公司)
針對(duì)火車、地鐵、高鐵車廂間組網(wǎng)和數(shù)據(jù)傳輸?shù)乃俣燃胺€(wěn)定性問題,提出一種基于CANopen高層協(xié)議的塊SDO列車數(shù)據(jù)傳輸系統(tǒng)。在大容量傳輸數(shù)據(jù)系統(tǒng)中,塊SDO比加速SDO和分段SDO更高效。本文以PLC為CANopen主設(shè)備,STM32單片機(jī)為CANopen從設(shè)備;主從設(shè)備之間采用CANopen協(xié)議的塊SDO模擬列車高速、大容量數(shù)據(jù)的傳輸。借助CAN分析儀對(duì)3種SDO的數(shù)據(jù)進(jìn)行對(duì)比試驗(yàn),驗(yàn)證了CANopen協(xié)議的塊SDO列車數(shù)據(jù)傳輸系統(tǒng)的高效性,且適合用于列車高速、大容量數(shù)據(jù)的傳輸。
CANopen;塊SDO;大容量數(shù)據(jù)
CAN總線具有傳輸距離遠(yuǎn)、速度快、站點(diǎn)多、可控I/O多和抗干擾能力強(qiáng)等特點(diǎn),已成為汽車計(jì)算機(jī)控制系統(tǒng)和嵌入式工業(yè)控制局域網(wǎng)的標(biāo)準(zhǔn)總線。CANopen作為CAN總線的高層通訊協(xié)議,也是工業(yè)控制中較常用的通訊協(xié)議。Holger Zeltwanger[1]在現(xiàn)場(chǎng)總線CANopen設(shè)計(jì)與應(yīng)用中提出,可將CAN總線作為列車間的通訊總線。楊偉等[2]提出將過程數(shù)據(jù)對(duì)象和服務(wù)數(shù)據(jù)應(yīng)用于CANopen列車網(wǎng)絡(luò)的方案,此方案列車間的通訊主要依靠加速SDO和PDO,在高速大容量數(shù)據(jù)傳輸時(shí)可能出現(xiàn)延遲問題。李丹[3]在CANopen協(xié)議SDO分段傳輸報(bào)文的研究中,提出一種傳輸數(shù)據(jù)更高效的CAN總線通訊方式。但分段SDO每傳輸完一段數(shù)據(jù)都需要進(jìn)行確認(rèn),而塊SDO則不需要。為此,本文提出一種基于CANopen協(xié)議的塊SDO列車數(shù)據(jù)傳輸系統(tǒng),將塊SDO應(yīng)用到CANopen列車數(shù)據(jù)傳輸中,提高列車數(shù)據(jù)傳輸效率。
塊SDO傳輸流程主要分為寫數(shù)據(jù)和讀數(shù)據(jù),在讀寫數(shù)據(jù)流程中又分為3個(gè)階段:塊初始化、塊讀寫(段傳輸)和塊讀寫結(jié)束。
圖1 塊SDO傳輸寫數(shù)據(jù)流程
模擬列車塊SDO傳輸寫數(shù)據(jù)操作報(bào)文格式如表1所示。初始化階段主要包括CS命令符+索引+子索引+數(shù)據(jù)的方式;通過CS命令符+數(shù)據(jù)的方式寫入個(gè)塊數(shù)據(jù);同樣通過CS命令符+數(shù)據(jù)的方式完成此次寫塊操作。
表1 塊SDO傳輸寫數(shù)據(jù)操作報(bào)文格式
塊SDO傳輸讀數(shù)據(jù)流程如圖2所示。完成初始化操作后,SDO服務(wù)器不會(huì)立刻發(fā)送大量的數(shù)據(jù)給SDO客戶端,當(dāng)SDO客戶端再次向SDO服務(wù)器發(fā)送讀取數(shù)據(jù)請(qǐng)求報(bào)文,且SDO服務(wù)器接收到該報(bào)文后,才會(huì)發(fā)送數(shù)據(jù)給SDO客戶端。每一個(gè)塊發(fā)送完畢,SDO客戶端確認(rèn)后會(huì)發(fā)送下一個(gè)塊數(shù)據(jù),重復(fù)以上操作完成個(gè)塊的發(fā)送。
模擬列車塊SDO傳輸讀數(shù)據(jù)操作報(bào)文格式如表2所示。初始化階段主要采用CS命令符+索引+子索引+數(shù)據(jù)的方式,通過不同的CS命令符+數(shù)據(jù)確定要讀取的數(shù)據(jù)數(shù)目,以此完成初始化結(jié)束操作;接著可以獲取讀到的數(shù)據(jù),主要方式也是CS命令符+數(shù)據(jù);最后通過CS命令符+數(shù)據(jù)的方式完成此次讀操作。
CAN從節(jié)點(diǎn)控制電路主要以STM32單片機(jī)為主控制電路;K1引腳用于檢測(cè)和控制列車車門;K2引腳用于檢測(cè)列車緊急按鈕;LD1和LD2引腳用于到站指示燈。通過CAN_TX和CAN_RX引腳傳輸數(shù)據(jù);通過UASRT_TX和UASRT_RX引腳驅(qū)動(dòng)列車點(diǎn)陣屏幕顯示相關(guān)信息。CAN從節(jié)點(diǎn)主控制電路電路如圖3所示。
圖2 塊SDO傳輸讀數(shù)據(jù)流程
表2 塊SDO傳輸讀操作報(bào)文格式
圖3 CAN從節(jié)點(diǎn)單片機(jī)最小系統(tǒng)電路
CAN接口電路以TJA1050T的收發(fā)器芯片為主,該芯片負(fù)責(zé)將TTL電平轉(zhuǎn)換為CAN總線上的顯性和隱性電平,同時(shí)在CAN總線輸出端加終端電阻,以保證列車車廂傳輸中總線的穩(wěn)定性。CAN接口電路如圖4所示。
圖4 CAN接口電路