摘 要: 網(wǎng)絡(luò)化的ATS仿真系統(tǒng)能夠更好地滿足在實際應(yīng)用中的培訓和教學需求,。以上海地鐵2號線ATS(Automatic Train Supervision)仿真系統(tǒng)為例,,在系統(tǒng)功能模塊化的基礎(chǔ)之上,結(jié)合TCP/IP,、UDP協(xié)議和WSAAsyncSelect I/O模型,,在現(xiàn)有單機版ATS仿真系統(tǒng)的基礎(chǔ)上設(shè)計并開發(fā)了網(wǎng)絡(luò)版,使之可以更好地滿足系統(tǒng)的實際應(yīng)用需求,。
關(guān)鍵詞: ATS; 仿真; 網(wǎng)絡(luò)通信; WSAAsyncSelect
近年來,,軌道交通快速進入高速期,成為帶動經(jīng)濟增長的重要因素,。列車自動監(jiān)控系統(tǒng)(ATS)是一種智能化自動監(jiān)控系統(tǒng),,是否對ATS系統(tǒng)正確操作,影響著列車能否安全運行,,這對軌道交通運營管理人員的后勤培訓提出了很高要求,。這些綜合性運營專業(yè)人員不僅需要熟悉ATS系統(tǒng)的工作原理,同時還需要具備實際操作能力,??紤]到現(xiàn)場行車安全無法在目前已經(jīng)投入運營的系統(tǒng)上進行教學培訓,開發(fā)仿真培訓系統(tǒng)就成為解決這一問題的有效途徑,,因此ATS仿真系統(tǒng)應(yīng)運而生[1],。
單機版ATS仿真系統(tǒng)是運行于單獨一臺主機上并且不與其他主機進行通信的ATS仿真系統(tǒng),,它可以提供模擬演示和故障模擬等基本功能。但是在實際的培訓和教學中,,單機版ATS仿真系統(tǒng)仍然存在很多局限性,,例如教師無法同時對較多的學員進行示范性操作、無法模擬中央ATS和集中站ATS的拓撲環(huán)境等,。這就提出了將現(xiàn)有單機版ATS仿真系統(tǒng)網(wǎng)絡(luò)化的需求,。網(wǎng)絡(luò)版ATS仿真系統(tǒng)是在單機版ATS仿真系統(tǒng)的基礎(chǔ)上,進一步構(gòu)建基于客戶端/服務(wù)器C/S(Client/Server)模型的網(wǎng)絡(luò)化通信平臺,,著重研究基于TCP/IP協(xié)議下運行在多臺主機上的ATS仿真系統(tǒng)之間的網(wǎng)絡(luò)通信,。
1 ATS仿真系統(tǒng)網(wǎng)絡(luò)版通信模塊的總體設(shè)計
網(wǎng)絡(luò)版ATS仿真系統(tǒng)間的通信不同于單機版ATS仿真系統(tǒng)模塊之間的通信,它是基于現(xiàn)有的網(wǎng)絡(luò)通信協(xié)議,,采用成熟的網(wǎng)絡(luò)編程接口實現(xiàn)不同主機,、不同進程間的數(shù)據(jù)傳輸和交互。通過對ATS仿真系統(tǒng)的需求分析,,將通信模塊的設(shè)計分為組件狀態(tài)同步,、客戶端的操作命令傳輸和權(quá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ā)送數(shù)據(jù)給服務(wù)器,只要保證接收到的數(shù)據(jù)的完整性即可,,不需要為每一個客戶端建立一個與服務(wù)器的TCP連接,。所以,綜合考慮上述因素,,本文采用UDP(User Datagram Protocol)廣播的方案,。UDP廣播具有資源消耗少、傳輸效率高等優(yōu)點,,能夠滿足這里的實時通信要求,。
1.2 客戶端操作命令的傳輸?shù)姆治雠c設(shè)計
中央ATS起著全局監(jiān)管的作用,一般會把集中站的具體操作控制權(quán)交至區(qū)域控制中心,。由于區(qū)域控制中心的操作需要被全局看到,,包括中央ATS和其他區(qū)域控制中心/集中站,并能夠在中央ATS留下操作記錄。所以客戶端對系統(tǒng)的操作并不是直接作用于本機的系統(tǒng),,而是將操作命令傳給中央ATS,,由中央ATS執(zhí)行命令,并將執(zhí)行的結(jié)果(如組件狀態(tài)的改變)廣播給所有的客戶端,。這樣便可保證區(qū)域控制中心不會越權(quán)操作,,也可使各個系統(tǒng)之間保持一致。由于客戶端與中央ATS之間的通信屬于端到端的通信,,并且需要嚴格保證傳輸數(shù)據(jù)的完整性,,這就需要選擇一個面向連接的、可靠的通信協(xié)議,。TCP協(xié)議是一個面向連接、可靠的通信協(xié)議,,它通過自身實現(xiàn)的數(shù)據(jù)確認和超時重傳等機制,,保證了數(shù)據(jù)傳輸?shù)母呖煽啃裕⑶铱蛻舳税l(fā)送的操作命令的數(shù)據(jù)較小,、在同一時刻也不會有很多客戶端需要與中央ATS進行通信,,并不會耗費太多系統(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)用程序,同時需要處理與多個客戶端之間的通信問題,,所以在進行具體的軟件實現(xiàn)之前,,選擇一個合適的I/O模型尤為重要。在現(xiàn)有的通信模塊中,,很多都是基于阻塞模型,,其優(yōu)勢在于簡單直接,其缺點在于通常需要耗費較多的系統(tǒng)資源,,同時如果涉及到多線程數(shù)據(jù)交互更是需要進行繁瑣的同步工作,。異步通知模型則可以高效解決這種情況下的并行處理問題[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)不同主機,、不同進程之間的通信,首先要解決進程間的通信協(xié)議設(shè)計問題,。在網(wǎng)絡(luò)化的ATS仿真系統(tǒng)間的通信內(nèi)容主要是組件狀態(tài)和操作命令兩種,。下面就對這兩種傳輸內(nèi)容分別進行設(shè)計。
2.1.1 組件狀態(tài)的協(xié)議設(shè)計
通過對ATS仿真系統(tǒng)的分析,,客戶端需要保持與服務(wù)器同步所需要的數(shù)據(jù)有三種:組件的編號(如編號為123的信號機),、組件的狀態(tài)類型(如信號機的顏色)、組件的具體狀態(tài)(如信號機的顏色為綠色),。所以可以將這三種數(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)信息,。客戶端類實現(xiàn)了ConnectServer()和Send()等方法,,分別用于連接客戶端和向服務(wù)器發(fā)送操作命令,。
2.3 UDP廣播的實現(xiàn)
UDP廣播主要是為在動態(tài)仿真過程中將服務(wù)器上運行的ATS仿真系統(tǒng)的實時信息發(fā)送到每一個客戶端,客戶端根據(jù)接收到的數(shù)據(jù)更新系統(tǒng)上的組件狀態(tài),以達到與服務(wù)器保持同步的目的,。服務(wù)器在啟動時將設(shè)置一個定時器,,以一個固定的時間間隔作為一個傳輸周期,在每個傳輸周期內(nèi),,服務(wù)器將改變的組件狀態(tài)按照圖2所示的封包格式進行統(tǒng)一打包,,并在一個傳輸周期結(jié)束前將封裝好的數(shù)據(jù)包廣播給局域網(wǎng)內(nèi)的每個客戶端??蛻舳藙t單獨開啟一個線程(ListenThread)用于接收服務(wù)器端發(fā)送的數(shù)據(jù),,并對接收到的數(shù)據(jù)進行解碼,更新相應(yīng)的組件狀態(tài),。
2.4 TCP通信的實現(xiàn)
由通信基類CATSGenericConnector派生出的服務(wù)器類CATSServer實現(xiàn)了啟動服務(wù)器方法StartService(),,當服務(wù)器對象調(diào)用StartService()方法時,服務(wù)器創(chuàng)建監(jiān)聽套接字,,等待客戶端的連接,,并調(diào)用WSAAsyncSelect()與仿真系統(tǒng)的窗口關(guān)聯(lián)??蛻舳苏{(diào)用ConnectServer()與服務(wù)器進行連接,并調(diào)用客戶端類CATSClient的Send()和OnRead()方法收發(fā)數(shù)據(jù),。在客戶端連接到服務(wù)器之后,,服務(wù)器會將客戶端的連接信息保存在一個結(jié)構(gòu)ATSClientInfo中,該結(jié)構(gòu)記錄了客戶端的已連接套接字,、IP地址,、端口號、用戶名和密碼等信息,,用于與客戶端進行收發(fā)數(shù)據(jù),、權(quán)限驗證等工作。
2.5 編碼和解碼的實現(xiàn)
網(wǎng)絡(luò)化的ATS仿真系統(tǒng)對傳輸數(shù)據(jù)的編碼解碼也要分為兩個部分進行討論,。首先,,對于組件狀態(tài)的傳輸,服務(wù)器首先按照圖2所示的封包格式對組件狀態(tài)數(shù)據(jù)進行編碼,,客戶端在接收到數(shù)據(jù)后對數(shù)據(jù)進行解碼;其次,,客戶端會將操作命令和一些用戶名、密碼等信息發(fā)送到服務(wù)器端,,由服務(wù)器端進行解析,、執(zhí)行,這樣就要求客戶端按照圖3所示的封包格式,,對所需要發(fā)送的數(shù)據(jù)進行編碼,,服務(wù)器對所收到的數(shù)據(jù)進行解碼、執(zhí)行、驗證權(quán)限等操作,。
為了滿足上述要求,,定義一個抽象基類,該類聲明了編碼和解碼的接口,,具體的接口實現(xiàn)由派生類完成,。編解碼類的UML結(jié)構(gòu)如圖4所示。
2.6 測試結(jié)果
在局域網(wǎng)內(nèi)啟動服務(wù)器上的ATS仿真程序,,同時在其他多臺主機上的ATS仿真系統(tǒng)上以客戶端用戶登錄,,所有客戶端上的仿真程序均能立即收到服務(wù)器所發(fā)出的數(shù)據(jù),仿真畫面保持一致,,沒有出現(xiàn)不一致或者延遲的現(xiàn)象,。客戶端的操作亦能準確發(fā)送到服務(wù)器上,,并且能夠?qū)⒉僮鞯慕Y(jié)果迅速地反映在多臺客戶端上的仿真程序上,,測試達到了預(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)的單機版網(wǎng)絡(luò)化,從而有效提高了培訓效率,。
參考文獻
[1] 孫志勇, 陳永生. ATS 仿真培訓系統(tǒng)列車模擬運行的設(shè)計與實現(xiàn)[J]. 微型機與應(yīng)用, 2012,31(14):7-9.
[2] 邱俊源, 張躍. 異步消息驅(qū)動安全通信模塊的設(shè)計與實現(xiàn)[J]. 計算機工程與設(shè)計, 2011,32(8):2580-2581.
[3] 賀鵬.城軌列車運行自動監(jiān)控系統(tǒng)的多Agent模型[J].計算機應(yīng)用與軟件,,2010,27(12):68-69.
[4] 謝小河, 郭秀清,郭玉臣.基于ATS仿真系統(tǒng)的網(wǎng)絡(luò)通信模塊的研究與設(shè)計[J].機電一體化,2012(8):53-54.