《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > ATS仿真培訓(xùn)系統(tǒng)列車(chē)模擬運(yùn)行的設(shè)計(jì)與實(shí)現(xiàn)
ATS仿真培訓(xùn)系統(tǒng)列車(chē)模擬運(yùn)行的設(shè)計(jì)與實(shí)現(xiàn)
來(lái)源:微型機(jī)與應(yīng)用2012年第14期
孫志勇, 陳永生
(同濟(jì)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)系, 上海200331)
摘要: 通過(guò)VC++中ActiveX控件制作方法設(shè)計(jì)出上海地鐵8號(hào)線ATS仿真培訓(xùn)系統(tǒng)中列車(chē)模型,并通過(guò)列車(chē)時(shí)刻表數(shù)據(jù)存放列車(chē)運(yùn)行時(shí)所需的一些數(shù)據(jù)信息,此時(shí)刻表數(shù)據(jù)以XML格式存儲(chǔ),在對(duì)時(shí)刻表數(shù)據(jù)進(jìn)行解析時(shí)采用目前比較流行的TinyXml。最后還給出此仿真培訓(xùn)系統(tǒng)的列車(chē)正常模擬運(yùn)行的結(jié)果。
Abstract:
Key words :

摘  要: 通過(guò)VC++中ActiveX控件制作方法設(shè)計(jì)出上海地鐵8號(hào)線ATS仿真培訓(xùn)系統(tǒng)中列車(chē)模型,并通過(guò)列車(chē)時(shí)刻表數(shù)據(jù)存放列車(chē)運(yùn)行時(shí)所需的一些數(shù)據(jù)信息,此時(shí)刻表數(shù)據(jù)以XML格式存儲(chǔ),在對(duì)時(shí)刻表數(shù)據(jù)進(jìn)行解析時(shí)采用目前比較流行的TinyXml。最后還給出此仿真培訓(xùn)系統(tǒng)的列車(chē)正常模擬運(yùn)行的結(jié)果。
關(guān)鍵詞: 列車(chē)運(yùn)行仿真; XML; VC++

    中國(guó)近年來(lái),基于通信的列車(chē)控制系統(tǒng)CBTC(Communication Based Train Control)已逐漸被信號(hào)界所認(rèn)可,成為當(dāng)今世界范圍內(nèi)鐵路信號(hào)技術(shù)的發(fā)展趨勢(shì),隨著CBTC系統(tǒng)在國(guó)內(nèi)城市軌道交通工程中的廣泛應(yīng)用,使得城市軌道交通運(yùn)營(yíng)企業(yè)急需大量具備CBTC系統(tǒng)背景的運(yùn)營(yíng)管理、通信信號(hào)等專業(yè)知識(shí)和操作技能的綜合性運(yùn)營(yíng)人才。這些綜合性運(yùn)營(yíng)專業(yè)人員不僅需要熟悉CBTC系統(tǒng)的工作原理,同時(shí)還需要具備實(shí)際操作能力。考慮到現(xiàn)場(chǎng)行車(chē)安全,無(wú)法在目前已經(jīng)投入運(yùn)營(yíng)的系統(tǒng)上進(jìn)行教學(xué)培訓(xùn)。所以開(kāi)發(fā)仿真培訓(xùn)系統(tǒng)就成為解決這一問(wèn)題的途徑。
    列車(chē)自動(dòng)運(yùn)行ATS(Automatic Train Supervision)是CBTC系統(tǒng)中負(fù)責(zé)監(jiān)視和控制整個(gè)地鐵線路中列車(chē)的運(yùn)行狀態(tài)的一個(gè)組成部分[1]。本文中的列車(chē)模擬運(yùn)行就是此ATS仿真培訓(xùn)系統(tǒng)中的一子模塊。
1 列車(chē)模型
1.1 列車(chē)模型的設(shè)計(jì)

    對(duì)于8號(hào)線列車(chē)控件,它的屬性分為:靜態(tài)屬性和動(dòng)態(tài)屬性。靜態(tài)屬性是指設(shè)計(jì)控件時(shí)可修改,但當(dāng)列車(chē)控件繪制完成時(shí)就不可修改的一類(lèi)屬性;動(dòng)態(tài)屬性主要指設(shè)計(jì)控件時(shí)無(wú)需設(shè)置,在站場(chǎng)圖的仿真運(yùn)行過(guò)程中可不斷改變的屬性[2]。其屬性可按如下設(shè)置:
    (1) 靜態(tài)屬性:列車(chē)長(zhǎng)度,列車(chē)車(chē)廂數(shù),列車(chē)重量。
    (2) 動(dòng)態(tài)屬性:列車(chē)標(biāo)簽,列車(chē)行車(chē)方向,列車(chē)標(biāo)簽的方向,列車(chē)車(chē)門(mén)狀態(tài)等。
