臧志丹,張 羽,秘慧杰
(卡斯柯信號有限公司,上海 200071)
調度集中系統將計算機、通信、控制技術融為一體,使鐵路運輸的連續性、分散性和運輸管理的集中性、實時性緊密結合,依靠指揮行車控制信息和有關行車表示信息的正確、實時傳送,統一調度和指揮列車安全、有效地運行。
根據調度集中技術條件,調度集中系統應具備按照列車運行調整計劃自動排列列車進路的功能,即車站自律機依據調度員下達的列車運行調整計劃自動生成列車進路指令(進路序列),滿足辦理進路的聯鎖條件,適時轉換為命令后發送給本站聯鎖設備執行,計算機聯鎖向調度集中系統發送車站表示信息、命令執行結果等,也可由人工發送命令控制。這就要求調度集中系統保證接口信息、進路數據的正確性,對于這樣一個高安全性且對實時邏輯要求嚴格的安全苛求系統,投入使用之前對其進行全面嚴格的測試是非常必要的。
高鐵CTC 進路數據需按照聯鎖表逐條進行進路的建立、信號開放、取消進路、人解進路、引導進路、區段故障解鎖、防護及侵限條件檢查等方面一一測試,同時核對進路道岔走向、鎖閉區段及開放信號的一致性逐條按壓按鈕操作,然而,一個由4 條股道,15 組道岔組成的高鐵標準站,包含45條基本進路,20 條長進路,人工測試進路數據的時間預計為1 天;以90 條股道以及164 組道岔組成的動車段為例,共計1 000 條基本進路,5 600 條長進路,人工測試進路數據的時間至少30 天。由此可見,進路測試工作量繁重,耗時較長,且易出錯。在高速建設鐵路網的大環境下,高效高質的完成CTC 進路數據測試帶來新的挑戰。
基于以上現狀,本文針對進路數據自動測試方法進行研究,設計出一種進路數據自動測試工具,可有效的解決進路數據的自動測試及測試結果的自動分析。
自動測試工具用于調度集中系統進路數據的自動測試,自動測試工具讀取CTC 數據中的進路信息,自動向車務終端發送排列進路的命令和取消進路的命令。并將車務終端返回的進路狀態與數據中的進路信息進行比對,將最終比對結果顯示在程序界面上,并保存在日志中供數據測試人員參考。
自動測試工具測試的項目可以精確測試和對不同類型進路的測試,能對進路數據進行重點測試和選擇測試,保存完整的測試過程與測試結果,便于回歸測試和分析測試結果。對于重復性操作比較多的進路數據測試工作,能顯著提高調度集中系統與計算機聯鎖接口的測試效率及數據正確率,使CTC系統產品更安全可靠。
進路自動測試工具(Auto Test)通過命名管道向車務終端軟件自動發送數據,接收車務終端軟件發來的數據包,車務終端和自律機之間采用TCP/IP協議進行通信,自律機和聯鎖系統通過串口通信,以上必須滿足《調度集中與計算機聯鎖接口規范》,符合調度集中系統的數據機制、通信機制、執行機制,實現進路建立、信號開放、信號重開、取消進路、人解進路的控制命令自動下達及進路表示信息一致性核對。通信流程如圖1 所示。

