張虎
摘 ?要:針對某型號客車軸溫報(bào)警器的通訊模塊故障率偏高、檢修工作量大的問題,文章設(shè)計(jì)了基于STM32的程序?qū)崿F(xiàn)通訊模塊的數(shù)據(jù)收發(fā)功能測試。介紹了采用調(diào)制解調(diào)器實(shí)現(xiàn)RS232串口的遠(yuǎn)距離傳輸數(shù)據(jù),詳細(xì)介紹了通過設(shè)計(jì)實(shí)現(xiàn)客車軸溫報(bào)警器各自獨(dú)立對等的工作,軟件采用IAR編譯環(huán)境。試驗(yàn)結(jié)果表明,該方案可以有效解決客運(yùn)列車軸溫報(bào)警器通訊模塊故障率偏高的問題。
關(guān)鍵詞:軸溫報(bào)警器;STM32;獨(dú)立對等
中圖分類號:TP274.2 ? ? 文獻(xiàn)標(biāo)識碼:A ? ? ?文章編號:1006-8937(2015)36-0009-01
1 ?概 ?述
鐵路運(yùn)輸是現(xiàn)代交通運(yùn)輸中的重要手段,為了確保高速運(yùn)行下列車安全運(yùn)行,列車上都安裝了超速防護(hù)和集中式客車軸溫報(bào)警器等安全裝置??蛙囕S溫報(bào)警器在軸溫達(dá)到警戒值以后會自動報(bào)警,提醒有關(guān)人員及時采取防范措施,確保列車運(yùn)行安全[1]。我國鐵路干線密布,客運(yùn)列車數(shù)量多,一列客車可以掛20多節(jié)車廂,運(yùn)行時每節(jié)車廂都要配備一個軸溫報(bào)警器。因此,軸溫報(bào)警器的數(shù)量需求龐大。
某型號軸溫報(bào)警器主要由單片機(jī)控制器、液晶顯示器、直流開關(guān)電源和調(diào)制解調(diào)器等組成。該型號軸溫報(bào)警器在數(shù)模兼容、數(shù)字濾波、抗干擾和可靠性等方面的優(yōu)勢使其很快在客運(yùn)列車軸報(bào)器的使用中占據(jù)了市場。由于各種原因,此型軸報(bào)器的通訊模塊故障率偏高,檢修工作量大,故需設(shè)計(jì)程序?qū)崿F(xiàn)通訊模塊的數(shù)據(jù)收發(fā)功能測試。
2 ?系統(tǒng)硬件設(shè)計(jì)
測試時將待測軸溫報(bào)警器報(bào)與標(biāo)準(zhǔn)軸溫報(bào)警器用廣播線對接(不分主從),兩者通過Modem(調(diào)制解調(diào)器)相連接,待測機(jī)通過J-Link JTAG連接到PC機(jī),通過IAR編譯器調(diào)試程序,若數(shù)據(jù)收發(fā)正常則設(shè)備內(nèi)通訊模塊的軟硬件合格,測試結(jié)果顯示在PC機(jī)屏幕上。根據(jù)設(shè)計(jì)要求,設(shè)計(jì)選用Cortex-M3內(nèi)核的STM32F107VCT6單片機(jī),該處理器資源豐富能對多個操作并行執(zhí)行,滿足設(shè)計(jì)的要求[2]。
根據(jù)EIA-RS-232C 接口標(biāo)準(zhǔn):遠(yuǎn)距離通信采用Modem時,需要9根信號線;近距離只需要3根信號線。這些信號線由接口電路提供,以便與Modem或終端進(jìn)行聯(lián)絡(luò)與控制。測試系統(tǒng)提供了2個標(biāo)準(zhǔn)RS232串口,連接STM32中的異步串行收發(fā)器。工作中Modem還需經(jīng)過了一個變壓器獲得更大的輸出功率后與另一個Modem相連接。Modem的外接變壓器的原理圖,如圖1所示。
3 ?系統(tǒng)軟件設(shè)計(jì)
3.1 ?多主機(jī)網(wǎng)絡(luò)
一般的分主從模式的通訊中主機(jī)需要不停的詢問從機(jī)是否需要發(fā)送數(shù)據(jù),從機(jī)之間不能相互通信,需通過主機(jī)作為中間中轉(zhuǎn)站。而當(dāng)主機(jī)需要處理某個緊急問題時,不得不等待問詢叢機(jī)結(jié)束后再處理,即浪費(fèi)了主機(jī)和從機(jī)的時間,又容易在處理緊急情況時出現(xiàn)系統(tǒng)的崩潰。該型號軸溫報(bào)警系統(tǒng)中,每一臺控制顯示器既是主機(jī),也是從機(jī)。它是通過順序發(fā)送的方式來完成信息交換的。當(dāng)某一臺儀器發(fā)送信息時,其它機(jī)器都處于接收狀態(tài),發(fā)送完成后就轉(zhuǎn)變成接收狀態(tài),克服了主從模式主機(jī)輪詢的缺點(diǎn),各個終端軸溫報(bào)警器也由被動變?yōu)榱酥鲃?。這種方式的優(yōu)點(diǎn)是所有的信息全部共享,速度快,即使某一臺儀器發(fā)生故障,也不會使網(wǎng)絡(luò)癱瘓。這種通訊模式也稱之為多主機(jī)網(wǎng)絡(luò)模式[3]。
3.2 ?主程序編寫
通信協(xié)議的設(shè)計(jì)是軟件設(shè)計(jì)的重點(diǎn)。在實(shí)際應(yīng)用中,很多時候單機(jī)片之間的通信環(huán)境都是比較好的,協(xié)議不是很復(fù)雜。測試通信程序流程圖,如圖2所示。
①數(shù)據(jù)雙方均使用9 600 kbps的速率傳輸數(shù)據(jù),A機(jī)和B機(jī)不分主從通信,使用查詢方式互相接收和發(fā)送信息,下面以A機(jī)發(fā)送數(shù)據(jù)時B機(jī)接收數(shù)據(jù)為例。
②雙機(jī)開始數(shù)據(jù)傳輸時,A機(jī)發(fā)送呼叫信號11H啟動握手過程,詢問B機(jī)是否可以接收數(shù)據(jù)。
③B機(jī)接收到握手信號后,如果同意接收數(shù)據(jù)則應(yīng)當(dāng)信號01H,表示等待接收,否則發(fā)應(yīng)答信號00H,表示暫時不能接收數(shù)據(jù)。
④A機(jī)在發(fā)送呼叫信號后等待,直接接收B機(jī)的應(yīng)答信號00H,才確認(rèn)完成握手協(xié)議過程,開始發(fā)送數(shù)據(jù),否則,A機(jī)繼續(xù)發(fā)送呼叫信號。
⑤B機(jī)在接收完數(shù)據(jù)后,將根據(jù)最后的檢驗(yàn)結(jié)果判斷接收是否正確,正確就向主機(jī)發(fā)送AAH,表示接收成功,發(fā)送FFH,表示錯誤,要求重發(fā)。
⑥A機(jī)接收到AAH字節(jié),則表示通信結(jié)束,否則A機(jī)重發(fā)這組數(shù)據(jù)。根據(jù)流程圖進(jìn)行了通信主體程序的編寫。
4 ?結(jié) ?語
串行通信具有結(jié)構(gòu)簡單、可靠性高等優(yōu)點(diǎn),而且串行通信有一定的糾錯力,并且成本比較低。實(shí)驗(yàn)結(jié)果在串口調(diào)試助手的調(diào)試界面運(yùn)行得到了通過,結(jié)果表明該程序與設(shè)計(jì)思想可以有效解決此型軸報(bào)器的通訊模塊故障率偏高的問題,該通訊模塊已經(jīng)運(yùn)用于實(shí)際產(chǎn)品。
參考文獻(xiàn):
[1] 張家棟,田宏萍.關(guān)于列車安全狀態(tài)監(jiān)測和診斷系統(tǒng)的研究[J].內(nèi)燃機(jī) ? 車,2000,(11).
[2] 李寧.基于MDK的STM32處理器開發(fā)應(yīng)用[M].北京:北京航空航天大
學(xué)出版社,2008.
[3] 胡明飛,楊艷,漆靜群,等.基于RS485的多主機(jī)通信協(xié)議的設(shè)計(jì)[J].自動 ? 化儀表,2015,(7).