杨 城, 陈荣武, 王怀松
(西南交通大学 信息科学与技术学院,成都 611756)
基于MSTS的三维仿真演示系统外部接口的研究与实现
杨 城, 陈荣武, 王怀松
(西南交通大学 信息科学与技术学院,成都 611756)
以微软开发的MSTS(Microsoft Train Simulation)为基础,利用其模型库以及底层引擎,结合微软发布的专业三维引擎开发套件XNA Framework 为框架和工具,以OR(Open Rails)开源项目为依托,为已创建好的三维仿真线路环境创建接口,使得外部系统可通过该接口与三维仿真线路环境进行数据交互。通过对数据的处理和相关功能函数的执行,实现外部系统对三维仿真线路环境中模型的控制,如车辆、道岔、信号机等。该接口为三维仿真线路环境与其他仿真系统,如ATS监控系统,车站区间联锁等仿真系统实现信息交互,控制命令执行提供了实现基础,增强了三维仿真线路环境的可操控性与真实性 。
MSTS; XNA; 三维仿真; 接口
近年来,在轨道交通领域,三维仿真技术在实现线路场景的三维重建,模拟事故场景复原,以及在模拟列车驾驶等诸多方面,已经得到了广泛的应用。针对不同的仿真技术方案,其仿真实现平台与实现工具也种类繁多,以北京交通大学开发的基于Vega的北京地铁一号线三维视景仿真平台[1]为代表,该仿真方案使用 multigen creator 工具进行建模,C/C++进行控制,基本实现了地铁线路的部分三维仿真的功能,但是从细节上看,还有诸多缺陷,比如建模的周期长,难度大,模型精度,美观性,复用性不高。另一方面,Vega,multigen creator软件掌握难度较高,且实现的效果一般。因此该技术在轨道交通领域应用的并不广泛。而微软开发的MSTS是一款成熟的轨道交通领域三维仿真产品,其逼真的展示效果,以及强大的可编辑与可扩展性,使其成为一款优秀针对轨道交通领域的三维场景创建和编辑的工具,该工具为轨道交通领域的三维仿真线路环境的搭建[2-3]提供了极大的便利,然而,MSTS所创建的三维仿真线路环境并没有提供外部接口,该环境是封闭的。仿真线路中的模型,如道岔,信号机,车辆等不能通过外部系统控制,限制了仿真模型的可操作性与仿真效果的真实性,而且也和现实的业务逻辑不相符。为了使MSTS创建的仿真线路环境中的车辆、道岔、信号机等模型能够根据需要被外部仿真系统如站场联锁仿真系统等控制,以实现更高级别的视景与业务逻辑层级的仿真效果。可以创建相关的接口,通过系统间的通信,调用相关功能函数实现这些接口,最终实现了预期的仿真效果。
MSTS创建的三维仿真线路环境只是一个底层的模型环境,除了模型实体外,还包括一系列记录各类参数信息的配置文件,想要实现基本的仿真效果,需要将模型与文件载入到对应的运行环境中。这里以基于微软XNA Framework技术框架[4],C#为编程语言开发的三维仿真演示系统OR(Open Rails)为仿真实现平台,在安装有.net Framework 3.5及其以上版本运行库的Windows操作系统下,能够正常运行该三维仿真演示系统。
三维仿真演示系统通过调用MSTS底层的模型文件与对应的配置文件实现对车辆,以及线路上相关联锁设备的控制,如信号机,道岔等。因为外部系统是无法直接控制三维仿真线路中MSTS底层模型的。所以,外部系统只能通过三维仿真演示系统来间接对MSTS底层模型进行控制。因此,两个系统间需要建立起通信,实现数据的互联互通。三维仿真演示系统在接受到来外部系统的数据后,需要对数据进行分析,判定该数据是否满足根据两个系统制定的通信协议。判定无误后,将数据进行处理,再将处理后得到的运算值作为参数传递给已经写好外部接口实现函数。该函数在运行时,再执行相关的功能函数,最后完成对MSTS底层模型的驱动。从而完成了外部系统通过三维仿真演示系统控制MSTS底层模型[4],实现预期的仿真效果与目的。通过对数据流向与业务逻辑的分析,三维仿真演示系统与外部系统建立通信后,作为三维仿真功能的具体实现系统,三维仿真演示系统应当作为Socket通信的客户端,外部仿真系统应作为Socket通信的服务器端,控制指令由服务器端下发至客户端。仿真系统层级结构如图1所示。
图1 仿真系统层级结构示意图Fig.1 Hierarchical structure diagram of the simulation system
4.1 对模型进行更进一步的抽象
以微软XNA Framework为技术框架,以C#作为编程语言,将MSTS底层模型进行进一步的抽象,增加相关模型的属性。在三维仿真演示系统中,对应模型被抽象为一个具体的模型类的对象,模型的特征通过该对象的属性体现。结合相关配置文档,在MSTS以及三维演示系统环境中才能被加载并使用,这里以道岔对象为例,在MSTS底层文件中,有对道岔模型的基本描述,如状态,类型,标识(Uid号),因此在对道岔模型这个类进行抽象时,应当保留以上全部属性,而且应当根据需求适当增加属性,在模型库中,道岔的种类繁多,如图2所示。
4.2 道岔模型抽象过程
图2展示了三维演示系统中城市轨道交通线路里常见的道岔对象,分别是右开道岔(图2左)、左开道岔(图2中)、交渡道岔(图2右),在对这些种类繁多的道岔模型进行抽象时,实际上只要对最简单的道岔种类进行抽象,而复杂的道岔对象可以看作是多个简单道岔对象的组合。如果将道岔看作线路的节点,那么这个虚拟线路就是通过节点的有向连接形成的网络拓扑结构,而节点的连接方向即是道岔当前的定/反位状态(复杂道岔如三开、交渡道岔等分解为单个的左开或者右开道岔处理)。整个线路的拓扑结构信息被保存在MSTS底层的轨道数据库*.tdb文件中,通过逐行读取该文件,当发现有节点对象时,对应生成一个道岔类的对象,对象的属性,如决定道岔定/反位状态的初始值也通过读取该文件获取,本文提出的接口正是间接通过自定义相关功能函数改变对应道岔或信号机对象的状态值来实现外部系统对三维仿真演示系统中对应的道岔和信号进行控制,从而达到仿真目的。
4.3 为道岔模型增加属性
在前文中提到,MSTS为了区分线路中的道岔对象,在生成的线路数据库文件中为每一个道岔对象分配了一个Uid(unique identifier)号,理论上,通过搜索这个Uid号就可以找到唯一与这个Uid号关联的道岔对象,但是这个默认生成的Uid号过长,并且不同对象的Uid号没有联系,不方便后期接口功能的具体的实现,因此,在不改变对应道岔模型类结构的前提下,为该类新添加一个SwitchID属性,当系统载入轨道数据库文件*.tdb时,每读取到一个节点,新添加属性的道岔模型类就创建一个对象,并且为该对象的SwitchID属性赋上一个int类型的值,该值用于唯一标识线路中的所有道岔对象并且依次递增,同样的,也可对信号机模型做同样的处理。最终当系统载入完整个*.tdb文件时,所有的道岔对象都被添加了唯一的一个表示属性SwitchID,且SwitchID属性的值在同一条线路里唯一。满足了我们的具体使用需求。
图2 常见道岔种类示意图Fig.2 Sketch Map of common type of switches
4.4 通过Socket与其他仿真系统建立通信
三维仿真演示系统的道岔、信号机、车辆等模型要实现被外部系统的访问和控制,必然要通过通信来实现,这里基于TCP/IP协议,采用Socket技术进行通信。由于三维演示仿真系统中道岔、信号机等模型作为被控对象,因此在进行通信的两个系统中,这里以三维仿真演示系统与ATS监控仿真系统为例,三维仿真系统应作为客户端。ATS监控仿真系统应作为服务器端。由服务器端下发调度指令,如进路排列命令,或者道岔单独控制命令等。
三维仿真演示系统要实现对指定对象如道岔、信号机或其它模型的控制应当接收到由服务器端发送的对应控制命令。因此需要统一通信的帧格式,如图3所示。
图3 帧结构示意图Fig.3 Schematic diagram of frame structure
其中,帧头用于区分控制命令的种类,如道岔控制命令和信号机控制命令以‘S’作为帧头,代表SWI(switch道岔简写)、SIG(signal信号机简写);帧内容是具体的控制命令,包含了要操控的对象编号,要求控制对象的当前状态,帧尾为命令结束标志,用于间隔其他帧信息。如帧信息“SWI0031/”,代表该命令为道岔操作命令;动作对象SwitchID号为003的道岔,道岔要实现的状态为反位(道岔状态中,0代表定位,1代表反位)。
4.5 相关功能函数执行过程
以站场控制类函数为例,当三维仿真演示系统接收到ATS监控仿真系统发送的命令后,首先检查帧头,如果满足站场控制命令(控制道岔或信号机的命令)的格式,则将该命令字符串作为参数交给站场控制函数处理,而站场控制函数将该字符串进行拆分,以“SWI0031/”为例,将该字符串拆分为“SWI”,“003”,“1”三个字符串;“SWI”表示将后面的两个字符串交由道岔命令处理函数执行,道岔命令处理函数接收到“003”,“1”后,驱动底层模型,将003号道岔的状态改变为反位。同理,处理信号机控制命令和进路排列控制命令(多个道岔控制命令和信号机控制命令的组合)执行流程如图4所示。
图4 函数执行流程示意图Fig.4 Execution flow of function
为了保证ATS监控系统对线路上所有设备的正确监控,需要将ATS系统监控界面中的道岔和信号机对象与三维仿真演示系统中对应道岔或信号机对象对应。如图5所示,ATS系统通过监控界面,将P0106号道岔操作到反位。
此时ATS监控系统会将对应的道岔控制命令通过Socket通信网络发送给三维仿真演示系统,发送信息内容为“SWI0331”;相关函数接收到该命令后,按照图4的执行过程最终动作底层模型。效果如图6所示。
通过ATS监控界面不仅可以对三维仿真演示系统中的道岔和信号机设备进行单独控制,还可以通过设置进路的方式,将与该进路相关联的所有信号机和道岔设备进行集中控制如图7所示。
进路排列成功后,该条进路以及相关敌对区段显示为绿色,同时将对应的控制命令以通信协议约定的格式发送至三维仿真演示系统。
图5 单独操作道岔示意图Fig.5 Schematic diagram of Separating switch operation
图6 道岔定/反位状态改变图Fig.6 State transitions of switch
图8中的命令行字符串表示与办理该条进路相关的所有信号机和道岔设备的控制命令,三维仿真演示系统接收到该命令字符串后,按照格式进行拆分,将该命令字符分解为单个控制命令字符串,然后根据命令类型传递给对应的信号机或道岔状态控制函数逐条执行。当在监控界面办理该条进路后,三维仿真演示系统对应信号设备状态和ATS监控界面上进路显示的状态相同;S0108信号机与三维仿真演示系统中ID号为055的信号机对象对应,此时信号机状态为绿色,表示进路开放如图9信号机显示示意图所示。
图7 设置进路示意图Fig.7 Schematic diagram ofset route
同样的,三维仿真演示系统中,ID号为007,008,009,010的道岔对象以及ID号为046的信号机对象分别与ATS监控界面中的P0104,P0101,P0102,P0103号道岔以及S0101信号机匹配。这样就实现了ATS监控系统通过网络对三维仿真演示系统中虚拟线路的信号设备进行间接控制。
图8 ATS监控系统命令发送示意图Fig.8 Schematic diagram of ATS sending commands
图9 信号机显示示意图Fig.9 Schematic diagram of signal display
以MSTS底层环境为基础,以三维仿真演示系统为实现平台,通过创建外部系统可访问的接口与相关功能函数为实现途径,将之前独立的,封闭的轨道交通线路场景仿真环境与其他相关的仿真系统整合起来,形成了一个更大,更具体,功能和展示效果都有更大提升的轨道交通三维仿真体系结构。同时,该接口为以后其他系统如车站连锁仿真等系统的连入提供了实现基础。通过对该接口的继续扩展,还可实现更高级、更具体的仿真功能,如对列车的模拟驾驶控制等。总之,通过该方式,将三维仿真演示系统的精美的展示效果与其他系统较好地结合了起来,丰富了实现平台的功能特性。在针对轨道交通领域的仿真项目中,具较大的应用空间。
[1] 宋晓伟.地铁列车运行控制视景仿真系统中三维建模技术的研究与实现[D].北京:北京交通大学,2007.
SONG Xiaowei.Research and Implement of 3D modeling Technology in Scene Simulation System of Subway Trains Operation[D].Beijing:Beijing Jiaotong University,2007.
[2] 杨城,陈荣武,王怀松.基于MSTS与DEM数据的线路地形仿真与实现[J].系统仿真技术,2015,11(4):323-326,330.
YANG Cheng,CHEN Rongwu,WANG Huaisong.Simulation and Implementation of Route Terrain Based on MSTS and DEM data[J].System Simulation Technology,2015,11(4):323-326,330.
[3] 李柯.高速列车虚拟仿真中三维特效的设计与实现[D].成都:西南交通大学,2013.
LI Ke.The design and implementation of 3D effects in high-speed train virtual simulation[D].Chengdu:Southwest Jiao Tong University,2013.
[4] 杜霄.唐涛.地铁列车运行仿真系统中三维视景建模和简化[J].系统仿真学报,2006,18(6):1724-1728.
DU Xiao.TANG Tao.Analysis and modeling of three-dimension visual of subway trains operation simulation system[J].Journal of System Simulation,2006,18(6):1724-1728.
杨 城 男(1990-),四川达州人,硕士研究生,主要研究方向为交通信息工程及控制。
陈荣武 男(1971-),湖南东安人,高级工程师,主要研究领域为交通信息工程及控制、计算机应用。
Research and Implementation of External Interface of 3D SimulationSystem Based on MSTS
YANGCheng,CHENRongwu,WANGHuaisong
(School of Information Science & Technology,South West Jiaotong University,Chengdu 611756,China)
Based on the underlying engine and model base of MSTS (Microsoft Train Simulation) which developed by Microsoft,combined with XNA Framework for frameworks and tools,relying on OR (Open Rails) open source project,an interface for the virtual 3D simulation line environment is created.The external system can interact with the virtual simulation environment through this interface.Through data processing and execution of related functions,the external system could control the model in the 3D simulation line environment,such as switches,signals,locomotives etc.This interface provides a foundation for interaction and command execution between this 3D simulation envirenment and other simulation systems,like ATS simulation system,station interlocking simulation system etc.Furthemore,this interface enhances the validity and maneuverability of the 3D simulation environment.
MSTS (Microsoft Train Simulation); XNA; 3D Simulation; Interface
TP 391.9
A