1 概述

  随着我国城市轨道交通日新月异的发展,一种新的轨道交通方式—单轨(Monorail)开始进入人们的视线。单轨是一种轻型、中等速度的城市轨道交通工具,相比于传统的地铁、轻轨、磁悬浮等交通方式,其具有建设周期短、造价成本低、不占用地面交通资源、低碳环保等优点,特别适宜于中小城市作为轨道交通发展,亦可在大城市作为地铁的延伸,是一种极具潜力的城市轨道交通发展模式[1]。

  线路数据文件是车载控制器(Carbone Controller,CC)系统运行的基础,更是列车运营安全的重要保障。线路数据文件结构设计不光要考虑线路数据的安全保障措施,同时还需考虑线路数据检索效率。线路数据文件生成后其数据本身的正确性必须通过各种验证方法去保证,多数情况下需要通过人工校验方式去验证数据的正确性。由于人工校验的方式工作量大、过程繁琐且容易产生错误,因此通过各种辅助方法简化人工校验的繁琐程度和工作量从而实现快速验证是必不可少的。

2 线路数据结构设计

  线路数据库是CC系统运行的基础,提供区段、信号机、道岔、应答器、坡度等各类设备的位置、限速等信息。考虑到城市轨道交通互联互通需求,使用一种公用的数据格式是大势所趋。本文所述方案以RailML数据格式为基础,并基于单轨车载控制器CC的业务需求,增加若干自定义数据内容。RailML是以XMLSchema为基础,对铁路上基础设施、车辆、时刻表3方面的数字轨道地图进行定义的数据描述格式[2]。由于铁路上各业务系统主要的运营任务是围绕这3个方面进行,因此,RailML也被视为铁路中通用的数字轨道地图格式。

  本文所述方案主体数据以进路为基本单位,每条进路都是由区段组成,而每个区段都是由结点组成。结点类型有3种,分别是计轴、道岔以及轨道终端结点。结点之间就是区段,1个或多个区段组成了一条进路。

  本文所述线路数据总体结构如图 1所示。

  在图 1中,线路数据主要由3部分内容组成:文件信息、文件索引和数据,同时数据中又包含进路索引,通过文件索引和进路索引两级索引模式,CC可以快速检索当前状态下所需的所有数据。

  文件信息由数据版本、MD5校验码、数据生成时间和数据区字节数组成,MD5校验码校验整个数据区域。数据版本、MD5校验码和数据生成日期皆用于CC运行时校验,以保障数据文件匹配性和正确性。文件信息结构如表 1所示。

  文件索引包括应答器组、车站和进路索引结构体,用于快速检索应答器组数据、车站数据和进路索引数据。文件索引结构如表 2所示。

  数据包括应答器组信息、车站信息、进路索引信息和进路数据信息,其中应答器组信息和车站信息用于描述工程中的所有应答器组和车站的相关信息(信息结构体根据实际所需信息内容定义);进路索引用于快速定位指定进路号所对应的进路数据,进路索引结构如表 3所示。进路数据信息包括该进路所有的物理设备或属性信息,即信号机、应答器、坡度、限速、站台和特殊区段等(信息结构体根据实际所需信息内容定义)。

3 线路数据文件快速验证方法

  线路数据结构设计及线路数据文件生成属于CC产品研发阶段的重要任务,保障线路数据检索效率以及线路数据文件生成过程安全性是其重要衡量指标。在工程实施阶段,采用什么验证手段保证线路数据文件源数据本身的正确性,则是必须去面对的问题。

  在轨道交通行业,线路数据文件验证必须有人工参与,通常情况下一人负责数据录入和生成,另外一人负责数据校验。由于线路数据校验工作量大、过程繁琐且容易产生人为错误,因此开发辅助工具或采用辅助手段简化人工校验的繁琐程度和工作量,从而实现快速且安全的数据验证是必不可少的。

  本文将介绍一种快速验证方法,即基于第三方工具010Editor脚本语言定制适配的线路数据文件解析脚本。人工验证时只需运行脚本,脚本运行后自动解析线路数据文件,解析后的数据明确直观且显示的数据结构与方案中数据结构完全一致,验证人员只需逐项确认即可。

  3.1 定制解析脚本

  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[LIMITEDSPEED_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.RouteIndexNo];

  //解析进路数据

  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;

  }

  3.2 线路数据解析测试

  根据线路数据结构生成一个测试用线路数据文件LineData.bin,将该文件加载到010Editor软件中,运行定制脚本文件,线路数据自动解析并正常显示解析结果。解析后的总体数据结构显示与方案设计中保持一致,如图2所示。文件信息、文件索引、应答器组、车站及进路索引解析结果如图3所示,进路数据解析结果如图4所示。从解析结果图中可以看出,使用010Editor脚本解析出的结果显示层次分明、数据直观清晰且包含相关注释,非常易于验证人员使用。使用该方法可以很大程度提高验证效率,同时大幅降低工作量。

4 结语

  本文提出一种线路数据结构设计方案,该方案采用的两级索引模式可以提升CC程序检索效率,同时文件信息中包含数据版本、MD5码和数据生成时间,为CC提供数据匹配性和安全性的校验信息。最后文中介绍了一种基于第三方软件脚本语言快速验证线路数据文件的方法,该方法降低了线路数据文件验证的工作量和繁琐程度,大幅提高了线路数据文件验证效率。

参考文献

  [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.

  (收稿日期:2017-11-10)

  (修回日期:2018-01-11)