楊 城, 陳榮武, 王懷松
(西南交通大學 信息科學與技術學院,成都 611756)
基于MSTS的三維仿真演示系統(tǒng)外部接口的研究與實現(xiàn)
楊 城, 陳榮武, 王懷松
(西南交通大學 信息科學與技術學院,成都 611756)
以微軟開發(fā)的MSTS(Microsoft Train Simulation)為基礎,利用其模型庫以及底層引擎,結合微軟發(fā)布的專業(yè)三維引擎開發(fā)套件XNA Framework 為框架和工具,以OR(Open Rails)開源項目為依托,為已創(chuàng)建好的三維仿真線路環(huán)境創(chuàng)建接口,使得外部系統(tǒng)可通過該接口與三維仿真線路環(huán)境進行數(shù)據(jù)交互。通過對數(shù)據(jù)的處理和相關功能函數(shù)的執(zhí)行,實現(xiàn)外部系統(tǒng)對三維仿真線路環(huán)境中模型的控制,如車輛、道岔、信號機等。該接口為三維仿真線路環(huán)境與其他仿真系統(tǒng),如ATS監(jiān)控系統(tǒng),車站區(qū)間聯(lián)鎖等仿真系統(tǒng)實現(xiàn)信息交互,控制命令執(zhí)行提供了實現(xiàn)基礎,增強了三維仿真線路環(huán)境的可操控性與真實性 。
MSTS; XNA; 三維仿真; 接口
近年來,在軌道交通領域,三維仿真技術在實現(xiàn)線路場景的三維重建,模擬事故場景復原,以及在模擬列車駕駛等諸多方面,已經(jīng)得到了廣泛的應用。針對不同的仿真技術方案,其仿真實現(xiàn)平臺與實現(xiàn)工具也種類繁多,以北京交通大學開發(fā)的基于Vega的北京地鐵一號線三維視景仿真平臺[1]為代表,該仿真方案使用 multigen creator 工具進行建模,C/C++進行控制,基本實現(xiàn)了地鐵線路的部分三維仿真的功能,但是從細節(jié)上看,還有諸多缺陷,比如建模的周期長,難度大,模型精度,美觀性,復用性不高。另一方面,Vega,multigen creator軟件掌握難度較高,且實現(xiàn)的效果一般。因此該技術在軌道交通領域應用的并不廣泛。而微軟開發(fā)的MSTS是一款成熟的軌道交通領域三維仿真產(chǎn)品,其逼真的展示效果,以及強大的可編輯與可擴展性,使其成為一款優(yōu)秀針對軌道交通領域的三維場景創(chuàng)建和編輯的工具,該工具為軌道交通領域的三維仿真線路環(huán)境的搭建[2-3]提供了極大的便利,然而,MSTS所創(chuàng)建的三維仿真線路環(huán)境并沒有提供外部接口,該環(huán)境是封閉的。仿真線路中的模型,如道岔,信號機,車輛等不能通過外部系統(tǒng)控制,限制了仿真模型的可操作性與仿真效果的真實性,而且也和現(xiàn)實的業(yè)務邏輯不相符。為了使MSTS創(chuàng)建的仿真線路環(huán)境中的車輛、道岔、信號機等模型能夠根據(jù)需要被外部仿真系統(tǒng)如站場聯(lián)鎖仿真系統(tǒng)等控制,以實現(xiàn)更高級別的視景與業(yè)務邏輯層級的仿真效果??梢詣?chuàng)建相關的接口,通過系統(tǒng)間的通信,調用相關功能函數(shù)實現(xiàn)這些接口,最終實現(xiàn)了預期的仿真效果。
MSTS創(chuàng)建的三維仿真線路環(huán)境只是一個底層的模型環(huán)境,除了模型實體外,還包括一系列記錄各類參數(shù)信息的配置文件,想要實現(xiàn)基本的仿真效果,需要將模型與文件載入到對應的運行環(huán)境中。這里以基于微軟XNA Framework技術框架[4],C#為編程語言開發(fā)的三維仿真演示系統(tǒng)OR(Open Rails)為仿真實現(xiàn)平臺,在安裝有.net Framework 3.5及其以上版本運行庫的Windows操作系統(tǒng)下,能夠正常運行該三維仿真演示系統(tǒng)。
三維仿真演示系統(tǒng)通過調用MSTS底層的模型文件與對應的配置文件實現(xiàn)對車輛,以及線路上相關聯(lián)鎖設備的控制,如信號機,道岔等。因為外部系統(tǒng)是無法直接控制三維仿真線路中MSTS底層模型的。所以,外部系統(tǒng)只能通過三維仿真演示系統(tǒng)來間接對MSTS底層模型進行控制。因此,兩個系統(tǒng)間需要建立起通信,實現(xiàn)數(shù)據(jù)的互聯(lián)互通。三維仿真演示系統(tǒng)在接受到來外部系統(tǒng)的數(shù)據(jù)后,需要對數(shù)據(jù)進行分析,判定該數(shù)據(jù)是否滿足根據(jù)兩個系統(tǒng)制定的通信協(xié)議。判定無誤后,將數(shù)據(jù)進行處理,再將處理后得到的運算值作為參數(shù)傳遞給已經(jīng)寫好外部接口實現(xiàn)函數(shù)。該函數(shù)在運行時,再執(zhí)行相關的功能函數(shù),最后完成對MSTS底層模型的驅動。從而完成了外部系統(tǒng)通過三維仿真演示系統(tǒng)控制MSTS底層模型[4],實現(xiàn)預期的仿真效果與目的。通過對數(shù)據(jù)流向與業(yè)務邏輯的分析,三維仿真演示系統(tǒng)與外部系統(tǒng)建立通信后,作為三維仿真功能的具體實現(xiàn)系統(tǒng),三維仿真演示系統(tǒng)應當作為Socket通信的客戶端,外部仿真系統(tǒng)應作為Socket通信的服務器端,控制指令由服務器端下發(fā)至客戶端。仿真系統(tǒng)層級結構如圖1所示。

