《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > EDA與制造 > 設(shè)計應(yīng)用 > ATS仿真系統(tǒng)網(wǎng)絡(luò)化的設(shè)計與實現(xiàn)
ATS仿真系統(tǒng)網(wǎng)絡(luò)化的設(shè)計與實現(xiàn)
來源:微型機(jī)與應(yīng)用2013年第20期
徐 越, 郭秀清
(同濟(jì)大學(xué) 控制科學(xué)與工程系, 上海201804)
摘要: 網(wǎng)絡(luò)化的ATS仿真系統(tǒng)能夠更好地滿足在實際應(yīng)用中的培訓(xùn)和教學(xué)需求。以上海地鐵2號線ATS(Automatic Train Supervision)仿真系統(tǒng)為例,在系統(tǒng)功能模塊化的基礎(chǔ)之上,結(jié)合TCP/IP、UDP協(xié)議和WSAAsyncSelect I/O模型,在現(xiàn)有單機(jī)版ATS仿真系統(tǒng)的基礎(chǔ)上設(shè)計并開發(fā)了網(wǎng)絡(luò)版,使之可以更好地滿足系統(tǒng)的實際應(yīng)用需求。
Abstract:
Key words :

摘   要: 網(wǎng)絡(luò)化的ATS仿真系統(tǒng)能夠更好地滿足在實際應(yīng)用中的培訓(xùn)和教學(xué)需求。以上海地鐵2號線ATS(Automatic Train Supervision)仿真系統(tǒng)為例,在系統(tǒng)功能模塊化的基礎(chǔ)之上,結(jié)合TCP/IP、UDP協(xié)議和WSAAsyncSelect I/O模型,在現(xiàn)有單機(jī)版ATS仿真系統(tǒng)的基礎(chǔ)上設(shè)計并開發(fā)了網(wǎng)絡(luò)版,使之可以更好地滿足系統(tǒng)的實際應(yīng)用需求。
關(guān)鍵詞: ATS; 仿真; 網(wǎng)絡(luò)通信; WSAAsyncSelect

    近年來,軌道交通快速進(jìn)入高速期,成為帶動經(jīng)濟(jì)增長的重要因素。列車自動監(jiān)控系統(tǒng)(ATS)是一種智能化自動監(jiān)控系統(tǒng),是否對ATS系統(tǒng)正確操作,影響著列車能否安全運(yùn)行,這對軌道交通運(yùn)營管理人員的后勤培訓(xùn)提出了很高要求。這些綜合性運(yùn)營專業(yè)人員不僅需要熟悉ATS系統(tǒng)的工作原理,同時還需要具備實際操作能力。考慮到現(xiàn)場行車安全無法在目前已經(jīng)投入運(yùn)營的系統(tǒng)上進(jìn)行教學(xué)培訓(xùn),開發(fā)仿真培訓(xùn)系統(tǒng)就成為解決這一問題的有效途徑,因此ATS仿真系統(tǒng)應(yīng)運(yùn)而生[1]。
    單機(jī)版ATS仿真系統(tǒng)是運(yùn)行于單獨(dú)一臺主機(jī)上并且不與其他主機(jī)進(jìn)行通信的ATS仿真系統(tǒng),它可以提供模擬演示和故障模擬等基本功能。但是在實際的培訓(xùn)和教學(xué)中,單機(jī)版ATS仿真系統(tǒng)仍然存在很多局限性,例如教師無法同時對較多的學(xué)員進(jìn)行示范性操作、無法模擬中央ATS和集中站ATS的拓?fù)洵h(huán)境等。這就提出了將現(xiàn)有單機(jī)版ATS仿真系統(tǒng)網(wǎng)絡(luò)化的需求。網(wǎng)絡(luò)版ATS仿真系統(tǒng)是在單機(jī)版ATS仿真系統(tǒng)的基礎(chǔ)上,進(jìn)一步構(gòu)建基于客戶端/服務(wù)器C/S(Client/Server)模型的網(wǎng)絡(luò)化通信平臺,著重研究基于TCP/IP協(xié)議下運(yùn)行在多臺主機(jī)上的ATS仿真系統(tǒng)之間的網(wǎng)絡(luò)通信。