1.2 列車(chē)模型的實(shí)現(xiàn)
     開(kāi)發(fā)列車(chē)控件使用的是VC++,它是開(kāi)發(fā)ActiveX控件的常用工具之一。VC++集成開(kāi)發(fā)環(huán)境,使用了微軟自己的類(lèi)庫(kù)MFC,MFC對(duì)開(kāi)發(fā)ActiveX控件提供了全面的支持[3-4]。
    其主要定義代碼如下:
    Class Train:public COleControl{…}        //列車(chē)控件定義
    其主要屬性定義如下:
    //靜態(tài)屬性
    Short TrainDetails;        //列車(chē)長(zhǎng)度
    Short TrainMass; //列車(chē)重量
    Short TrainCarriages;    //列車(chē)車(chē)廂
    //動(dòng)態(tài)屬性
    BSTR TrainLabel;  //列車(chē)標(biāo)簽
    Short LabelPosition;  //標(biāo)簽位置
    Short Direction;  //列車(chē)行車(chē)方向
    Short DoorState;  //車(chē)門(mén)狀態(tài)
    …
    在VS2005編譯環(huán)境中,列車(chē)控件顯示如圖1所示。

2 列車(chē)時(shí)刻表
2.1 時(shí)刻表數(shù)據(jù)存儲(chǔ)

    可擴(kuò)展標(biāo)記語(yǔ)言(XML)是用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語(yǔ)言,可以用來(lái)標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類(lèi)型,是一種允許用戶對(duì)自己的標(biāo)記語(yǔ)言進(jìn)行定義的源語(yǔ)言。作為一種數(shù)據(jù)格式,它具有以下特點(diǎn):
    (1) 規(guī)范性:XML是W3C制定的,XML的標(biāo)準(zhǔn)化工作由W3C的XML工作組負(fù)責(zé),它遵循嚴(yán)格的語(yǔ)法要求,便于不同開(kāi)發(fā)人員的理解。
    (2) 簡(jiǎn)單性:XML文檔只是純文本,這樣X(jué)ML文檔就可以自由地在兩個(gè)不同的系統(tǒng)之間交換數(shù)據(jù),因?yàn)榛旧先魏蜗到y(tǒng)都提供了對(duì)文本格式的支持。
    (3) 自我描述:XML可以明確地表示數(shù)據(jù)模型中各個(gè)部分的意義,只要查看XML文檔就能確定該數(shù)據(jù)的意義。每個(gè)數(shù)字的意義是清楚的,且不會(huì)錯(cuò)誤地與數(shù)字本身相聯(lián)系。當(dāng)讀取文檔時(shí),開(kāi)發(fā)人員了解<Arrival>05:00:00</Arrival>中的05:00:00指的是列車(chē)到站時(shí)間而不是列車(chē)離站的時(shí)間。
    (4) 結(jié)構(gòu)和內(nèi)容分離:在XML中數(shù)據(jù)和顯示格式是分離的,XML元數(shù)據(jù)文件就是純數(shù)據(jù)文件,可以作為數(shù)據(jù)源提供數(shù)據(jù)。
    (5) 可擴(kuò)展性:XML允許使用者創(chuàng)建和使用他們自己的標(biāo)記,而不像HTML那樣使用有限的詞匯。
    基于以上XML語(yǔ)言的特點(diǎn),再加上列車(chē)時(shí)刻表數(shù)據(jù)比較簡(jiǎn)單,它包括列車(chē)發(fā)車(chē)站點(diǎn),列車(chē)到達(dá)站點(diǎn)時(shí)間以及列車(chē)離開(kāi)站點(diǎn)時(shí)間。為了使數(shù)據(jù)結(jié)構(gòu)清晰,便于不同開(kāi)發(fā)人員的理解,所以列車(chē)時(shí)刻表數(shù)據(jù)的存儲(chǔ)方式則采用XML。
    列車(chē)時(shí)刻表XML數(shù)據(jù)主要由4個(gè)標(biāo)簽組成:列車(chē)運(yùn)行的線路、列車(chē)停靠的站臺(tái)、列車(chē)到達(dá)站臺(tái)的時(shí)間和列車(chē)離開(kāi)站臺(tái)的時(shí)間。
    (1) 列車(chē)運(yùn)行線路:規(guī)定列車(chē)運(yùn)行的線路。
    (2) 列車(chē)停靠站點(diǎn):站點(diǎn)以名字首字母命名,如SGR1為勝光路,其后1表示停在站點(diǎn)的哪一站臺(tái),而每個(gè)站點(diǎn)都有兩個(gè)站臺(tái)。
    (3) 列車(chē)到達(dá)/離開(kāi)站臺(tái)時(shí)間: 此兩時(shí)間為列車(chē)控件出現(xiàn)或離開(kāi)站臺(tái)的時(shí)間,它們的差為列車(chē)停站時(shí)間。
    以下就是采用XML方式存儲(chǔ)的列車(chē)時(shí)刻表的一小部分:
    <?xml version="1.0" encoding="UTF-8"?>
    <TimeTableLists>
         <Name>時(shí)刻表1</Name>
             <TimeTable>
                   <ID>801</ID>
                   <Record>
                        <Line>1</Line>
                             <Platform>SGR1</Platform>
                             <Arrival>05:02:00</Arrival>
                             <Departure>05:03:00</Departure>
                        </Record>
                         ……
               </TimeTable>
    </TimeTableLists>
    <TimeTableLists>
        <Name>時(shí)刻表2</Name>
             <TimeTable>
                   <ID>801</ID>
                   <Record>
                                <Line>1</Line>
                    <Platform>SGR1</Platform>
                <Arrival>05:02:00</Arrival>
                <Departure>05:03:00</Departure>
             </Record>
              ……
       </TimeTable>
    </TimeTableLists>
    XML文件除了可以用記事本編寫(xiě)外,還可以使用多種可視化XML開(kāi)發(fā)工具完成,本文采用XmlSpy2005進(jìn)行數(shù)據(jù)編寫(xiě)。