圖1 仿真系統(tǒng)層級結構示意圖Fig.1 Hierarchical structure diagram of the simulation system
4.1 對模型進行更進一步的抽象
以微軟XNA Framework為技術框架,以C#作為編程語言,將MSTS底層模型進行進一步的抽象,增加相關模型的屬性。在三維仿真演示系統(tǒng)中,對應模型被抽象為一個具體的模型類的對象,模型的特征通過該對象的屬性體現(xiàn)。結合相關配置文檔,在MSTS以及三維演示系統(tǒng)環(huán)境中才能被加載并使用,這里以道岔對象為例,在MSTS底層文件中,有對道岔模型的基本描述,如狀態(tài),類型,標識(Uid號),因此在對道岔模型這個類進行抽象時,應當保留以上全部屬性,而且應當根據(jù)需求適當增加屬性,在模型庫中,道岔的種類繁多,如圖2所示。
4.2 道岔模型抽象過程
圖2展示了三維演示系統(tǒng)中城市軌道交通線路里常見的道岔對象,分別是右開道岔(圖2左)、左開道岔(圖2中)、交渡道岔(圖2右),在對這些種類繁多的道岔模型進行抽象時,實際上只要對最簡單的道岔種類進行抽象,而復雜的道岔對象可以看作是多個簡單道岔對象的組合。如果將道岔看作線路的節(jié)點,那么這個虛擬線路就是通過節(jié)點的有向連接形成的網(wǎng)絡拓撲結構,而節(jié)點的連接方向即是道岔當前的定/反位狀態(tài)(復雜道岔如三開、交渡道岔等分解為單個的左開或者右開道岔處理)。整個線路的拓撲結構信息被保存在MSTS底層的軌道數(shù)據(jù)庫*.tdb文件中,通過逐行讀取該文件,當發(fā)現(xiàn)有節(jié)點對象時,對應生成一個道岔類的對象,對象的屬性,如決定道岔定/反位狀態(tài)的初始值也通過讀取該文件獲取,本文提出的接口正是間接通過自定義相關功能函數(shù)改變對應道岔或信號機對象的狀態(tài)值來實現(xiàn)外部系統(tǒng)對三維仿真演示系統(tǒng)中對應的道岔和信號進行控制,從而達到仿真目的。
4.3 為道岔模型增加屬性
在前文中提到,MSTS為了區(qū)分線路中的道岔對象,在生成的線路數(shù)據(jù)庫文件中為每一個道岔對象分配了一個Uid(unique identifier)號,理論上,通過搜索這個Uid號就可以找到唯一與這個Uid號關聯(lián)的道岔對象,但是這個默認生成的Uid號過長,并且不同對象的Uid號沒有聯(lián)系,不方便后期接口功能的具體的實現(xiàn),因此,在不改變對應道岔模型類結構的前提下,為該類新添加一個SwitchID屬性,當系統(tǒng)載入軌道數(shù)據(jù)庫文件*.tdb時,每讀取到一個節(jié)點,新添加屬性的道岔模型類就創(chuàng)建一個對象,并且為該對象的SwitchID屬性賦上一個int類型的值,該值用于唯一標識線路中的所有道岔對象并且依次遞增,同樣的,也可對信號機模型做同樣的處理。最終當系統(tǒng)載入完整個*.tdb文件時,所有的道岔對象都被添加了唯一的一個表示屬性SwitchID,且SwitchID屬性的值在同一條線路里唯一。滿足了我們的具體使用需求。