1 ATS仿真系統(tǒng)網(wǎng)絡(luò)版通信模塊的總體設(shè)計
    網(wǎng)絡(luò)版ATS仿真系統(tǒng)間的通信不同于單機(jī)版ATS仿真系統(tǒng)模塊之間的通信,它是基于現(xiàn)有的網(wǎng)絡(luò)通信協(xié)議,采用成熟的網(wǎng)絡(luò)編程接口實現(xiàn)不同主機(jī)、不同進(jìn)程間的數(shù)據(jù)傳輸和交互。通過對ATS仿真系統(tǒng)的需求分析,將通信模塊的設(shè)計分為組件狀態(tài)同步、客戶端的操作命令傳輸和權(quán)限管理三部分進(jìn)行討論。
1.1 組件狀態(tài)同步的分析與設(shè)計
    站場圖上的組件狀態(tài)同步,即將局域網(wǎng)內(nèi)服務(wù)器上組件狀態(tài)的實時數(shù)據(jù)發(fā)送到客戶端,客戶端根據(jù)接收到的實時數(shù)據(jù)更新組件的狀態(tài)。由于可能同時會有多個客戶端需要接收實時數(shù)據(jù),如果采用TCP(Transmission Control Protocol)連接的方式,將消耗很多服務(wù)器的資源,導(dǎo)致服務(wù)器處理速度變慢,同時也會加重網(wǎng)絡(luò)的負(fù)擔(dān)。并且客戶端并不需要發(fā)送數(shù)據(jù)給服務(wù)器,只要保證接收到的數(shù)據(jù)的完整性即可,不需要為每一個客戶端建立一個與服務(wù)器的TCP連接。所以,綜合考慮上述因素,本文采用UDP(User Datagram Protocol)廣播的方案。UDP廣播具有資源消耗少、傳輸效率高等優(yōu)點(diǎn),能夠滿足這里的實時通信要求。
1.2 客戶端操作命令的傳輸?shù)姆治雠c設(shè)計
       中央ATS起著全局監(jiān)管的作用,一般會把集中站的具體操作控制權(quán)交至區(qū)域控制中心。由于區(qū)域控制中心的操作需要被全局看到,包括中央ATS和其他區(qū)域控制中心/集中站,并能夠在中央ATS留下操作記錄。所以客戶端對系統(tǒng)的操作并不是直接作用于本機(jī)的系統(tǒng),而是將操作命令傳給中央ATS,由中央ATS執(zhí)行命令,并將執(zhí)行的結(jié)果(如組件狀態(tài)的改變)廣播給所有的客戶端。這樣便可保證區(qū)域控制中心不會越權(quán)操作,也可使各個系統(tǒng)之間保持一致。由于客戶端與中央ATS之間的通信屬于端到端的通信,并且需要嚴(yán)格保證傳輸數(shù)據(jù)的完整性,這就需要選擇一個面向連接的、可靠的通信協(xié)議。TCP協(xié)議是一個面向連接、可靠的通信協(xié)議,它通過自身實現(xiàn)的數(shù)據(jù)確認(rèn)和超時重傳等機(jī)制,保證了數(shù)據(jù)傳輸?shù)母呖煽啃?,并且客戶端發(fā)送的操作命令的數(shù)據(jù)較小、在同一時刻也不會有很多客戶端需要與中央ATS進(jìn)行通信,并不會耗費(fèi)太多系統(tǒng)資源,所以這里采用面向連接的TCP協(xié)議實現(xiàn)。
1.3 權(quán)限管理的分析與設(shè)計
    客戶端不僅僅需要作為固定的網(wǎng)絡(luò)終端來接收數(shù)據(jù),同時也要能夠模擬集中站管理員對系統(tǒng)的操作。主要涉及有:用戶賬號和密碼管理、操作權(quán)限的分配和回收、操作權(quán)限的驗證和操作命令的代執(zhí)行等。由于數(shù)據(jù)傳輸量較小,并需要保證數(shù)據(jù)傳輸?shù)目煽啃?,故也采用面向連接的TCP協(xié)議實現(xiàn)。綜合以上討論,網(wǎng)絡(luò)版ATS仿真系統(tǒng)間網(wǎng)絡(luò)通信實現(xiàn)可以用圖1所示的示意圖來表示。

