桂愛剛 何偉挺 鄭康生 高旻戈 鐘 珅
(通號萬全信號設備有限公司,杭州 310000)
隨著我國城市軌道交通日新月異的發展,一種新的軌道交通方式—單軌(Monorail)開始進入人們的視線。單軌是一種輕型、中等速度的城市軌道交通工具,相比于傳統的地鐵、輕軌、磁懸浮等交通方式,其具有建設周期短、造價成本低、不占用地面交通資源、低碳環保等優點,特別適宜于中小城市作為軌道交通發展,亦可在大城市作為地鐵的延伸,是一種極具潛力的城市軌道交通發展模式[1]。
線路數據文件是車載控制器(Carbone Controller,CC)系統運行的基礎,更是列車運營安全的重要保障。線路數據文件結構設計不光要考慮線路數據的安全保障措施,同時還需考慮線路數據檢索效率。線路數據文件生成后其數據本身的正確性必須通過各種驗證方法去保證,多數情況下需要通過人工校驗方式去驗證數據的正確性。由于人工校驗的方式工作量大、過程繁瑣且容易產生錯誤,因此通過各種輔助方法簡化人工校驗的繁瑣程度和工作量從而實現快速驗證是必不可少的。
線路數據庫是CC系統運行的基礎,提供區段、信號機、道岔、應答器、坡度等各類設備的位置、限速等信息。考慮到城市軌道交通互聯互通需求,使用一種公用的數據格式是大勢所趨。本文所述方案以RailML數據格式為基礎,并基于單軌車載控制器CC的業務需求,增加若干自定義數據內容。RailML是以XMLSchema為基礎,對鐵路上基礎設施、車輛、時刻表3方面的數字軌道地圖進行定義的數據描述格式[2]。由于鐵路上各業務系統主要的運營任務是圍繞這3個方面進行,因此,RailML也被視為鐵路中通用的數字軌道地圖格式。
本文所述方案主體數據以進路為基本單位,每條進路都是由區段組成,而每個區段都是由結點組成。結點類型有3種,分別是計軸、道岔以及軌道終端結點。結點之間就是區段,1個或多個區段組成了一條進路。
本文所述線路數據總體結構如圖 1所示。
在圖 1中,線路數據主要由3部分內容組成:文件信息、文件索引和數據,同時數據中又包含進路索引,通過文件索引和進路索引兩級索引模式,CC可以快速檢索當前狀態下所需的所有數據。
文件信息由數據版本、MD5校驗碼、數據生成時間和數據區字節數組成,MD5校驗碼校驗整個數據區域。數據版本、MD5校驗碼和數據生成日期皆用于CC運行時校驗,以保障數據文件匹配性和正確性。文件信息結構如表 1所示。
文件索引包括應答器組、車站和進路索引結構體,用于快速檢索應答器組數據、車站數據和進路索引數據。文件索引結構如表 2所示。

圖1 線路數據總體結構Fig.1 Line data architecture

表1 文件信息結構表Tab.1 Files information structure

表2 文件索引結構表Tab.2 Files indexes structure
數據包括應答器組信息、車站信息、進路索引信息和進路數據信息,其中應答器組信息和車站信息用于描述工程中的所有應答器組和車站的相關信息(信息結構體根據實際所需信息內容定義);進路索引用于快速定位指定進路號所對應的進路數據,進路索引結構如表 3所示。進路數據信息包括該進路所有的物理設備或屬性信息,即信號機、應答器、坡度、限速、站臺和特殊區段等(信息結構體根據實際所需信息內容定義)。

