季 高 張 峰 張士文
(上海交通大學電子信息與電氣工程學院,200240,上海∥第一作者,碩士研究生)
隨著現代城市軌道交通技術的不斷發展,列車上設備的種類越來越豐富,集成度越來越高,列車內部通信的信息量也在不斷增大。IEC 61375-1標準[1]將列車通信網絡(TCN)分為兩個層次:上層為絞線式車輛總線(WTB),用于連接編組內的各節車輛,實現列車級通信;下層為多功能車輛總線(MVB),用于連接車廂內固定設備,實現車輛內通信[2]。在城市軌道交通環境下,相較于其他的通用現場總線,MVB在實時性、可靠性、可管理性、介質訪問控制方法、尋址方式及通信服務種類等方面具有一定優勢[3]。
MVB上的數據包含各MVB設備與主控設備之間的通信數據,這些數據對監測列車運行狀態、對故障的實時處理有很重要的意義。目前新投入運行的列車大都自帶數據監測系統,可以將MVB上的數據實時上傳到遠程數據庫;但是在舊款列車上,沒有相關的數據監測系統。本文建立了一套針對舊款列車的遠程MVB數據監測系統,實現地鐵車輛關鍵數據的實時監測和遠程數據庫存儲。
遠程MVB數據監測系統需要實現MVB上主從幀的解碼及上傳,根據設備信息定義文件解析出對應MVB設備的運行狀態,并在遠程監測平臺上實現數據的儲存及實時顯示。該系統按功能主要分為解碼系統、傳輸系統和監測系統3個部分。系統的結構框圖如圖1所示。

圖1 遠程MVB數據監測系統結構框圖
解碼系統需要快速讀取MVB上的主從幀信息,因此采用FPGA(現場可編程門陣列)來實現,所選用的型號為EP4CE10F17C8。結合此芯片強大的數字電路邏輯資源,本文定制了一套MVB解碼及傳輸算法,實現了對MVB上數據信號的實時解碼;并結合SRAM(靜態隨機存取存儲器)進行解碼信息的緩存,在緩存數據達到一定量時,通過SPI(同步串行外設接口)從機模塊實現數據導出到傳輸系統。
傳輸系統實現了SPI主機功能,從解碼系統獲取解碼信息,并通過Wi-Fi將解碼信息傳輸到遠程服務器上。傳輸系統對可靠性、實時性有著較高的要求。本文中的傳輸系統是基于樹莓派3B開發板實現的。
監測系統需要搭建數據庫來儲存MVB解碼數據,并通過Web服務器來實現人機交互獲取數據。用戶可以使用瀏覽器登錄網頁查看當前和歷史MVB數據,為故障原因分析提供一定的依據。本文中的監測系統數據庫采用的是Mysql,Web框架選用的是基于Python的Django,能夠較好地完成顯示功能,并為日后的功能拓展奠定基礎。
MVB上的數據傳輸速率為1.5 Mbit/s,采用曼徹斯特編碼,即通過電氣電平的高低變化來對“0”“1”信號進行編碼,因此編碼后MVB上的波特率為3 Mbaud[5]。
MVB上的數據類型主要有兩種:一種為主幀,由MVB主設備發送,用以依次輪詢各從設備的運行狀態;另一種為從幀,由從設備根據主幀內容響應發出,包含對應設備的狀態信息[1]。MVB協議幀格式如圖2所示。

圖2 MVB協議幀格式
主幀和從幀各自具有固定的結構。主幀由主幀起始分界符、F碼、地址、CRC(循環冗余校驗)和終止分界符組成。其中,F碼限定了對應從幀的數據位數,地址為對應從設備的邏輯地址。從幀由從幀起始分界符、數據、CRC和終止分界符組成。其中,數據位數根據F碼來確定,數據內容根據設備信息定義文件來解析。
MVB解碼器是解碼系統的核心模塊,負責根據MVB協議將總線數據解碼并送入緩存區,其總體設計結構框圖如圖3所示。解碼器包含主從幀幀頭識別、幀尾識別、曼徹斯特解碼、CRC校驗和定時器等功能模塊,通過解碼控制單元來實現各功能模塊的使能、復位,控制解碼的流程[4]。數據輸入為經MAX3292芯片電平轉換后的MVB數據信號;時鐘輸入為經PLL(鎖相環)倍頻后產生的時鐘信號,解碼器內所有模塊共用此時鐘信號。