2 網(wǎng)絡(luò)通信模塊的軟件實現(xiàn)
    由于ATS仿真系統(tǒng)是一個在Windows平臺基于MFC框架的桌面應(yīng)用程序,同時需要處理與多個客戶端之間的通信問題,所以在進(jìn)行具體的軟件實現(xiàn)之前,選擇一個合適的I/O模型尤為重要。在現(xiàn)有的通信模塊中,很多都是基于阻塞模型,其優(yōu)勢在于簡單直接,其缺點(diǎn)在于通常需要耗費(fèi)較多的系統(tǒng)資源,同時如果涉及到多線程數(shù)據(jù)交互更是需要進(jìn)行繁瑣的同步工作。異步通知模型則可以高效解決這種情況下的并行處理問題[2]。WSAAsyncSelect(異步選擇)模型是Winsock提供的一個異步I/O模型,通過這個模型,應(yīng)用程序可以接收制定套接字上的網(wǎng)絡(luò)事件通知,這些異步通知通過窗口消息的方式傳遞。通過對相應(yīng)消息的處理,應(yīng)用程序即可實現(xiàn)對網(wǎng)絡(luò)連接的控制,最突出的一方面是它可以在系統(tǒng)開銷不大的情況下同時處理許多連接。綜合考慮這些因素,本文采用WSAAsyncSelect模型。
2.1 協(xié)議的設(shè)計
    要實現(xiàn)不同主機(jī)、不同進(jìn)程之間的通信,首先要解決進(jìn)程間的通信協(xié)議設(shè)計問題。在網(wǎng)絡(luò)化的ATS仿真系統(tǒng)間的通信內(nèi)容主要是組件狀態(tài)和操作命令兩種。下面就對這兩種傳輸內(nèi)容分別進(jìn)行設(shè)計。
2.1.1 組件狀態(tài)的協(xié)議設(shè)計
    通過對ATS仿真系統(tǒng)的分析,客戶端需要保持與服務(wù)器同步所需要的數(shù)據(jù)有三種:組件的編號(如編號為123的信號機(jī))、組件的狀態(tài)類型(如信號機(jī)的顏色)、組件的具體狀態(tài)(如信號機(jī)的顏色為綠色)。所以可以將這三種數(shù)據(jù)整合成一個分組,組件的狀態(tài)編碼的封包格式如圖2所示。

 

 

2.1.2 操作命令的協(xié)議設(shè)計
   由于操作命令的多樣化,所以將協(xié)議設(shè)計成可變的、無固定長度的分組。每一個分組包括命令類型和命令內(nèi)容。命令內(nèi)容會因不同的命令類型而有所不同,最后以一個‘\0’作為結(jié)束符。這樣既可以方便拆包又能處理TCP數(shù)據(jù)流中的粘包問題[1]。操作命令的封包格式如圖3所示。

2.2 類設(shè)計
   由于服務(wù)器端和客戶端的ATS仿真系統(tǒng)都采用WSAAsyncSelect I/O模型,并且都有一些相同的操作,如創(chuàng)建套接字、創(chuàng)建關(guān)聯(lián)窗口、關(guān)閉套接字等,所以這里封裝一個CATSGenericConnector基類,該基類再分別派生出服務(wù)器類CATSServer和客戶端類CATSClient。服務(wù)器類實現(xiàn)了Startservice()和Broadcast()等方法,分別用于啟動客戶端等待客戶連接和向客戶端廣播組件狀態(tài)信息??蛻舳祟悓崿F(xiàn)了ConnectServer()和Send()等方法,分別用于連接客戶端和向服務(wù)器發(fā)送操作命令。
2.3 UDP廣播的實現(xiàn)
    UDP廣播主要是為在動態(tài)仿真過程中將服務(wù)器上運(yùn)行的ATS仿真系統(tǒng)的實時信息發(fā)送到每一個客戶端,客戶端根據(jù)接收到的數(shù)據(jù)更新系統(tǒng)上的組件狀態(tài),以達(dá)到與服務(wù)器保持同步的目的。服務(wù)器在啟動時將設(shè)置一個定時器,以一個固定的時間間隔作為一個傳輸周期,在每個傳輸周期內(nèi),服務(wù)器將改變的組件狀態(tài)按照圖2所示的封包格式進(jìn)行統(tǒng)一打包,并在一個傳輸周期結(jié)束前將封裝好的數(shù)據(jù)包廣播給局域網(wǎng)內(nèi)的每個客戶端??蛻舳藙t單獨(dú)開啟一個線程(ListenThread)用于接收服務(wù)器端發(fā)送的數(shù)據(jù),并對接收到的數(shù)據(jù)進(jìn)行解碼,更新相應(yīng)的組件狀態(tài)。