2.2 時(shí)刻表數(shù)據(jù)解析

 


    XML文檔的解析方法有很多種,如Libxml++、微軟的MSXML等。本文所采用的是TinyXml,它是目前非常流行的一款基于DOM模型的開(kāi)源XML解析器,使用起來(lái)很方便且容易上手,能夠用于C++,并能在Windows或Linux中編譯。這個(gè)解析庫(kù)的模型通過(guò)解析XML文件,在內(nèi)存中生成DOM模型,從而很方便地遍歷整棵XML樹(shù)。
    TinyXml中的類(lèi)與XML文件的對(duì)應(yīng)關(guān)系如圖2所示。TiXmlBase是所有類(lèi)的基類(lèi),TiXmlAttribute為XML中元素的屬性TiXmlNode為DOM結(jié)構(gòu)中的節(jié)點(diǎn),如<Record>;TiXmlComment為XML文件中的注釋;TiXmlDeclaration 為XML文件中的聲明,如<?xml version="1.0" encoding="UTF-8"?>;TiXmlDocument為XML文件的整個(gè)文檔;TiXmlElement為XML文件中的元素,如<Line>、<Platform>;TiXmlText為XML文件中的元素的文本,如<Line></Line>之間的值1;TiXmlUnknown為XML中的未知部分。

    如果XML文檔元素屬性值是中文,用TinyXml解析出來(lái)的值會(huì)出現(xiàn)亂碼。亂碼是由于GB2312與UTF8之間轉(zhuǎn)換不當(dāng)造成的,通過(guò)MultiByteToWideChar函數(shù)可以進(jìn)行轉(zhuǎn)換,解決亂碼問(wèn)題。
    解析的主要代碼如下:
       TiXmlDocument* myDocument=new TiXmlDocument();
       const TiXmlElement* rootElement=myDocument->RootEle-
        ment();
       for(const TiXmlElement* timelablelist=rootElement->
        FirstChildElement();timelablelist;
           timelablelist=timelablelist->NextSiblingElement())
                                 //循環(huán)遍歷兩套時(shí)刻表
     {   
             const TiXmlElement* name=timelabellist->FirstChild
            Element();
             ……
            for(const TiXmlElement*Timetable=name->NextSibling
            Element();Timetable;
             Timetable=Timetable-> NextSiblingElement())
                             //循環(huán)遍歷TimeTable節(jié)點(diǎn)
              {  
                  const TiXmlElement* Id=Timetable->First Child
                Element();
               
                   ……
                    for(const TiXmlElement* Record=Id->NextSibling
                Element();Record;
          Record=Record->NextSiblingElement())
                                 //循環(huán)遍歷Record節(jié)點(diǎn)
            {
                ……
            }
          }
     }