圖2 常見道岔種類示意圖Fig.2 Sketch Map of common type of switches
4.4 通過Socket與其他仿真系統(tǒng)建立通信
三維仿真演示系統(tǒng)的道岔、信號機、車輛等模型要實現(xiàn)被外部系統(tǒng)的訪問和控制,必然要通過通信來實現(xiàn),這里基于TCP/IP協(xié)議,采用Socket技術進行通信。由于三維演示仿真系統(tǒng)中道岔、信號機等模型作為被控對象,因此在進行通信的兩個系統(tǒng)中,這里以三維仿真演示系統(tǒng)與ATS監(jiān)控仿真系統(tǒng)為例,三維仿真系統(tǒng)應作為客戶端。ATS監(jiān)控仿真系統(tǒng)應作為服務器端。由服務器端下發(fā)調度指令,如進路排列命令,或者道岔單獨控制命令等。
三維仿真演示系統(tǒng)要實現(xiàn)對指定對象如道岔、信號機或其它模型的控制應當接收到由服務器端發(fā)送的對應控制命令。因此需要統(tǒng)一通信的幀格式,如圖3所示。

圖3 幀結構示意圖Fig.3 Schematic diagram of frame structure
其中,幀頭用于區(qū)分控制命令的種類,如道岔控制命令和信號機控制命令以‘S’作為幀頭,代表SWI(switch道岔簡寫)、SIG(signal信號機簡寫);幀內容是具體的控制命令,包含了要操控的對象編號,要求控制對象的當前狀態(tài),幀尾為命令結束標志,用于間隔其他幀信息。如幀信息“SWI0031/”,代表該命令為道岔操作命令;動作對象SwitchID號為003的道岔,道岔要實現(xiàn)的狀態(tài)為反位(道岔狀態(tài)中,0代表定位,1代表反位)。
4.5 相關功能函數(shù)執(zhí)行過程
以站場控制類函數(shù)為例,當三維仿真演示系統(tǒng)接收到ATS監(jiān)控仿真系統(tǒng)發(fā)送的命令后,首先檢查幀頭,如果滿足站場控制命令(控制道岔或信號機的命令)的格式,則將該命令字符串作為參數(shù)交給站場控制函數(shù)處理,而站場控制函數(shù)將該字符串進行拆分,以“SWI0031/”為例,將該字符串拆分為“SWI”,“003”,“1”三個字符串;“SWI”表示將后面的兩個字符串交由道岔命令處理函數(shù)執(zhí)行,道岔命令處理函數(shù)接收到“003”,“1”后,驅動底層模型,將003號道岔的狀態(tài)改變?yōu)榉次?。同?處理信號機控制命令和進路排列控制命令(多個道岔控制命令和信號機控制命令的組合)執(zhí)行流程如圖4所示。

