臧志丹,張 羽,秘慧杰
(卡斯柯信號有限公司,上海 200071)
調(diào)度集中系統(tǒng)將計算機、通信、控制技術(shù)融為一體,使鐵路運輸?shù)倪B續(xù)性、分散性和運輸管理的集中性、實時性緊密結(jié)合,依靠指揮行車控制信息和有關(guān)行車表示信息的正確、實時傳送,統(tǒng)一調(diào)度和指揮列車安全、有效地運行。
根據(jù)調(diào)度集中技術(shù)條件,調(diào)度集中系統(tǒng)應(yīng)具備按照列車運行調(diào)整計劃自動排列列車進路的功能,即車站自律機依據(jù)調(diào)度員下達的列車運行調(diào)整計劃自動生成列車進路指令(進路序列),滿足辦理進路的聯(lián)鎖條件,適時轉(zhuǎn)換為命令后發(fā)送給本站聯(lián)鎖設(shè)備執(zhí)行,計算機聯(lián)鎖向調(diào)度集中系統(tǒng)發(fā)送車站表示信息、命令執(zhí)行結(jié)果等,也可由人工發(fā)送命令控制。這就要求調(diào)度集中系統(tǒng)保證接口信息、進路數(shù)據(jù)的正確性,對于這樣一個高安全性且對實時邏輯要求嚴格的安全苛求系統(tǒng),投入使用之前對其進行全面嚴格的測試是非常必要的。
高鐵CTC 進路數(shù)據(jù)需按照聯(lián)鎖表逐條進行進路的建立、信號開放、取消進路、人解進路、引導(dǎo)進路、區(qū)段故障解鎖、防護及侵限條件檢查等方面一一測試,同時核對進路道岔走向、鎖閉區(qū)段及開放信號的一致性逐條按壓按鈕操作,然而,一個由4 條股道,15 組道岔組成的高鐵標準站,包含45條基本進路,20 條長進路,人工測試進路數(shù)據(jù)的時間預(yù)計為1 天;以90 條股道以及164 組道岔組成的動車段為例,共計1 000 條基本進路,5 600 條長進路,人工測試進路數(shù)據(jù)的時間至少30 天。由此可見,進路測試工作量繁重,耗時較長,且易出錯。在高速建設(shè)鐵路網(wǎng)的大環(huán)境下,高效高質(zhì)的完成CTC 進路數(shù)據(jù)測試帶來新的挑戰(zhàn)。
基于以上現(xiàn)狀,本文針對進路數(shù)據(jù)自動測試方法進行研究,設(shè)計出一種進路數(shù)據(jù)自動測試工具,可有效的解決進路數(shù)據(jù)的自動測試及測試結(jié)果的自動分析。
自動測試工具用于調(diào)度集中系統(tǒng)進路數(shù)據(jù)的自動測試,自動測試工具讀取CTC 數(shù)據(jù)中的進路信息,自動向車務(wù)終端發(fā)送排列進路的命令和取消進路的命令。并將車務(wù)終端返回的進路狀態(tài)與數(shù)據(jù)中的進路信息進行比對,將最終比對結(jié)果顯示在程序界面上,并保存在日志中供數(shù)據(jù)測試人員參考。
自動測試工具測試的項目可以精確測試和對不同類型進路的測試,能對進路數(shù)據(jù)進行重點測試和選擇測試,保存完整的測試過程與測試結(jié)果,便于回歸測試和分析測試結(jié)果。對于重復(fù)性操作比較多的進路數(shù)據(jù)測試工作,能顯著提高調(diào)度集中系統(tǒng)與計算機聯(lián)鎖接口的測試效率及數(shù)據(jù)正確率,使CTC系統(tǒng)產(chǎn)品更安全可靠。
進路自動測試工具(Auto Test)通過命名管道向車務(wù)終端軟件自動發(fā)送數(shù)據(jù),接收車務(wù)終端軟件發(fā)來的數(shù)據(jù)包,車務(wù)終端和自律機之間采用TCP/IP協(xié)議進行通信,自律機和聯(lián)鎖系統(tǒng)通過串口通信,以上必須滿足《調(diào)度集中與計算機聯(lián)鎖接口規(guī)范》,符合調(diào)度集中系統(tǒng)的數(shù)據(jù)機制、通信機制、執(zhí)行機制,實現(xiàn)進路建立、信號開放、信號重開、取消進路、人解進路的控制命令自動下達及進路表示信息一致性核對。通信流程如圖1 所示。
圖1 通信流程圖Fig.1 Communication flowchart
自動測試工具加載進路數(shù)據(jù)文件,并將進路表存在內(nèi)存中,進路數(shù)據(jù)文件有一定格式要求,進路數(shù)據(jù)需包含進路編號,進路類型,始終端按鈕設(shè)備,開放信號機,進路內(nèi)的道岔、防護道岔及帶動道岔,敵對信號,進路內(nèi)的區(qū)段,超限區(qū)段等信息,以及進路中設(shè)備的邏輯順序。同時需將聯(lián)鎖接口信息完整錄入到相應(yīng)的設(shè)備中,為后續(xù)測試進路的正確性做準備。
自動測試工具和車務(wù)終端通過命名管道進行通信,將需要發(fā)送給車務(wù)終端的進路存放在發(fā)送隊列中,與車務(wù)終端建立連接后,就會將進路建立消息通過命名管道發(fā)送給車務(wù)終端。車務(wù)終端接收進路建立消息后,通過自律機向聯(lián)鎖發(fā)送進路建立指令,進路建立指令經(jīng)過檢查可以排列進路后, 聯(lián)鎖通過自律機將進路建立的消息發(fā)送給車務(wù)終端。車務(wù)終端收到表示信息后,會通過命名管道將表示信息發(fā)送給進路自動測試工具,進路自動測試工具據(jù)此來判斷進路建立是否正確。若正確,則會進行下一條測試。若不正確,則會重試。如果多次測試不正確,則輸出測試失敗。一條進路測試完成,進路自動測試工具會發(fā)送進路取消或人解進路的命令,并為下一條進路測試做準備。
自動測試工具將測試結(jié)果保存在本地的日志文件中,便于測試人員準確的定位到問題,提出解決方案,測試結(jié)果包含以下內(nèi)容。
1)日志文件Cmlog.log
記錄與車務(wù)終端的通信心跳等信息。
2)日志文件OperResult.log
測試“完成”生成此文件,記錄測試結(jié)果。內(nèi)容包括進路總數(shù): N 條;基本進路: N 條;測試成功進路: N 條;測試失敗進路: N 條;進路表問題需自行測試: N 條;未測進路:N 條。
3)日志文件OperResult 站號_OnTime.log
測試“過程中”生成此文件,實時記錄測試結(jié)果。
4)日志文件RouteTestResult-站號.log
測試”過程中”生成此文件,實時記錄進路的操作執(zhí)行情況,包括車務(wù)終端反饋的表示與進路設(shè)備校驗。
5)日志文件RouteInfo-站號.log
測試”過程中”生成此文件,實時記錄顯示界面信息。
CCESHIView 讀取.sta 數(shù)據(jù),并將進路信息讀到內(nèi)存里,調(diào)用GetRouteInStation(int stno)將進路和元素的信息放入m_routeInfo 中。通過調(diào)用ListAllRoute(CDC *pDC)將進路信息顯示在界面上。進路數(shù)據(jù)的讀取并儲存模塊如圖2 所示。
圖2 進路數(shù)據(jù)的讀取并儲存模塊Fig.2 Route data read and storage module
數(shù)據(jù)存儲單元通過讀取CTC 系統(tǒng)的數(shù)據(jù)文件,車站設(shè)備描述文件和站場數(shù)據(jù)文件,獲取進路信息,所獲取的進路信息包括進路描述、進路上的所有組成設(shè)備及其狀態(tài)表示信息、進路操作及其狀態(tài)表示以及進路防護設(shè)備等。進路上設(shè)備以進路始端信號機到終端信號機順序檢索,之后將獲取的數(shù)據(jù)信息以進路為單位進行存儲和測試。通過核對進路操作后進路上各設(shè)備的狀態(tài)是否符合該操作應(yīng)有狀態(tài)特征來判別進路操作的正確性。
在獲取進路信息后,進路操作的命令將被分解和存儲。以長列車進路的建立為例,測試工具將長列車進路分解成多條基本進路段并獲取各段的始終端信號機按鈕及按鈕操作。測試工具將分解后的進路信息存儲在該條長列車進路表項下,待測試使用。
2)發(fā)送進路建立指令
測試過程仍是以CTC 操作為主,測試工具起到存儲進路信息、發(fā)送操作信息和核對表示信息的作用。工具基于windows 操作系統(tǒng)實現(xiàn),自動測試工具選擇C++作為開發(fā)語言,實現(xiàn)命令自動發(fā)送與表示信息自動返回比對,關(guān)鍵數(shù)據(jù)結(jié)構(gòu)描述如下。
1)讀取數(shù)據(jù)并儲存進路信息
CStation:polling()主要將兩條進路的執(zhí)行結(jié)果進行比較,并搜索下一條準備測試的進路,進路信息從m_RouteArray 中獲得,并加以邏輯判斷,將符合發(fā)送邏輯的進路信息通過調(diào)用CTestOperMsgProc:SetTestElem 放入m_TestingRoute,再通過調(diào)用CTestOperMsgProc:CreateMsgQueue(int oper_id) 將 兩 條 同 時 測 試的進路信息都放進m_msgQueue。消息放在CTestOperMsgProc 中的m_MsgQueue 中,再從m_MsgQueue 通過調(diào)用AddMsgToSend-Queue()放入m_MsgtoSend 中,通過調(diào)用m_TestOperMsgProc[i].HasMsgToSend(&msg)和AddToQueue(CESHI_SRC,(LPTSTR)&msg)再將其傳入CClientNamedPipe 的SendMsg 中,最后通過命名管道發(fā)送給車務(wù)終端。進路建立指令的發(fā)送模塊如圖3 所示。
圖3 進路建立指令的發(fā)送模塊Fig.3 Transmitting module of the route establishment command
為確保測試結(jié)果的準確性,測試工具通過向車務(wù)終端發(fā)送進路操作命令來模擬人工進路操作,測試中所使用的操作指令與人工手辦完全對應(yīng)。測試中所使用的進路操作命令,包括進路建立、進路取消、人解、信號重開等。測試工具通過與車務(wù)終端的測試接口建立的雙向通信匿名管道發(fā)送進路操作命令。仍以長列車進路排路為例,測試工具在測試該條進路時將分解后的基本進路始終端按鈕操作逐步發(fā)送給車務(wù)終端,并接收來自車務(wù)終端的操作反饋和聯(lián)鎖延時,當該條長列車進路的排路操作完成后,開始檢查設(shè)備表示并評判準確性。
3)處理車務(wù)終端發(fā)回的消息
通過調(diào)用ReadPipeMsg(char *pMsg)將車務(wù)終端發(fā)來的消息存在內(nèi)存中,調(diào)用AddToQueue(int src, char *pMsg)將內(nèi)存中的消息存在recvmsg中,通過調(diào)用DisPatchMsg(const PIPE_MSG*msg) 將消息放進m_TestOperMsgProc[i]. m_NeedProcessMsg,并在CTestOperMsgProc 中完成消息的比較。車務(wù)終端發(fā)回消息模塊如圖4 所示。
車務(wù)終端在整個測試過程中的作用是模擬人工手辦,進路操作的邏輯卡控仍由自律機完成,這保證了測試結(jié)果和現(xiàn)場使用是完全一致的。在進路操作完成后,測試工具將獲取來自車務(wù)終端的站場表示信息,用以核對操作的準確性。
圖4 車務(wù)終端發(fā)回消息模塊Fig.4 Message sending back module from vehicle terminal
自動化測試工具主要功能如下。
1)可視化窗口:測試工具的可視化窗口中測試條目以列表的形式展現(xiàn),測試結(jié)果以不同顏色的條目進行顯示,測試失敗的進路條目字體為紅色,測試成功為綠色,已測試的進路為淺綠色底。標題欄中可顯示軟件執(zhí)行狀態(tài),若顯示“Project is Going on……”,表示正在測試。若顯示“ProjectisStopping…”,表示測試停止。若顯示“ProjectisFinished…”,表示測試完成。測試進行中的可視化窗口如圖5 所示。
圖5 測試進行中的可視化窗口Fig.5 Visual window in testing
2)列車進路類型的選擇:進路類型分為5 種,即調(diào)車進路、長調(diào)車進路、長延續(xù)進路、基本列車進路和長列車進路,可以靈活及精準的選擇不同類型進路進行測試。
3)進路相關(guān)操作:預(yù)先輸入進路建立超時時間,人解進路超時時間,取消進路超時時間,以及可以按需輸入起始測試進路序號,結(jié)束測試進路號,選擇性的測試相關(guān)進路。并且進路數(shù)據(jù)中存在的禁止的進路也可進行選擇查看權(quán)。
4)信號重開功能:進路信號重開功能的測試可選擇是否開啟,當選擇了信號重開測試項目后,即使信號重開測試失敗,也不會影響建立進路或取消、人解進路功能的操作。若進路建立失敗,則不會再對該條進路進行信號重開測試。
5)進路信息裝載:開始測試前需先加載進路數(shù)據(jù)文件,將進路表導(dǎo)入到內(nèi)存中, “加載數(shù)據(jù)”選項可加載已經(jīng)選擇的進路信息。
6)測試報告的導(dǎo)出:為記錄測試信息和測試結(jié)果,測試結(jié)果可以保存到excel 表格中,選擇啟用excel 實時存儲以啟用實時存儲功能。包括基本列車進路、基本調(diào)車進路、長列車進路、長調(diào)車進路和長延續(xù)進路等5 項表單。測試報告內(nèi)容如圖6 所示。
圖6 自動導(dǎo)出測試表格Fig.6 Automatically exported test form
7)繼續(xù)上次測試:可以讀取上次測試的測試結(jié)果文件,并繼續(xù)測試未完成測試的進路。
實踐證明,上述由4 條股道,15 組道岔組成的標準站,使用自動測試工具進行一致性核對測試,可將測試時間縮短至0.5 天。由90 條股道以及164 組道岔組成的動車段,使用自動測試工具進行測試,可將進路測試時間縮短至15 天,測試效率提升一倍,且測試結(jié)果為測試人員提供了精準定位解決問題。若各系統(tǒng)之間進路數(shù)據(jù)能形成統(tǒng)一標準,則可以極大提高接口測試的效率和系統(tǒng)接口的準確性,使高鐵中的調(diào)度集中系統(tǒng)更安全可靠。后續(xù)對進路自動測試工具進行完善和優(yōu)化,進一步提高測試效率及安全性,將其推廣到更多高鐵線路接口測試中。