圖3 MVB解碼器結構框圖
幀頭識別和幀尾識別模塊采用有限狀態機實現,識別成功時會通知解碼流程控制單元,使其使能或復位曼切斯特解碼模塊。定時器模塊主要用于處理檢測出主幀但無從幀回復情況,設定一個超時時間,檢測在規定時間內是否能識別到從幀幀頭。總線異常管理模塊用來處理實際中可能出現的各種解碼異常情況,包括CRC校驗錯誤、幀長度錯誤、未定義F碼等,通過此模塊來進行異常匯總并反饋給解碼控制單元。圖4為幀頭識別和幀尾識別模塊工作流程示意圖。
由于MVB上的幀與幀之間的傳輸存在空隙,實際中解碼下來的數據量不高于100 kB/s。為了及時將數據上傳給樹莓派,本文采取SPI通信方式來進行數據傳輸。SPI總線支持全雙工通信,傳輸速率可達到30 Mbit/s以上,足夠滿足系統需求。本文選取的傳輸速率為5 Mbit/s。
MVB上的幀長度不固定,解碼信息必須經過緩存后再發出。本文以外置SRAM作為緩存器,芯片型號為IS61WV5128BLL,具有512 kB容量,足夠滿足設計要求。
解碼系統的緩存及輸出結構框圖如圖5所示。SRAM寫入模塊將接收的串行解碼數據轉換為并行格式,并生成其在SRAM中的儲存地址,在地址達到65 536或65 536的整數倍時,生成讀信號給SRAM讀取模塊;SRAM讀取模塊得到讀取信號后生成目標數據的SRAM地址,獲得數據并輸出給SPI從機模塊;SRAM控制模塊主要用于處理同時有讀寫請求的情況,生成SRAM儲存器的控制信號,保證系統可靠性;SPI從機模塊負責從SRAM讀取模塊獲取數據并發送給傳輸系統。

圖4 幀頭識別和幀尾識別模塊工作流程示意圖

圖5 解碼數據緩存及輸出結構框圖
基于地鐵中復雜的工作環境,如何將解碼信息有效無誤地傳輸到遠程服務器上是一個較大的難題。本文傳輸系統采用樹莓派開發板,此開發板運行Linux操作系統,搭載1.2 GHz的64 bit四核處理器,并且自帶無線網卡模塊,GPIO(通用型輸入/輸出端口)接口豐富,能夠較好地滿足功能需求[6]。依托地鐵線路上搭建的Wi-Fi網絡來進行數據上傳,在網絡不可達時將數據暫時儲存在本地,確保解碼數據不丟失。
樹莓派首先需要完成與FPGA板之間的通信,完整地獲取解碼信息。本文考慮到通信速率和數據處理難度等因素,選取以樹莓派作為SPI主機、以FPGA板作為SPI從機的方式來進行數據傳輸,圖6為樹莓派和FPGA板之間的連線圖。樹莓派通過rasp-config配置文件啟用SPI設備,并通過WiringPi庫函數來實現GPIO接口和SPI接口的控制。在傳輸過程中,樹莓派通過指定GPIO接口獲取傳輸請求,得到請求后回復同意傳輸信號;然后控制SPI接口接收固定大小數據并存入緩存區;接著將緩存的數據寫入文件,文件名以系統時間命名。