圖4 函數(shù)執(zhí)行流程示意圖Fig.4 Execution flow of function
為了保證ATS監(jiān)控系統(tǒng)對線路上所有設備的正確監(jiān)控,需要將ATS系統(tǒng)監(jiān)控界面中的道岔和信號機對象與三維仿真演示系統(tǒng)中對應道岔或信號機對象對應。如圖5所示,ATS系統(tǒng)通過監(jiān)控界面,將P0106號道岔操作到反位。
此時ATS監(jiān)控系統(tǒng)會將對應的道岔控制命令通過Socket通信網(wǎng)絡發(fā)送給三維仿真演示系統(tǒng),發(fā)送信息內容為“SWI0331”;相關函數(shù)接收到該命令后,按照圖4的執(zhí)行過程最終動作底層模型。效果如圖6所示。
通過ATS監(jiān)控界面不僅可以對三維仿真演示系統(tǒng)中的道岔和信號機設備進行單獨控制,還可以通過設置進路的方式,將與該進路相關聯(lián)的所有信號機和道岔設備進行集中控制如圖7所示。
進路排列成功后,該條進路以及相關敵對區(qū)段顯示為綠色,同時將對應的控制命令以通信協(xié)議約定的格式發(fā)送至三維仿真演示系統(tǒng)。

圖5 單獨操作道岔示意圖Fig.5 Schematic diagram of Separating switch operation

圖6 道岔定/反位狀態(tài)改變圖Fig.6 State transitions of switch
圖8中的命令行字符串表示與辦理該條進路相關的所有信號機和道岔設備的控制命令,三維仿真演示系統(tǒng)接收到該命令字符串后,按照格式進行拆分,將該命令字符分解為單個控制命令字符串,然后根據(jù)命令類型傳遞給對應的信號機或道岔狀態(tài)控制函數(shù)逐條執(zhí)行。當在監(jiān)控界面辦理該條進路后,三維仿真演示系統(tǒng)對應信號設備狀態(tài)和ATS監(jiān)控界面上進路顯示的狀態(tài)相同;S0108信號機與三維仿真演示系統(tǒng)中ID號為055的信號機對象對應,此時信號機狀態(tài)為綠色,表示進路開放如圖9信號機顯示示意圖所示。

圖7 設置進路示意圖Fig.7 Schematic diagram ofset route
同樣的,三維仿真演示系統(tǒng)中,ID號為007,008,009,010的道岔對象以及ID號為046的信號機對象分別與ATS監(jiān)控界面中的P0104,P0101,P0102,P0103號道岔以及S0101信號機匹配。這樣就實現(xiàn)了ATS監(jiān)控系統(tǒng)通過網(wǎng)絡對三維仿真演示系統(tǒng)中虛擬線路的信號設備進行間接控制。

圖8 ATS監(jiān)控系統(tǒng)命令發(fā)送示意圖Fig.8 Schematic diagram of ATS sending commands

圖9 信號機顯示示意圖Fig.9 Schematic diagram of signal display
以MSTS底層環(huán)境為基礎,以三維仿真演示系統(tǒng)為實現(xiàn)平臺,通過創(chuàng)建外部系統(tǒng)可訪問的接口與相關功能函數(shù)為實現(xiàn)途徑,將之前獨立的,封閉的軌道交通線路場景仿真環(huán)境與其他相關的仿真系統(tǒng)整合起來,形成了一個更大,更具體,功能和展示效果都有更大提升的軌道交通三維仿真體系結構。同時,該接口為以后其他系統(tǒng)如車站連鎖仿真等系統(tǒng)的連入提供了實現(xiàn)基礎。通過對該接口的繼續(xù)擴展,還可實現(xiàn)更高級、更具體的仿真功能,如對列車的模擬駕駛控制等??傊?通過該方式,將三維仿真演示系統(tǒng)的精美的展示效果與其他系統(tǒng)較好地結合了起來,豐富了實現(xiàn)平臺的功能特性。在針對軌道交通領域的仿真項目中,具較大的應用空間。
[1] 宋曉偉.地鐵列車運行控制視景仿真系統(tǒng)中三維建模技術的研究與實現(xiàn)[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數(shù)據(jù)的線路地形仿真與實現(xiàn)[J].系統(tǒng)仿真技術,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] 李柯.高速列車虛擬仿真中三維特效的設計與實現(xiàn)[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] 杜霄.唐濤.地鐵列車運行仿真系統(tǒng)中三維視景建模和簡化[J].系統(tǒng)仿真學報,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