3 列車(chē)模擬運(yùn)行
    列車(chē)的模擬運(yùn)行主要是根據(jù)時(shí)刻表發(fā)車(chē),選擇運(yùn)行的線路,根據(jù)移動(dòng)閉塞原理計(jì)算列車(chē)的行駛速度,按照一定的信號(hào)邏輯動(dòng)態(tài)地改變線路上的控件狀態(tài)。
    時(shí)刻表中存有列車(chē)的線路信息,線路信息表中則有列車(chē)的運(yùn)行方向以及軌道數(shù)據(jù),通過(guò)軌道數(shù)據(jù)可以查詢所需的站場(chǎng)數(shù)據(jù),包括:信號(hào)機(jī)、區(qū)段、道岔以及站臺(tái),它們按照一定關(guān)系連接形成站場(chǎng)圖,列車(chē)在當(dāng)前的區(qū)段或者通過(guò)某個(gè)信號(hào)機(jī)時(shí)可以推算出下次要經(jīng)過(guò)的區(qū)段或信號(hào)機(jī)。
    列車(chē)模擬運(yùn)行在8號(hào)線ATS仿真系統(tǒng)上,此系統(tǒng)采用VC2005開(kāi)發(fā),在Win7系統(tǒng)上列車(chē)運(yùn)行的結(jié)果如圖3所示。

    本文針對(duì)上海地鐵8號(hào)線ATS培訓(xùn)系統(tǒng)中的列車(chē)模擬運(yùn)行進(jìn)行設(shè)計(jì),構(gòu)建了列車(chē)模型控件,并使用XML格式對(duì)列車(chē)時(shí)刻表數(shù)據(jù)進(jìn)行存儲(chǔ)并通過(guò)TinyXml對(duì)其解析,達(dá)到以列車(chē)正常運(yùn)行的目的。隨著國(guó)內(nèi)城市軌道交通的迅猛發(fā)展,人才培訓(xùn)的需求也勢(shì)必增加,同時(shí)本文對(duì)于以后設(shè)計(jì)其他線路仿真系統(tǒng)有鋪墊的作用。
參考文獻(xiàn)
[1] 曾小清, 王長(zhǎng)林, 張樹(shù)京. 基于通信的軌道交通運(yùn)行控制[M]. 上海:同濟(jì)大學(xué)出版社,2007.
[2] 王野,郭秀清.基于組件技術(shù)的列車(chē)自動(dòng)監(jiān)控仿真系統(tǒng)開(kāi)發(fā)平臺(tái)[J]. 計(jì)算機(jī)應(yīng)用, 2007,27(z2):285-288.
[3] 魯也傳,陳永生,郭玉臣. 基于通信的列車(chē)自動(dòng)監(jiān)控系統(tǒng)平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用, 2009,29(S2):152-154.
[4] 宇鵬,王曉峰,李云飛.Visual C++實(shí)踐與提高——ActiveX 篇[M]. 北京:中國(guó)鐵道出版社,2001:161-211.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
主站蜘蛛池模板: 亚洲午夜精品久久久久久浪潮 | 国产成人精品一区二区三区无码 | 日产国产欧美韩国在线| 在体育课被老师做了一节课视频| 久久国产亚洲观看| 欧美综合区自拍亚洲综合天堂| 国产l精品国产亚洲区在线观看| 在线视频网址免费播放| 好紧好爽欲yy18p| 久久婷五月综合| 欧美日韩一区二区三区自拍| 国产成人午夜片在线观看| 99久久超碰中文字幕伊人| 我的3个美艳馊子白莹小说| 亚洲av无码成人精品国产| 爱情岛论坛网亚洲品质自拍| 国产一区二区三区手机在线观看| 你懂的视频在线播放| 女bbbbxxxx另类亚洲| 久久91精品国产99久久yfo| 桃子视频在线观看高清免费视频| 亚洲综合视频在线| 精品国产一区二区三区免费看 | 中文字幕伊人久久网| 曰批免费视频试看天天视频下 | 翁熄系列回乡下| 国产在线观看无码免费视频| 2020国产精品自拍| 大学生秘书胯下吞吐| 一级成人a毛片免费播放| 日本一卡2卡3卡四卡精品网站| 亚洲AV色香蕉一区二区三区蜜桃| 沦为色老头狂欲的雅婷| 免费黄色欧美视频| 色一情一区二区三区四区| 国产大片b站免费观看推荐| 2023悦平台今天最近新闻| 天天插在线视频| 一本大道无码人妻精品专区 | 亚洲人成网站看在线播放| 国内精品伊人久久久久妇|