摘 要: 隨著城市軌道交通的迅猛發(fā)展,地鐵列車的安全性與舒適性越來越成為乘客關(guān)注的重大議題,其中保障通信順暢是確保列車安全運行的重要環(huán)節(jié)之一。本文針對上海地鐵三號線阿爾斯通軌道列車的乘客緊急通信單元不足之處,提出了一套以ATmega8-A為控制核心的解決方案,并給出了乘客緊急通信單元的硬件設(shè)計和軟件實現(xiàn)方法,旨在為軌道列車技術(shù)國產(chǎn)化盡微薄之力。
關(guān)鍵詞: 乘客緊急單元;Atmega8-A;USART;通信接口
0 引言
乘客信息系統(tǒng)(Passenger Information System,PIS)被廣泛應(yīng)用在國內(nèi)外各種有軌車輛、地鐵、動車及高鐵等交通工具上。PIS給乘客提供各種旅途信息,已經(jīng)被廣大乘客所接受,其已成為地鐵列車設(shè)計的必需系統(tǒng)。乘客緊急單元(PECU)是PIS的重要外設(shè)。PECU是乘客或列車自身出現(xiàn)異常情況時,乘客與司機緊急聯(lián)系的唯一通道,它的可靠性直接影響列車安全運行甚至乘客的生命安全。目前,我國的PECU一般都采用國外技術(shù),出現(xiàn)問題時,其維修難度高而且費用昂貴。另外隨著地鐵的運行,原有的PECU裝備也會出現(xiàn)老化等問題。因此必須對PECU進行研究,盡快實現(xiàn)國產(chǎn)化設(shè)計,使其性能更加卓越,安全性能更高[1]。
1 乘客緊急通信單元硬件設(shè)計
本乘客緊急通信單元的設(shè)計以ATmega8-A單片機為控制核心,主要由控制信號輸入接口、通信接口、音頻放大及電源等模塊組成。設(shè)計結(jié)構(gòu)框圖如圖1所示。
當(dāng)列車出現(xiàn)緊急情況,乘客按下客室內(nèi)的呼叫按鈕,在司機應(yīng)答之后便可實現(xiàn)全雙工通信。ATmega8-A接收從控制口發(fā)來的命令并解析,將音頻數(shù)據(jù)通過硬件電路在車廂或者司機室內(nèi)進行播放[2]。
1.1 微控制器Atmega8-A
AVR單片機是1997年Atmel公司推出的RISC(精簡指令系統(tǒng)計算機)單片機。RISC并非只是簡單地去減少指令,而是通過使計算機的結(jié)構(gòu)更加簡單合理而提高運算速度。由于AVR單片機采用了RISC的這種結(jié)構(gòu),使其具備了1 MIPS/MHz的高速處理能力。AVR單片機硬件結(jié)構(gòu)采取8位機與16位機的折中策略,即采用局部寄存器存堆(32個寄存器文件)和單體高速輸入/輸出的方案[3]。它在軟/硬件開銷、速度、性能和成本諸多方面取得了優(yōu)化平衡,是高性價比的單片機。Atmega8-A是AVR系列中的一員,它具有8 KB的系統(tǒng)內(nèi)可編程Flash、512 KB的EEPROM、擦寫壽命可達10 000次、1 KB的片內(nèi)SRAM等特點,具有良好的抗干擾性和穩(wěn)定性[4]。
1.2 通信串口模塊
通信接口是指微型計算機系統(tǒng)與其他系統(tǒng)直接進行數(shù)字通信的接口電路。圖2中MAX487CPA是MAXIM公司的差分平衡型收發(fā)器芯片,是用于TTL協(xié)議與RS-485通信協(xié)議的一種低功耗收發(fā)器。其每個器件中都具有一個驅(qū)動器和一個接收器,收發(fā)器在驅(qū)動器禁用的空載或滿載狀態(tài)下,吸取的電源電流在120 A~500 A之間。另外,MAX487具有低電流關(guān)斷模式,僅消耗0.1 μA,所有器件都工作在5 V單電源下。因此選取該芯片可以很好地符合本設(shè)計的要求[5]。
1.3 放大電路模塊
放大電路能夠?qū)⒁粋€微弱的交流小信號(疊加在直流工作點上),通過一個裝置(核心為三極管、場效應(yīng)管)轉(zhuǎn)變?yōu)橐粋€波形相似(不失真),但幅值卻大很多的交流大信號輸出。實際的放大電路通常是由信號源、晶體三極管構(gòu)成的放大器及負載組成[6]。本設(shè)計采用Tda2052單聲道功率放大器芯片。它能夠提供4個高功率8 負載阻抗,具有寬電壓范圍的高輸出電流能力。Tda2052放大器的主要特點是:高輸出功率、AC短路保護、熱關(guān)閉掉電保護、ESD保護以及Mute/Stand-By功能。Tda2052可以工作在正負25 V的電壓環(huán)境下,沒有開關(guān)噪音。
2 乘客緊急通信單元軟件設(shè)計與實現(xiàn)
乘客緊急通信單元的軟件設(shè)計主要包括USART通信協(xié)議和單片機主控制程序兩大部分。
2.1 USART簡介
AVR單片機的異步串行收發(fā)器(UniversalSynchronous/Asynchronous Receiver/Transmitter,USART)是一個全雙工通用同步/異步串行收發(fā)模塊。其主要特點包括全雙工操作(相互獨立地接收數(shù)據(jù)和發(fā)送數(shù)據(jù))、異步或同步操作、主機或從機提供時鐘的同步操作、高精度的波特率發(fā)生器、具有5/6/7/8/9個數(shù)據(jù)位和1或2個停止位、硬件支持奇偶校驗操作、幀錯誤檢測、噪聲濾波、三個獨立的中斷、多處理器通信模式等特點[7]。
USART發(fā)送數(shù)據(jù)緩沖寄存器和USART接收數(shù)據(jù)緩沖寄存器共享相同的I/O地址,稱為USART數(shù)據(jù)寄存器或UDR。將數(shù)據(jù)寫入UDR時實際操作的是發(fā)送數(shù)據(jù)到緩沖寄存器(TXB),讀UDR時實際返回的是接收數(shù)據(jù)緩沖寄存器(RXB)的內(nèi)容[8]。
本設(shè)計采用查詢方式的USART通信方式,詳細地介紹USART初始化函數(shù)usart_init()、發(fā)送數(shù)據(jù)函數(shù)usart_SendByte()以及接收數(shù)據(jù)函數(shù)usart_ReceiveByte()。
void usart_init(void)//USART初始化
{
UCSRB=0x00;
UCSRA=0x00;
UBRRH=(unsigned char)(UBRR_0>>8);//設(shè)置波特率
UBRRL=(unsigned char)UBRR_0;
UCSRB=(1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
//接收器和發(fā)送器使能
UCSRC=(1<<URSEL)|(1<<UPM1)|(1<<UCSZ1)|(1<<UCSZ0);//奇偶校驗
}
void usart_SendByte(unsigned char data)//查詢方式發(fā)送
{
while(!(UCSRA&(1<<UDRE)));
//等待發(fā)送緩沖器為空
UDR=data;//將數(shù)據(jù)放入緩沖器,發(fā)送數(shù)據(jù)
}
unsigned char usart_ReceiveByte(void)//查詢方式接收
{
while(!(UCSRA&(1<<RXC)));//等待接收數(shù)據(jù)
return UDR;//從緩沖器獲取并返回數(shù)據(jù)
}
2.2 單片機主程序
2.2.1 單片機主程序流程圖
圖3是本設(shè)計的軟件設(shè)計流程圖,結(jié)合AVR單片機的知識,介紹本設(shè)計單片機工作的流程。
2.2.2 單片機主程序代碼
主程序包括端口初始化函數(shù)port_init()、定時器中斷初始化函數(shù)timer0_init()、timer1_init()以及設(shè)備初始化函數(shù)device_init()。其中端口初始化函數(shù)將PORTB、PORTC設(shè)置為輸入,PORTD的高5位為輸出,低3位為輸入[9]。由于這些函數(shù)很常見,本文就不列出具體的代碼。MPU通信協(xié)議函數(shù)tx()是利用USART通信協(xié)議編寫的串口通信函數(shù),本函數(shù)通過判斷USART的接收緩存寄存器rx_buffer0,判斷PECU是第一次上電還是已經(jīng)處于正常工作,并發(fā)送對應(yīng)的PECU上電碼和PECU工作碼給主控單元。因為RS-485是地鐵列車的通信方式,所以還需要通過RS-485通信協(xié)議發(fā)送和接收代碼[10]。
單片機主函數(shù)包括判斷乘客是否按下客室內(nèi)呼叫按鈕,按下后在等待司機室的響應(yīng)時呼叫按鈕LED會閃亮,顯示等待狀態(tài)。當(dāng)接收到司機室的響應(yīng)后,LED變?yōu)槌A?,此時可與司機正常通話。
void main(void)
{
unsigned char i=0;
unsigned char j=0;
unsigned char pei=0,r=0;
delay_ms(1000);
init_devices();
while(1)
{
if((pei==0)&&(BPACTIV==0))
//第一次按下客室按鈕
{
r=1;
TCCR1B=(TCCR1B & 0xF8)|0x05;
REQ_PEI_ON;
delay_ms(1000);
}
switch(r)
{
case 1:TCCR1B=(TCCR1B & 0xF8)|0x05;
//客室燈閃亮;
REQ_PEI_ON;
if(PEI_ACK==0)
{
r=2;
TCCR1B=0;
PEI_LED_ON;
delay_ms(1000);
}
break;
case 2:TCCR1B=0;
PEI_LED_ON;//客室燈常亮;
PEI_BUS_ON;
PEI_LINE_ON;
if(PEI_ACK==1)
{
r=0;
TCCR1B=0;
PEI_LED_OFF;
}
break;
default:TCCR1B=0;
PEI_LED_OFF;//客室燈常滅;
REQ_PEI_OFF;
PEI_BUS_OFF;
PEI_LINE_OFF;
break;
}
}
}
3 結(jié)論
本設(shè)計將解決PECU通信協(xié)議問題,完成PECU的設(shè)計,形成完整的緊急通信單元。經(jīng)過對現(xiàn)有PECU的研究,將可設(shè)計出功能齊全、性能優(yōu)異的國產(chǎn)PECU設(shè)備,使其可以替代現(xiàn)有產(chǎn)品。接下來將進一步測試硬件和優(yōu)化代碼,完善程序功能,并通過現(xiàn)場測試檢驗其穩(wěn)定性和可靠性,爭取盡快應(yīng)用在軌道交通列車上。
參考文獻
[1] 趙曉峰.地鐵列車乘客緊急報警系統(tǒng)設(shè)計[J].單片機與嵌入式系統(tǒng)應(yīng)用,2011,11(6):49-51,55.
[2] 史利強,郭秀清.城市軌道交通乘客信息系統(tǒng)中信號處理單元設(shè)計[J].微型機與應(yīng)用,2015,34(2):29-31,34.
[3] 謝群.列車全數(shù)字緊急對講單元硬件設(shè)計與實現(xiàn)[D].大連:大連理工大學(xué),2011.
[4] 嚴(yán)利明,胡立坤,王慶超.基于UART的主從通信方式的主節(jié)點時序分析[J].電測與儀表,2006,43(7):51-54.
[5] 張恒旭,郭秀清,霍勇.基于Atmega128數(shù)字化報站器的設(shè)計與實現(xiàn)[J].機電一體化,2011,17(10):66-70.
[6] 黃俊杰,黃云峰.AVR單片機實現(xiàn)光電隔離RS-422-485智能接口研究[J].鄭州大學(xué)學(xué)報(工學(xué)版),2004,25(1):85-88.
[7] IEC61375-1 Ed.2 2005. Electric railway equipment-train bus-part1: train communication network[S]. 2005.
[8] 于孝安,孫同慶,汪曉臣,等.城市軌道交通乘客信息系統(tǒng)路網(wǎng)控制中心設(shè)計的研究[J].鐵路計算機應(yīng)用,2013,22(5):55-57.
[9] 徐強,郭秀清.地鐵列車PIS存儲模塊的設(shè)計[J].微型機與應(yīng)用,2014,35(22):14-16.
[10] 劉煒,毛建鑫,梁磊,等.一種基于ARM的集中器的硬件實現(xiàn)[J].電子技術(shù)應(yīng)用,2014,40(1):86-89.