圖6 樹莓派與FPGA板連線圖
由于地鐵列車連續不間斷運行,且MVB總線上數據較多,因此需要傳輸的數據量會比較大,一天下來解碼的數據會達到數GB以上。為了減少對地鐵線路Wi-Fi帶寬的占用,很有必要在上傳數據前對數據進行壓縮操作。由于MVB幀具有重復數據多的特點,通過使用bzip2軟件壓縮,64 kB的原始解碼數據壓縮后通常只有5 kB左右。
考慮到實際需要連續上傳大量數據,地鐵Wi-Fi網絡又存在不穩定的情況,因此本系統選用FTP(文件傳輸協議)來實現與遠程服務器的數據傳輸。樹莓派上需要安裝vsftpd軟件,在開機后自動啟動FTP服務連接遠程服務器,同時實時監控指定文件夾下是否有待傳輸文件,如存在即嘗試傳輸,傳輸成功后刪除此本地文件。圖7為傳輸系統的任務流程圖。

圖7 傳輸系統任務流程圖
為了實現對MVB上數據信號的遠程監測,本文設計了一套基于Django框架的Web應用,并將其部署在Linux的Apache服務器上。Django是一種遵循MVC(Model View Controller)開發模式的框架[7],其模型組織結構如圖8所示。根據其框架,Model.py實現數據庫的創建、數據的寫入,以及控制器與數據庫的連接;Templates文件夾下存放與前端相關的HTML、CSS、JavaScript等文件,定義網頁界面和結構;控制器中的Urls.py指定項目中各種類的調用情況;View.py中定義各種處理函數包括數據的解析、刪除等。

圖8 Django模型組織結構圖
實現網頁顯示數據的基礎是需要將傳輸系統上傳的數據進行歸類解析。上傳數據的提取與解析流程圖如圖9所示。對主從幀對中的數據是否正常的判斷是通過幀格式以及CRC校驗來實現的。
根據系統設計,在網絡通信順暢的情況下,地鐵列車MVB采集系統每次傳輸64 kB的MVB解碼數據到遠程服務器,傳輸時間間隔為1 s左右。對FTP文件夾下文件的檢索通過使用django-crontab插件執行定時任務的方式來完成。解析得到主從幀對后,服務器會以時間、車輛號、主幀號等為字段將數據存入數據庫。用戶可通過訪問網頁查詢數據庫得到解析后的MVB數據,通過數據的導出可以協助進行故障情況分析以及故障預防。

圖9 數據提取與解析流程圖
EDCU(車門控制單元)是一種典型的MVB設備,根據車輛的控制信號來執行車門的開關動作[8]。EDCU會收集自身以及外圍電路的運行狀態信息,在接收到相應主幀信號時,會將這些信息回復到MVB總線上。車門半實物仿真系統是基于Labview軟件和硬件電路搭建的仿真系統,通過模擬車門正常工作狀態給EDCU提供各種輸入信號,根據EDCU的輸出是否正常來判斷其性能。本文利用EDCU和車門半實物仿真系統進行了MVB遠程監測系統的測試,測試結構框圖如圖10所示。
本測試主要關注EDCU回復的關于門控單元狀態信息的幀,此幀問詢周期為128 ms,長度為256 bit。經過分析MVB設備定義表,可知此幀僅有前2個字節即前16 bit表示了當前門控器的狀態信息,因此在本測試中只需關注此從幀的前16 bit。圖11為監測網頁查詢對應端口號結果。通過測試系統對車門控制單元進行開關門仿真,觀察到從幀的前16 bit也隨著測試過程產生變化。0x0F00表示門控器處于在開門過程中,0x8F00表示門控器已經開門到位,數值與MVB設備定義表中的定義相符。

圖10 MVB遠程監測系統測試結構框圖

圖11 MVB遠程監測系統查詢結果
本文設計了一套基于MVB總線的地鐵車輛關鍵數據遠程監測系統。利用FPGA在高速信號處理中的優勢設計了MVB解碼系統,結合樹莓派豐富的拓展接口和高效的處理能力實現了解碼數據的上傳,搭建了遠程Web服務器來進行人機交互和數據顯示,實現了低成本、高拓展性的展示系統。利用現有的車門半實物仿真平臺和EDCU進行了系統功能的測試,驗證了整個數據流程的完整性以及可行性。