圖1 通信流程圖Fig.1 Communication flowchart
自動測試工具加載進路數據文件,并將進路表存在內存中,進路數據文件有一定格式要求,進路數據需包含進路編號,進路類型,始終端按鈕設備,開放信號機,進路內的道岔、防護道岔及帶動道岔,敵對信號,進路內的區段,超限區段等信息,以及進路中設備的邏輯順序。同時需將聯鎖接口信息完整錄入到相應的設備中,為后續測試進路的正確性做準備。
自動測試工具和車務終端通過命名管道進行通信,將需要發送給車務終端的進路存放在發送隊列中,與車務終端建立連接后,就會將進路建立消息通過命名管道發送給車務終端。車務終端接收進路建立消息后,通過自律機向聯鎖發送進路建立指令,進路建立指令經過檢查可以排列進路后, 聯鎖通過自律機將進路建立的消息發送給車務終端。車務終端收到表示信息后,會通過命名管道將表示信息發送給進路自動測試工具,進路自動測試工具據此來判斷進路建立是否正確。若正確,則會進行下一條測試。若不正確,則會重試。如果多次測試不正確,則輸出測試失敗。一條進路測試完成,進路自動測試工具會發送進路取消或人解進路的命令,并為下一條進路測試做準備。
自動測試工具將測試結果保存在本地的日志文件中,便于測試人員準確的定位到問題,提出解決方案,測試結果包含以下內容。
1)日志文件Cmlog.log
記錄與車務終端的通信心跳等信息。
2)日志文件OperResult.log
測試“完成”生成此文件,記錄測試結果。內容包括進路總數: N 條;基本進路: N 條;測試成功進路: N 條;測試失敗進路: N 條;進路表問題需自行測試: N 條;未測進路:N 條。
3)日志文件OperResult 站號_OnTime.log
測試“過程中”生成此文件,實時記錄測試結果。
4)日志文件RouteTestResult-站號.log
測試”過程中”生成此文件,實時記錄進路的操作執行情況,包括車務終端反饋的表示與進路設備校驗。
5)日志文件RouteInfo-站號.log
測試”過程中”生成此文件,實時記錄顯示界面信息。
CCESHIView 讀取.sta 數據,并將進路信息讀到內存里,調用GetRouteInStation(int stno)將進路和元素的信息放入m_routeInfo 中。通過調用ListAllRoute(CDC *pDC)將進路信息顯示在界面上。進路數據的讀取并儲存模塊如圖2 所示。

圖2 進路數據的讀取并儲存模塊Fig.2 Route data read and storage module
數據存儲單元通過讀取CTC 系統的數據文件,車站設備描述文件和站場數據文件,獲取進路信息,所獲取的進路信息包括進路描述、進路上的所有組成設備及其狀態表示信息、進路操作及其狀態表示以及進路防護設備等。進路上設備以進路始端信號機到終端信號機順序檢索,之后將獲取的數據信息以進路為單位進行存儲和測試。通過核對進路操作后進路上各設備的狀態是否符合該操作應有狀態特征來判別進路操作的正確性。
在獲取進路信息后,進路操作的命令將被分解和存儲。以長列車進路的建立為例,測試工具將長列車進路分解成多條基本進路段并獲取各段的始終端信號機按鈕及按鈕操作。測試工具將分解后的進路信息存儲在該條長列車進路表項下,待測試使用。
2)發送進路建立指令
測試過程仍是以CTC 操作為主,測試工具起到存儲進路信息、發送操作信息和核對表示信息的作用。工具基于windows 操作系統實現,自動測試工具選擇C++作為開發語言,實現命令自動發送與表示信息自動返回比對,關鍵數據結構描述如下。
1)讀取數據并儲存進路信息
CStation:polling()主要將兩條進路的執行結果進行比較,并搜索下一條準備測試的進路,進路信息從m_RouteArray 中獲得,并加以邏輯判斷,將符合發送邏輯的進路信息通過調用CTestOperMsgProc:SetTestElem 放入m_TestingRoute,再通過調用CTestOperMsgProc:CreateMsgQueue(int oper_id) 將 兩 條 同 時 測 試的進路信息都放進m_msgQueue。消息放在CTestOperMsgProc 中的m_MsgQueue 中,再從m_MsgQueue 通過調用AddMsgToSend-Queue()放入m_MsgtoSend 中,通過調用m_TestOperMsgProc[i].HasMsgToSend(&msg)和AddToQueue(CESHI_SRC,(LPTSTR)&msg)再將其傳入CClientNamedPipe 的SendMsg 中,最后通過命名管道發送給車務終端。進路建立指令的發送模塊如圖3 所示。

