摘 要:本文首先簡單介紹了高速磁浮列車中測速定位單元與車載設備之間的通信要求,并以此為基礎提出了一種基于RS485物理層同步通信的實現方法。采用Xilinx公司的XC2S100作為通信的收發(fā)器,采用TI公司的TMS320F2812作為通信的控制器,制定了系統(tǒng)軟硬件設計方案,并通過仿真和實驗驗證了該方案在實際應用中的可行性。
關鍵詞:磁浮列車;RS-485;同步通信
Abstract: This paper introduces the communication requirements between locating electronic unit and on-board equipment of high-speed maglev train firstly. A synchronous communication method based on the RS-485 physical layer is presented for fulfilment of these requirements. Xilinx’s XC2S100 is used as communication transceiver and TI’s TMS320F2812 is used as communication controller. The hardware and software scheme are designed, its feasibility in practical applications is verified by simulation and experiment.
Keywords: Maglev train; RS-485; synchronous communication
0 引言
在高速磁浮交通系統(tǒng)中,車載測速定位單元對車輛的位置和速度進行實時測量,并將位置和速度信號通過無線電系統(tǒng)傳送至地面上的牽引控制系統(tǒng)和運行控制系統(tǒng),以用于長定子直線同步電機牽引的反饋控制及車輛運行的指揮和安全防護。測速定位單元是牽引和運控系統(tǒng)閉環(huán)控制的核心和關鍵。
測速定位單元緊鄰懸浮電磁鐵及長定子繞組和鐵心,處于懸浮磁場和牽引磁場中,電磁環(huán)境非常復雜,對其通信設備的電磁兼容性能提出了很高的要求。另外,為滿足牽引控制系統(tǒng)的需求,測速定位信號的精度要求相當高。因此,對測速定位信號傳輸的速度、實時性及可靠性都有非常高的要求。
1 同步485的實現方法
考慮到測速定位單元的工作環(huán)境及通信功能需求,在選擇其與車載無線電系統(tǒng)之間的通信方式時,經過分析和比較,決定采用傳輸速率較高的同步通信方式,并使用屏蔽性能較好的雙絞線實現RS-485平衡型差分傳輸。
1.1 接口設計及通信協(xié)議
測速定位單元與車載無線電控制單元之間的通信接口關系如圖1所示。車載無線電控制單元為主控方,車輛測速與定位單元為受控方。通信雙方均由收發(fā)器和控制器構成,收發(fā)器之間采用RS-485同步串行接口方式,每個接口有4對差分線。
[align=center]
圖1 通信接口關系示意圖[/align]
圖1中,CLK為時鐘信號,ANF為無線電請求信號,UEF為門控信號,DATA為數據信號。車輛測速定位單元每20ms向無線電控制單元發(fā)送一次數據,傳輸速率為512kbps。為了防止信號干擾的小脈沖,ANF信號的寬度為10個CLK信號;在ANF信號變?yōu)榈托盘柡?,等?0個CLK信號寬度后,UEF才開始跳變?yōu)橛行?。ANF、UEF、DATA信號均在CLK的上升沿變化,在無信號傳輸時,UEF、DATA、ANF均為低電平,時鐘信號保持傳輸。數據傳輸時,采用左移方式,即先傳高位,后傳低位。信息幀格式如表1所示:
表1 信息幀格式
1.2 同步485的收發(fā)器實現
在本文所論述的通信系統(tǒng)中,在車輛測速定位單元及車載無線電控制單元雙方均采用Xilinx公司的XC2S100作為通信的收發(fā)器,模擬同步485的發(fā)送與接收時序。同步485的FPGA設計主要是基于Verilog 硬件描述語言,所使用的EDA工具包括ISE(含其內部集成工具)、Modelsim。
?。?)時鐘及定時信號的的產生:
對于車載無線電控制單元需要產生512k速率的時鐘信號與20ms一次的ANF(無線電請求)信號。另外,對于該單元在串行接收定位數據時其接收時鐘應為512k(波特率時鐘)的16倍,即8M。因此,分頻器在同步485通信方式中得到廣泛應用。
1) 偶數分頻較為簡單,只需設計一個計數器進行計數,待計數至分頻數的二分之一時使分頻后的時鐘電平翻轉即可;奇數分頻較為復雜,因為計數器不能對非整數進行計數,需使用一定的算法進行處理。對奇數分頻模塊進行功能仿真后的波形如圖2所示:
[align=center]
圖2 分頻模塊仿真波形[/align]
2) ANF信號的產生:ANF信號每隔20ms發(fā)送一次,每次發(fā)送脈寬為10個時鐘周期。ANF信號的產生可以分成兩部分實現,首先產生每隔20ms的脈沖信號,然后把此脈沖信號的寬度變成10個時鐘周期。
?。?)串行數據的發(fā)送與接收
1) 串行數據的產生:根據通信協(xié)議的要求,測速定位單元每隔20ms應串行移出72bits數據。如果每個發(fā)送時鐘周期移出一位,則需要72個時鐘周期才能全部移出,因此門控信號也需要保持72個時鐘周期的寬度。
2) 串行數據的接收:同步串行接收一幀(72bits)數據與異步串行接收是不同的。由于收發(fā)時鐘不是異步的,因此不能以判斷在空閑態(tài)以后出現的第一個低電平作為一幀的開始,而是以門控信號(UEF)的上升沿作為一幀數據到來的判斷。為了避免數據傳輸過程中毛刺的影響,仍以波特率時鐘的16倍進行接收,即每隔16個波特率時鐘周期采樣一次,因此每個數據將在傳輸的每一位的中點處被采樣。
串行數據發(fā)送與接受的仿真時序圖如圖3所示。
[align=center]
圖3 同步485仿真時序圖[/align]
1.3 收發(fā)器與控制器之間的數據交換
基于RS-485的同步通信時序是用FPGA作為通信收發(fā)器來模擬的,但是通信數據最終是與系統(tǒng)的CPU進行數據交換的。在該通信方式的設計中,通信雙方均采用TI公司的TMS320F2812作為處理器,即通信的控制器。FPGA與DSP的數據交換必須滿足一定的時序,才能保證測速定位單元向車載無線電控制單元實時地傳輸位置及速度信號。本系統(tǒng)中,DSP控制器采用C語言進行軟件設計。
?。?) 測速定位單元側DSP與FPGA的數據交換
TMS320F2812的外部存儲器XINTF可供選擇的外部地址空間有XINTF0,XINTF2,XINTF6。其中XINTF0 使用XZCS0AND1作為片選信號,外部存儲器擴展空間為8K;XINTF2與XINTF6分別使用XZCS2、XZCS6AND7作為片選信號,外部存儲器擴展空間均為0.5M。測速定位單元在發(fā)送位置速度信息時,是通過DSP的數據線傳輸到FPGA,DSP根據相應的外部存儲器片選信號找出對應的地址,在從底層傳感器得到一個新的定位數據后寫入該地址。相對應的硬件連接框圖如圖4所示:
[align=center]
圖4 車輛測速定位單元DSP控制器向FPGA收發(fā)器寫數據的硬件連接示意圖[/align]
根據協(xié)議要求,定位信息每次發(fā)送時包括5個字節(jié)的用戶數據和2個字節(jié)的CRC校驗,因此16bits數據線至少需要連續(xù)發(fā)送四次才能將底層的定位信息完整地傳送到FPGA。
為了減少硬連線,這里只連接地址線的高五位,對其中的低四位地址線進行4-16譯碼,最高位地址線作為該譯碼器的使能信號。取對應于一個外部存儲器片選信號的四個地址,比如片選信號XZCS2為低(對應的外部存儲器地址范圍:0x080000—0x100000),即可選用0xe0000,0xe4000,0xe8000,0xec000四個地址作為DSP向FPGA寫數據的地址。
由于每個不同的地址都對應一個地址譯碼值,當四個譯碼值都出現后才可認為一次定位信息傳送完成。這時把連續(xù)接收到的七個字節(jié)加上幀頭及幀尾作為測速定位單元發(fā)送給車載無線電控制單元的一幀數據。相對應的地址譯碼值如表2所示。
表2 地址譯碼值
?。?) 車載無線電控制單元側DSP與FPGA的數據交換
由于采樣時間為毫秒級,為了避免占用過多的CPU資源,車載無線電控制單元中DSP從FPGA讀數據時不采用查詢方式,而采用外部中斷來接收數據。將DSP的16bits數據線與FPGA連接,DSP的XINT1也連接到FPGA的I/O管腳。若選用XZCS0AND1作為外部存儲器片選信號,則DSP從FPGA讀數據的尋址空間范圍為0x002000—0x004000,這個地址范圍內所讀出的數據即為數據線上傳送到DSP的定位數據。相對應的硬件連接框圖如下:
[align=center]
圖5 車載無線電傳輸單元DSP控制器從FPGA收發(fā)器讀數據的硬件連接示意圖[/align]
由于FPGA傳送到DSP的一幀數據為72bits,因此通過16bits數據線傳輸需要分5次才能傳送完,每16bits數據到達時產生一次外部中斷。設波特率時鐘為512k,假設來自定位單元完整的一幀數據為0x02123456789abcde03,車載無線電單元通過16bits數據線分次轉發(fā)到DSP的數據則為0x0002, 0x1234, 0x5678, 0x9abc,0xde03 。數據及中斷信號產生的時序如圖6所示。由圖6可以看出,每對應移出一次dataout,都會相應地發(fā)出一個外部中斷信號xint1,DSP一旦接收到外部中斷便在中斷服務子程序中從16bits數據線讀取信號值。為了完整的接收一幀信號,可在外部中斷服務程序中定義一個16級FIFO,當從FIFO的最底層讀出的數據為0x02時,便可以判斷一幀數據的開始(若在用戶數據和校驗值中存在0x02則要進行相應的字符轉義),依次接收以下的數據便得到完整的一幀定位信息。
[align=center]
圖6 車載無線電傳輸單元DSP控制器從FPGA收發(fā)器讀數據的仿真波形[/align]
2 通信雙方的原理圖
根據以上對同步485實現方法的描述,在ISE中利用ECS工具所描繪的頂層原理圖如下,包括測速定位單元同步數據發(fā)送和車載無線電控制單元同步數據接收。
定位測速單元同步數據發(fā)送方的原理圖如圖7所示。
[align=center]
圖7 同步數據發(fā)送方原理圖[/align]
圖7中,addr_decode為地址譯碼模塊,用于從DSP完整地接收一幀定位信息;tra485data為串行數據及門控信號發(fā)送模塊。其中,din(15:0)直接來自DSP的16bits數據線;addr(3:0)與DSP的A17-A14地址線相連;clkin及anfin信號由車載無線電控制單元提供。輸出的dataout及uefout經過輸出緩沖及差分電平轉換后送給車載無線電控制單元。
車載無線電控制單元同步數據接收方的原理圖如圖8所示。
[align=center]
圖8 同步數據接收方原理圖[/align]
圖8中,divide_512k為發(fā)送時鐘產生模塊,產生通信所需的波特率時鐘;anf_shift 用于產生無線電請求信號;rec485data用于串行接收定位信息并通過dataconvert模塊轉發(fā)到通信控制器。其中,Dataout(15:0)直接通過數據線連到DSP,Xint1則連到DSP的外部中斷1。anfout和clkout由輸入的晶振頻率分頻后得到,經輸出緩沖及差分電平轉換后送給車輛測速定位單元。
3 結束語
在高速磁浮列車特殊的通信環(huán)境中,基于RS-485物理層的同步通信方式體現出其抗干擾性強、實時性好,誤碼率低等優(yōu)點,且實現原理簡單,硬件連接也不復雜。利用FPGA所實現的通信收發(fā)器設計靈活、可靠性高,其功能在實際應用中已得到驗證,且效果良好。
參考文獻:
[1] 張衛(wèi)寧. TMS320C28x系列DSP的CPU與外設(上)(下)[M]. 北京:清華大學出版社,2005.1.
[2] 王誠,薛小剛. FPGA/CPLD設計工具-Xilinx ISE使用詳解[M]. 北京:人民郵電出版社,2005.1.
[3] 李朝青. PC機及單片機數據通信技術[M]. 北京:北京航空航天大學出版社,2000.12.