表3 進路索引結構表Tab.3 Route indexes structure
線路數據結構設計及線路數據文件生成屬于CC產品研發階段的重要任務,保障線路數據檢索效率以及線路數據文件生成過程安全性是其重要衡量指標。在工程實施階段,采用什么驗證手段保證線路數據文件源數據本身的正確性,則是必須去面對的問題。
在軌道交通行業,線路數據文件驗證必須有人工參與,通常情況下一人負責數據錄入和生成,另外一人負責數據校驗。由于線路數據校驗工作量大、過程繁瑣且容易產生人為錯誤,因此開發輔助工具或采用輔助手段簡化人工校驗的繁瑣程度和工作量,從而實現快速且安全的數據驗證是必不可少的。
本文將介紹一種快速驗證方法,即基于第三方工具010Editor腳本語言定制適配的線路數據文件解析腳本。人工驗證時只需運行腳本,腳本運行后自動解析線路數據文件,解析后的數據明確直觀且顯示的數據結構與方案中數據結構完全一致,驗證人員只需逐項確認即可。
010Editor是一個全新的十六進位文件編輯器,它有別于傳統的十六進位編輯器在于它可用腳本來解析二進位文件, 從而讀懂和編輯它。它還可用來比較一切可視的二進位文件。同時010Editor腳本語言功能強大、自帶大量標準格式文件解析腳本,且腳本語言與C語言類似,非常方便定制開發。
依照010Editor腳本語言規則,首先在腳本中編寫各數據結構體,以進路索引和進路數據結構體為 例, 如STROUTEREF和STDATAOFROUTE結構體定義所示。
typedef struct
{
UINT32 RouteID
UINT16 SignalNo
UINT16 Reserve1
UINT32 SignalAddress
UINT16 BaliseNo
UINT16 Reserve2
UINT32 BaliseAddress
UINT16 GradientNo
UINT16 Reserve3
UINT32 GradientAddress
UINT16 LimitedSpeedNo
UINT16 Reserve4
UINT32 LimitedSpeedAddress
UINT16 StationNo
UINT16 Reserve5
UINT32 StationAddress
UINT16 SpTrackNo
UINT16 Reserve6
UINT32 SpTrackAddress
} STROUTEREF;
typedef struct
{
STSIGNAL Signal[SIGNAL_CNT]
STBALISE Balise[BALISE_CNT]
STGRADIENT Gradient[GRADIENT_CNT]
STLIMITEDSPEED LimitedSpeed[LIMI TEDSPEED_CNT]
STPLATFORM Station[STATION_CNT]
STSPECIALSECTION SpecialSection[SPTRACK_CNT]
} STDATAOFROUTE;
各數據結構體定義完成后,腳本中依據線路數據總體結構增加整體數據解析過程,腳本代碼如下所示。
//變量定義
local int nIndex = 0;
local int SIGNAL_CNT = 0;
local int BALISE_CNT = 0;
local int GRADIENT_CNT = 0;
local int LIMITEDSPEED_CNT = 0;
local int STATION_CNT = 0;
local int SPTRACK_CNT = 0;
//數據解析
STFILEINFO FileInfo
STFILEREF FileRef
STBALISEGRP BaliseGrp[FileRef.BlsNo]
STSTATION StationRef[FileRef.StationNo]
STROUTEREF RouteRef[FileRef.RouteIndex-No]
//解析進路數據
for(nIndex=0; nIndex < FileRef.RouteIndexNo; nIndex++)
{
SIGNAL_CNT=RouteRef[nIndex].SignalNo;
BALISE_CNT= RouteRef[nIndex].BaliseNo;
GRADIENT_CNT=RouteRef[nIndex].GradientNo;
LIMITEDSPEED_CNT=RouteRef[nIndex].LimitedSpeedNo;
STATION_CNT=RouteRef[nIndex].StationNo;
SPTRACK_CNT=RouteRef[nIndex].SpTrackNo;
STDATAOFROUTE DataOfRoute
}
根據線路數據結構生成一個測試用線路數據文件LineData.bin,將該文件加載到010Editor軟件中,運行定制腳本文件,線路數據自動解析并正常顯示解析結果。解析后的總體數據結構顯示與方案設計中保持一致,如圖2所示。文件信息、文件索引、應答器組、車站及進路索引解析結果如圖3所示,進路數據解析結果如圖4所示。從解析結果圖中可以看出,使用010Editor腳本解析出的結果顯示層次分明、數據直觀清晰且包含相關注釋,非常易于驗證人員使用。使用該方法可以很大程度提高驗證效率,同時大幅降低工作量。
本文提出一種線路數據結構設計方案,該方案采用的兩級索引模式可以提升CC程序檢索效率,同時文件信息中包含數據版本、MD5碼和數據生成時間,為CC提供數據匹配性和安全性的校驗信息。最后文中介紹了一種基于第三方軟件腳本語言快速驗證線路數據文件的方法,該方法降低了線路數據文件驗證的工作量和繁瑣程度,大幅提高了線路數據文件驗證效率。

圖2 線路數據解析后總體結果圖Fig.2 General results diagram of parsed line data

圖3 文件信息、文件索引、應答器組、車站及進路索引解析結果圖Fig.3 Results diagram of parsed data of files information,files indexes, balise groups, stations and routes

圖4 進路數據解析結果圖Fig.4 Results diagram of parsed routes data
[1]何偉挺,桂愛剛,鄭康生,等.針對單軌的車載ATP方案探討[J].鐵路通信信號工程技術,2017,79(14):77-80.He Weiting,Gui Aigang,Zhen Kangsheng,et al.Discussion on ATP solution of Urban Rail Transit[J].Railway Signalling & Communication Engineering,2017,79(14):77-80.
[2]丁濤平,王劍.數字軌道地圖描述方法研究及通用軌道模型設計[J]. 鐵道通信信號,2014,50(7):1-5.Ding Taoping, Wang Jian.Research on Digital Trajectory Map Description and Universal Track Model Design[J].Railway Signalling & Communication,2014,50(7):1-5.
[3]李芾,許文超,安琪.懸掛式單軌車的發展及其現狀[J].機車電傳動,2014(2):16-20.Li Fei,Xu Wenchao,An Qi.Development and Status of Urban Monorail[J].Electric Drive for Locomotives,2014(2):16-20.
[4]楊孜.數字軌道地圖數據構建方法研究[D].北京交通大學,2014.
[5]劉江,蔡伯根,王劍.列車定位軌道電子地圖數據約簡算法研究[J].鐵道學報,2008,30(4):73-79.Liu Jiang, Cai Bogen, Wang Jian.Research on Train Reduction Orbit Electronic Map Data Reduction Algorithm [J].Journal of the China Railway,2008, 30(4):73-79.
[6]夏青.列控系統數字軌道地圖生成算法研究[D].蘭州交通大學,2012:23-35.
[7]汪希時.智能鐵路運輸系統IST-R[M].北京:中國鐵道出版社,2004:12-15.
[8]李修睦.圖論導引[M].武漢:華中理工大學出版社,1982:15-23.
[9]趙玉蘭,王俊義.數據結構與算法[M].北京:清華大學出版社,2008:106-119.