圖3 進路建立指令的發送模塊Fig.3 Transmitting module of the route establishment command
為確保測試結果的準確性,測試工具通過向車務終端發送進路操作命令來模擬人工進路操作,測試中所使用的操作指令與人工手辦完全對應。測試中所使用的進路操作命令,包括進路建立、進路取消、人解、信號重開等。測試工具通過與車務終端的測試接口建立的雙向通信匿名管道發送進路操作命令。仍以長列車進路排路為例,測試工具在測試該條進路時將分解后的基本進路始終端按鈕操作逐步發送給車務終端,并接收來自車務終端的操作反饋和聯鎖延時,當該條長列車進路的排路操作完成后,開始檢查設備表示并評判準確性。
3)處理車務終端發回的消息
通過調用ReadPipeMsg(char *pMsg)將車務終端發來的消息存在內存中,調用AddToQueue(int src, char *pMsg)將內存中的消息存在recvmsg中,通過調用DisPatchMsg(const PIPE_MSG*msg) 將消息放進m_TestOperMsgProc[i]. m_NeedProcessMsg,并在CTestOperMsgProc 中完成消息的比較。車務終端發回消息模塊如圖4 所示。
車務終端在整個測試過程中的作用是模擬人工手辦,進路操作的邏輯卡控仍由自律機完成,這保證了測試結果和現場使用是完全一致的。在進路操作完成后,測試工具將獲取來自車務終端的站場表示信息,用以核對操作的準確性。

圖4 車務終端發回消息模塊Fig.4 Message sending back module from vehicle terminal
自動化測試工具主要功能如下。
1)可視化窗口:測試工具的可視化窗口中測試條目以列表的形式展現,測試結果以不同顏色的條目進行顯示,測試失敗的進路條目字體為紅色,測試成功為綠色,已測試的進路為淺綠色底。標題欄中可顯示軟件執行狀態,若顯示“Project is Going on……”,表示正在測試。若顯示“ProjectisStopping…”,表示測試停止。若顯示“ProjectisFinished…”,表示測試完成。測試進行中的可視化窗口如圖5 所示。

圖5 測試進行中的可視化窗口Fig.5 Visual window in testing
2)列車進路類型的選擇:進路類型分為5 種,即調車進路、長調車進路、長延續進路、基本列車進路和長列車進路,可以靈活及精準的選擇不同類型進路進行測試。
3)進路相關操作:預先輸入進路建立超時時間,人解進路超時時間,取消進路超時時間,以及可以按需輸入起始測試進路序號,結束測試進路號,選擇性的測試相關進路。并且進路數據中存在的禁止的進路也可進行選擇查看權。
4)信號重開功能:進路信號重開功能的測試可選擇是否開啟,當選擇了信號重開測試項目后,即使信號重開測試失敗,也不會影響建立進路或取消、人解進路功能的操作。若進路建立失敗,則不會再對該條進路進行信號重開測試。
5)進路信息裝載:開始測試前需先加載進路數據文件,將進路表導入到內存中, “加載數據”選項可加載已經選擇的進路信息。
6)測試報告的導出:為記錄測試信息和測試結果,測試結果可以保存到excel 表格中,選擇啟用excel 實時存儲以啟用實時存儲功能。包括基本列車進路、基本調車進路、長列車進路、長調車進路和長延續進路等5 項表單。測試報告內容如圖6 所示。

圖6 自動導出測試表格Fig.6 Automatically exported test form
7)繼續上次測試:可以讀取上次測試的測試結果文件,并繼續測試未完成測試的進路。
實踐證明,上述由4 條股道,15 組道岔組成的標準站,使用自動測試工具進行一致性核對測試,可將測試時間縮短至0.5 天。由90 條股道以及164 組道岔組成的動車段,使用自動測試工具進行測試,可將進路測試時間縮短至15 天,測試效率提升一倍,且測試結果為測試人員提供了精準定位解決問題。若各系統之間進路數據能形成統一標準,則可以極大提高接口測試的效率和系統接口的準確性,使高鐵中的調度集中系統更安全可靠。后續對進路自動測試工具進行完善和優化,進一步提高測試效率及安全性,將其推廣到更多高鐵線路接口測試中。