陶 源,郭秀清
(同濟大學 控制科學與工程系,上海 201804)
基于ATmega8-A的乘客緊急通信單元的設計與實現(xiàn)
陶 源,郭秀清
(同濟大學 控制科學與工程系,上海 201804)
隨著城市軌道交通的迅猛發(fā)展,地鐵列車的安全性與舒適性越來越成為乘客關注的重大議題,其中保障通信順暢是確保列車安全運行的重要環(huán)節(jié)之一。本文針對上海地鐵三號線阿爾斯通軌道列車的乘客緊急通信單元不足之處,提出了一套以ATmega8-A為控制核心的解決方案,并給出了乘客緊急通信單元的硬件設計和軟件實現(xiàn)方法,旨在為軌道列車技術國產化盡微薄之力。
乘客緊急單元;Atmega8-A;USART;通信接口
乘客信息系統(tǒng) (PassengerInformation System,PIS)被廣泛應用在國內外各種有軌車輛、地鐵、動車及高鐵等交通工具上。PIS給乘客提供各種旅途信息,已經被廣大乘客所接受,其已成為地鐵列車設計的必需系統(tǒng)。 乘客緊急單元(PECU)是 PIS的重要外設。PECU是乘客或列車自身出現(xiàn)異常情況時,乘客與司機緊急聯(lián)系的唯一通道,它的可靠性直接影響列車安全運行甚至乘客的生命安全。目前,我國的 PECU一般都采用國外技術,出現(xiàn)問題時,其維修難度高而且費用昂貴。另外隨著地鐵的運行,原有的 PECU裝備也會出現(xiàn)老化等問題。因此必須對 PECU進行研究,盡快實現(xiàn)國產化設計,使其性能更加卓越,安全性能更高[1]。
本乘客緊急通信單元的設計以 ATmega8-A單片機為控制核心,主要由控制信號輸入接口、通信接口、音頻放大及電源等模塊組成。設計結構框圖如圖1所示。
圖1 硬件設計結構框圖
當列車出現(xiàn)緊急情況,乘客按下客室內的呼叫按鈕,在司機應答之后便可實現(xiàn)全雙工通信。ATmega8-A接收從控制口發(fā)來的命令并解析,將音頻數(shù)據(jù)通過硬件電路在車廂或者司機室內進行播放[2]。
1.1 微控制器Atmega8-A
AVR單片機是1997年Atmel公司推出的 RISC(精簡指令系統(tǒng)計算機)單片機。RISC并非只是簡單地去減少指令,而是通過使計算機的結構更加簡單合理而提高運算速度。由于AVR單片機采用了 RISC的這種結構,使其具備了1 MIPS/MHz的高速處理能力。AVR單片機硬件結構采取 8位機與 16位機的折中策略,即采用局部寄存器存堆(32個寄存器文件)和單體高速輸入/輸出的方案[3]。它在軟/硬件開銷、速度、性能和成本諸多方面取得了優(yōu)化平衡,是高性價比的單片機。Atmega8-A是AVR系列中的一員,它具有8 KB的系統(tǒng)內可編程 Flash、512 KB的 EEPROM、擦寫壽命可達10 000次、1 KB的片內SRAM等特點,具有良好的抗干擾性和穩(wěn)定性[4]。
1.2 通信串口模塊
通信接口是指微型計算機系統(tǒng)與其他系統(tǒng)直接進行數(shù)字通信的接口電路。圖2中MAX487CPA是MAXIM公司的差分平衡型收發(fā)器芯片,是用于TTL協(xié)議與RS-485通信協(xié)議的一種低功耗收發(fā)器。其每個器件中都具有一個驅動器和一個接收器,收發(fā)器在驅動器禁用的空載或滿載狀態(tài)下,吸取的電源電流在 120 μA~500 μA之間。另外,MAX487具有低電流關斷模式,僅消耗0.1 μA,所有器件都工作在5 V單電源下。因此選取該芯片可以很好地符合本設計的要求[5]。
1.3 放大電路模塊
圖2 通信接口原理圖
放大電路能夠將一個微弱的交流小信號(疊加在直流工作點上),通過一個裝置 (核心為三極管、場效應管)轉變?yōu)橐粋€波形相似(不失真),但幅值卻大很多的交流大信號輸出。實際的放大電路通常是由信號源、晶體三極管構成的放大器及負載組成[6]。本設計采用Tda2052單聲道功率放大器芯片。它能夠提供 4個高功率8 Ω負載阻抗,具有寬電壓范圍的高輸出電流能力。Tda2052放大器的主要特點是:高輸出功率、AC短路保護、熱關閉掉電保護、ESD保護以及 Mute/Stand-By功能。Tda2052可以工作在正負 25 V的電壓環(huán)境下,沒有開關噪音。
乘客緊急通信單元的軟件設計主要包括 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)的內容[8]。
本設計采用查詢方式的 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); //設置波特率
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(?。║CSRA&(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是本設計的軟件設計流程圖,結合 AVR單片機的知識,介紹本設計單片機工作的流程。
圖3 主程序流程
2.2.2 單片機主程序代碼
主程序包括端口初始化函數(shù) port_init()、定時器中斷初始化函數(shù) timer0_init()、timer1_init()以及設備初始化函數(shù) device_init()。其中端口初始化函數(shù)將 PORTB、PORTC設置為輸入,PORTD的高5位為輸出,低 3位為輸入[9]。由于這些函數(shù)很常見,本文就不列出具體的代碼。MPU通信協(xié)議函數(shù)tx()是利用USART通信協(xié)議編寫的串口通信函數(shù),本函數(shù)通過判斷 USART的接收緩存寄存器 rx_buffer0,判斷 PECU是第一次上電還是已經處于正常工作,并發(fā)送對應的PECU上電碼和 PECU工作碼給主控單元。因為RS-485是地鐵列車的通信方式,所以還需要通過 RS-485通信協(xié)議發(fā)送和接收代碼[10]。
單片機主函數(shù)包括判斷乘客是否按下客室內呼叫按鈕,按下后在等待司機室的響應時呼叫按鈕 LED會閃亮,顯示等待狀態(tài)。當接收到司機室的響應后,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;
}
}
}
本設計將解決PECU通信協(xié)議問題,完成PECU的設計,形成完整的緊急通信單元。經過對現(xiàn)有 PECU的研究,將可設計出功能齊全、性能優(yōu)異的國產 PECU設備,使其可以替代現(xiàn)有產品。接下來將進一步測試硬件和優(yōu)化代碼,完善程序功能,并通過現(xiàn)場測試檢驗其穩(wěn)定性和可靠性,爭取盡快應用在軌道交通列車上。
[1]趙曉峰.地鐵列車乘客緊急報警系統(tǒng)設計[J].單片機與嵌入式系統(tǒng)應用,2011,11(6):49-51,55.
[2]史利強,郭秀清.城市軌道交通乘客信息系統(tǒng)中信號處理單元設計[J].微型機與應用,2015,34(2):29-31,34.
[3]謝群.列車全數(shù)字緊急對講單元硬件設計與實現(xiàn)[D].大連:大連理工大學,2011.
[4]嚴利明,胡立坤,王慶超.基于 UART的主從通信方式的主節(jié)點時序分析[J].電測與儀表,2006,43(7):51-54.
[5]張恒旭,郭秀清,霍勇.基于 Atmega128數(shù)字化報站器的設計與實現(xiàn)[J].機電一體化,2011,17(10):66-70.
[6]黃俊杰,黃云峰.AVR單片機實現(xiàn)光電隔離 RS-422-485智能接口研究[J].鄭州大學學報(工學版),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)路網控制中心設計的研究 [J].鐵路計算機應用,2013,22(5):55-57.
[9]徐強,郭秀清.地鐵列車 PIS存儲模塊的設計[J].微型機與應用,2014,35(22):14-16.
[10]劉煒,毛建鑫,梁磊,等.一種基于 ARM的集中器的硬件實現(xiàn)[J].電子技術應用,2014,40(1):86-89.
Design and implementation of the passenger emergency communication unit based on ATmega8-A
Tao Yuan,Guo Xiuqing
(Department of Control Science and Engineering,Tongji University,Shanghai 201804,China)
With the rapid development of urban metro systems,safety issues of metro trains have gradually become a big concern among passengers.Securing smooth communications is one of the key components to ensure safe operation of trains.Focusing on the deficiencies of current PECU (Passenger Emergency Communication Unit)of Alstom metro trains running on Shanghai Metro Line 3,this paper proposes a series of solutions based on Atmega8-A as the control kernel and offers the hardware designs of PECU and the realization methods of software.
PECU;Atmega8-A;USART;communication port
U121
A
1674-7720(2015)23-0016-04
陶源,郭秀清.基于 ATmega8-A的乘客緊急通信單元的設計與實現(xiàn)[J].微型機與應用,2015,34(23):16-19.
2015-08-03)
陶源(1991-),男,碩士研究生,主要研究方向:軌道交通乘客信息系統(tǒng)。
郭秀清(1965-),女,教授,主要研究方向:過程控制與計算機控制。