2.4 TCP通信的實現(xiàn)
        由通信基類CATSGenericConnector派生出的服務(wù)器類CATSServer實現(xiàn)了啟動服務(wù)器方法StartService(),當(dāng)服務(wù)器對象調(diào)用StartService()方法時,服務(wù)器創(chuàng)建監(jiān)聽套接字,等待客戶端的連接,并調(diào)用WSAAsyncSelect()與仿真系統(tǒng)的窗口關(guān)聯(lián)??蛻舳苏{(diào)用ConnectServer()與服務(wù)器進(jìn)行連接,并調(diào)用客戶端類CATSClient的Send()和OnRead()方法收發(fā)數(shù)據(jù)。在客戶端連接到服務(wù)器之后,服務(wù)器會將客戶端的連接信息保存在一個結(jié)構(gòu)ATSClientInfo中,該結(jié)構(gòu)記錄了客戶端的已連接套接字、IP地址、端口號、用戶名和密碼等信息,用于與客戶端進(jìn)行收發(fā)數(shù)據(jù)、權(quán)限驗證等工作。
2.5 編碼和解碼的實現(xiàn)
    網(wǎng)絡(luò)化的ATS仿真系統(tǒng)對傳輸數(shù)據(jù)的編碼解碼也要分為兩個部分進(jìn)行討論。首先,對于組件狀態(tài)的傳輸,服務(wù)器首先按照圖2所示的封包格式對組件狀態(tài)數(shù)據(jù)進(jìn)行編碼,客戶端在接收到數(shù)據(jù)后對數(shù)據(jù)進(jìn)行解碼;其次,客戶端會將操作命令和一些用戶名、密碼等信息發(fā)送到服務(wù)器端,由服務(wù)器端進(jìn)行解析、執(zhí)行,這樣就要求客戶端按照圖3所示的封包格式,對所需要發(fā)送的數(shù)據(jù)進(jìn)行編碼,服務(wù)器對所收到的數(shù)據(jù)進(jìn)行解碼、執(zhí)行、驗證權(quán)限等操作。
    為了滿足上述要求,定義一個抽象基類,該類聲明了編碼和解碼的接口,具體的接口實現(xiàn)由派生類完成。編解碼類的UML結(jié)構(gòu)如圖4所示。

2.6 測試結(jié)果
    在局域網(wǎng)內(nèi)啟動服務(wù)器上的ATS仿真程序,同時在其他多臺主機(jī)上的ATS仿真系統(tǒng)上以客戶端用戶登錄,所有客戶端上的仿真程序均能立即收到服務(wù)器所發(fā)出的數(shù)據(jù),仿真畫面保持一致,沒有出現(xiàn)不一致或者延遲的現(xiàn)象??蛻舳说牟僮饕嗄軠?zhǔn)確發(fā)送到服務(wù)器上,并且能夠?qū)⒉僮鞯慕Y(jié)果迅速地反映在多臺客戶端上的仿真程序上,測試達(dá)到了預(yù)期效果。
    本文提出了一個將ATS仿真系統(tǒng)網(wǎng)絡(luò)化的方案,以滿足實際應(yīng)用中對ATS仿真系統(tǒng)的應(yīng)用需求。該方案綜合考慮了對于仿真同步和模擬中央ATS/集中站等對通信效果的不同要求,分別應(yīng)用UDP和TCP協(xié)議,并采用基于窗口的WSAAsyncSelect I/O模型,設(shè)計并成功地將現(xiàn)有的ATS仿真系統(tǒng)的單機(jī)版網(wǎng)絡(luò)化,從而有效提高了培訓(xùn)效率。
參考文獻(xiàn)
[1] 孫志勇, 陳永生. ATS 仿真培訓(xùn)系統(tǒng)列車模擬運(yùn)行的設(shè)計與實現(xiàn)[J]. 微型機(jī)與應(yīng)用, 2012,31(14):7-9.
[2] 邱俊源, 張躍. 異步消息驅(qū)動安全通信模塊的設(shè)計與實現(xiàn)[J]. 計算機(jī)工程與設(shè)計, 2011,32(8):2580-2581.
[3] 賀鵬.城軌列車運(yùn)行自動監(jiān)控系統(tǒng)的多Agent模型[J].計算機(jī)應(yīng)用與軟件,2010,27(12):68-69.
[4] 謝小河, 郭秀清,郭玉臣.基于ATS仿真系統(tǒng)的網(wǎng)絡(luò)通信模塊的研究與設(shè)計[J].機(jī)電一體化,2012(8):53-54.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。