張友兵 張 波
(北京全路通信信號研究設(shè)計院有限公司列車自動控制研究所,100073,北京∥第一作者,助理工程師)
車載ATP(列車自動保護)功能作為CTCS-2級列控系統(tǒng)的重要組成部分,影響著列車的行車安全,故對車載ATP進行嚴格完備的測試是必不可少的。
對車載ATP功能進行人工測試,存在測試人員工作強度大、浪費人力、效率低下等問題,因此亟需研究和開發(fā)一種針對車載ATP的自動測試方法。自動測試能夠代替手工測試工作,避免重復測試,還可以完成大量手工測試無法完成的測試工作[1-2]。
對車載ATP功能進行自動測試,可以從DMI(人機界面)獲取有關(guān)車載ATP的實時信息,并編寫測試腳本對這些信息進行處理分析,以實現(xiàn)對車載ATP功能的測試。
本文主要介紹了一種針對CTCS-2級車載ATP功能的自動測試平臺,介紹了該自動測試平臺的系統(tǒng)結(jié)構(gòu);詳細介紹了通過腳本自動按壓DMI按鈕來自動確認或取消DMI文本消息,自動判斷DMI輸出語言、DMI顯示圖標、DMI動態(tài)圖像信息的基本原理和方法。利用這些方法對來自DMI的數(shù)據(jù)進行分析處理,就可以實現(xiàn)對車載ATP功能的自動測試。
CTCS-2級車載ATP功能自動測試平臺結(jié)構(gòu)如圖1所示。從圖1可以看出,除了被測設(shè)備車載ATP外,車載ATP功能自動測試平臺包含4個部分:測試腳本,主引擎,分引擎和測試接口。
圖1 CTCS-2級車載ATP功能自動測試平臺結(jié)構(gòu)圖
1)測試腳本分為3類:測試案例腳本,軌道電路腳本和應(yīng)答器腳本。軌道電路腳本包含1條測試案例對應(yīng)線路上所有軌道區(qū)段的低頻、載頻和位置信息。應(yīng)答器腳本包含1條測試案例對應(yīng)線路上所有應(yīng)答器的報文和位置信息。測試案例腳本是文字形式的測試案例的腳本化,是可以測試車載ATP功能且能被計算機語言解析的字符串。
2)主引擎負責依次讀取測試案例腳本的每一句腳本命令,根據(jù)protocol buffer協(xié)議將腳本命令發(fā)送給分引擎,另外主引擎還要將分引擎的數(shù)據(jù)傳遞給腳本。主引擎是測試案例腳本與分引擎之間交互數(shù)據(jù)的橋梁。
3)分引擎要么通過主引擎獲取測試案例腳本命令,要么直接讀取軌道電路腳本和應(yīng)答器腳本,根據(jù)命令內(nèi)容執(zhí)行相應(yīng)的具體操作,并向主引擎回復車載ATP的實時信息等。分引擎分為DMI分引擎、列車動力學分引擎和ATP接口平臺分引擎。
4)測試接口是各個分引擎和被測車載ATP之間交互數(shù)據(jù)的通道。
通過DMI接口,DMI分引擎可以獲取ATP發(fā)送給DMI的所有數(shù)據(jù)包。還可以對DMI進行以下操縱:設(shè)置司機號,設(shè)置車次號,設(shè)置列車長度,設(shè)置載頻等。
通過ATP接口平臺,ATP接口平臺分引擎可以對ATP進行以下操作:ATP上電,ATP斷電,激活駕駛臺,關(guān)閉駕駛臺,設(shè)置列車運行方向,發(fā)送軌道電路低頻和載頻信息,發(fā)送應(yīng)答器報文等;還可以獲取列車當前位置坐標、當前速度、當前加速度等。
為了對車載ATP功能進行自動測試,需要實時獲取車載ATP的狀態(tài)信息。車載ATP通過DMI向列車司機顯示列車運行的狀態(tài)信息[3],因此可以通過DMI獲取車載ATP的實時信息??梢岳脠D像識別技術(shù)識別DMI上的信息[4],但是這種方法比較復雜,實現(xiàn)難度比較大。本文采用直接與DMI通信,獲取DMI數(shù)據(jù)包的方法。為了可以通過DMI獲取有關(guān)車載ATP的數(shù)據(jù),需要在DMI分引擎和DMI之間建立交互數(shù)據(jù)的通信協(xié)議。
在DMI分引擎和DMI之間建立傳輸控制協(xié)議(TCP)。通過TCP,DMI分引擎可以對DMI進行以下操作:設(shè)置司機號,設(shè)置車次號,設(shè)置列車長度,設(shè)置載頻,設(shè)置列車運行等級,設(shè)置列車運行模式,設(shè)置RBC(無限閉塞中心)的ID(標識),設(shè)置RBC號碼,模擬按壓啟動按鈕、緩解按鈕、警惕按鈕、回復DMI文本消息等。
通過TCP,DMI向DMI分引擎發(fā)送以下信息:所有MMI數(shù)據(jù)包和所有的CTCS數(shù)據(jù)包。這些數(shù)據(jù)包中包含DMI按鈕狀態(tài)、DMI文本消息、DMI語言信息等內(nèi)容。
在CTCS-2級車載ATP功能測試案例中,經(jīng)常會遇到需要按壓DMI上按鈕的操作。例如,在列車運行過程中,當列車速度超過緊急制動速度時,車載ATP將實施緊急制動直到列車停車。列車停車后,DMI將提示司機緩解緊急制動,此時司機需要按壓DMI上的緩解按鈕。在自動測試中,需要將按壓緩解按鈕的命令寫在測試腳本中,當測試腳本判斷DMI出現(xiàn)按壓緩解按鈕的提示信息時,就將按壓緩解按鈕的命令發(fā)送給DMI。其步驟如下:
1)主引擎識別出當前一條腳本命令為“按壓DMI按鈕”。
2)主引擎將“按壓DMI按鈕”命令下達給DMI分引擎。
3)按照DMI分引擎與DMI之間的TCP,DMI分引擎將真實的按壓啟動按鈕命令下達給DMI。
4)DMI收到“按壓啟動按鈕”命令后,自動按壓啟動按鈕。
腳本自動按壓啟動按鈕原理如圖2所示。
圖2 腳本自動按壓啟動按鈕原理
在列車運行過程中,DMI經(jīng)常會出現(xiàn)文本消息。這些文本消息有些不需要司機進行任何操作。例如,列車以部分監(jiān)控模式出站,當滿足進入完全監(jiān)控模式的條件時,車載ATP自動轉(zhuǎn)入完全監(jiān)控模式,此時DMI顯示文本消息“進入完全監(jiān)控模式”,此條文本消息只是提示司機,不需要司機對DMI進行任何操作。有些文本消息需要司機確認,即可按壓DMI的確認按鈕。例如,在車載ATP上電成功后,DMI顯示文本消息“啟動確認”,需要司機按壓確認按鈕。有些文本消息需要司機確認或取消,即按壓DMI的確認按鈕或取消按鈕。例如在車載ATP上電成功后,DMI顯示文本消息“執(zhí)行制動測試”,如果需要執(zhí)行制動測試,則司機按壓確認按鈕,如果不需要執(zhí)行制動測試,則司機按壓取消按鈕。
在CTCS-2級車載ATP功能測試案例中,有些測試步驟的期望結(jié)果就是檢查DMI顯示某一條文本消息,并對該條文本消息進行確認或取消。現(xiàn)在,以文本消息“應(yīng)答器信息缺失”為例,說明在車載ATP功能自動測試中,測試腳本如何自動確認和取消DMI文本消息。
在列車運行過程中,當列車越過一個應(yīng)答器時,由于應(yīng)答器故障,車載設(shè)備在期望窗口內(nèi)未收到該應(yīng)答器報文,則DMI將顯示文本消息“應(yīng)答器信息缺失”,則需要確認該條文本消息。自動測試中腳本自動確認文本消息“應(yīng)答器信息缺失”的詳細步驟如下:
1)主引擎識別出當前一條腳本命令為“期望DMI文本消息”。
2)主引擎將“期望DMI文本消息”命令下達給DMI分引擎。
3)按照DMI分引擎與DMI之間的TCP,DMI分引擎將來自DMI的包含DMI文本消息的數(shù)據(jù)包發(fā)送給主引擎。
4)主引擎將包含DMI文本消息的數(shù)據(jù)包發(fā)送給腳本。
5)腳本解析包含DMI文本消息的數(shù)據(jù)包,判斷當前DMI文本消息是否是“應(yīng)答器信息缺失”。如果當前DMI文本消息是“應(yīng)答器信息缺失”,則期望DMI文本消息成功,結(jié)束循環(huán);如果當前DMI文本消息不是“應(yīng)答器信息缺失”,則期望DMI文本消息失敗,則繼續(xù)循環(huán)。
腳本自動確認DMI文本消息的原理如圖3所示。
對車載ATP功能進行測試時,有些測試步驟的期望結(jié)果是DMI輸出指定語音。例如,在列車運行過程中,當列車速度超過報警速度時,在車載ATP制動到目標速度過程中,DMI輸出“減速”語音;當列車速度超過緊急制動速度時,車載ATP實施緊急制動直到列車停車,列車停穩(wěn)后,DMI輸出“允許緩解”語音。下面以“允許緩解”語音為例,說明自動測試中測試腳本如何自動判斷DMI是否輸出指定語音。
圖3 腳本自動確認DMI文本消息原理
自動測試中腳本自動判斷DMI輸出語音“允許緩解”的詳細步驟如下:
1)主引擎識別出當前一條腳本命令為“期望DMI輸出語音”。
2)主引擎將“期望DMI輸出語音”命令下達給DMI分引擎。
3)按照DMI分引擎與DMI之間的TCP,DMI分引擎將來自DMI的包含DMI語音的數(shù)據(jù)包發(fā)送給主引擎。
4)主引擎將包含DMI語音的數(shù)據(jù)包發(fā)送給腳本。
5)腳本解析包含DMI語音的數(shù)據(jù)包,判斷當前DMI語音是否是“允許緩解”。如果當前DMI語音是“允許緩解”,則期望DMI語音成功,結(jié)束循環(huán);如果當前DMI語音不是“允許緩解”,則期望DMI語音失敗,則繼續(xù)循環(huán)。
腳本自動判斷DMI輸出語音的原理如圖4所示。
圖4 腳本自動判斷DMI輸出語音原理
對車載ATP功能進行測試時,在列車運行過程中,當列車速度超過最大常用制動速度時,DMI將顯示“最大常用制動圖標”。有些測試案例要求判斷DMI顯示“最大常用制動圖標”,但是在DMI所有數(shù)據(jù)包中,并沒有包含DMI圖標的數(shù)據(jù)包,所以不能使用判斷DMI輸出語音的方法去判斷DMI顯示圖標。
但是在DMI的動態(tài)數(shù)據(jù)包中,有一個變量保存著車載ATP的制動狀態(tài),通過該變量可以判斷列車是否處于最大常用制動狀態(tài)。假設(shè)DMI軟件是完全正確的,則通過該變量也就可以間接判斷出DMI是否顯示“最大常用制動圖標”。下面以“最大常用制動圖標”為例,說明自動測試中腳本如何判斷DMI是否顯示指定圖標。
自動測試中腳本自動判斷DMI顯示“最大常用制動圖標”的詳細步驟如下:
1)主引擎識別出當前一條腳本命令為判斷DMI顯示“最大常用制動圖標”,此圖標信息可以從DMI動態(tài)數(shù)據(jù)包中的制動狀態(tài)信息間接獲取,所以向主引擎發(fā)送“期望動態(tài)數(shù)據(jù)包”。
2)主引擎將“期望動態(tài)數(shù)據(jù)包”命令下達給DMI分引擎。
3)按照DMI分引擎與DMI之間的TCP,DMI分引擎將來自DMI的“動態(tài)數(shù)據(jù)包”發(fā)送給主引擎。
4)主引擎將“動態(tài)數(shù)據(jù)包”發(fā)送給腳本。
5)腳本解析“動態(tài)數(shù)據(jù)包”,判斷動態(tài)數(shù)據(jù)包中包含的制動狀態(tài)是否是“最大常用制動狀態(tài)”。如果當前制動狀態(tài)是“最大常用制動狀態(tài)”,則判斷DMI顯示“最大常用制動圖標”成功,結(jié)束循環(huán);如果當前制動圖標不是“最大常用制動狀態(tài)”,則判斷DMI顯示“最大常用制動圖標”失敗,則繼續(xù)循環(huán)。
腳本自動判斷DMI顯示圖標的原理如圖5所示。
圖5 腳本自動判斷DMI顯示圖標原理
在列車運行過程中,DMI上會顯示內(nèi)容豐富的動態(tài)圖像信息。有些動態(tài)圖像信息是不可測的,比如,列車在減速過程中,列車離制動的時間越近,預警時間指示圖標越大。對于另一些動態(tài)圖像信息,將測試功能放在DMI分引擎中,腳本告訴DMI分引擎要測試的功能,DMI分引擎執(zhí)行測試,再將測試結(jié)果報告給腳本,卻是可以實現(xiàn)的。例如,對車尾保持功能的測試。
對車載ATP功能進行測試時,列車啟動后,以部分模式行車,列車車頭經(jīng)過應(yīng)答器后,轉(zhuǎn)為完全監(jiān)控模式。在列車車尾沒有經(jīng)過應(yīng)答器之前,列車應(yīng)該保持原有運行速度;當列車車尾越過應(yīng)答器之后,列車才開始加速運行,即需要判斷車尾保持功能。在對車載ATP功能進行自動測試時,腳本自動判斷車尾保持功能的步驟如下:
1)主引擎識別出當前一條腳本命令為“測試車尾保持命令”。
2)主引擎將“測試車尾保持命令”下達給對應(yīng)的DMI分引擎。
3)DMI分引擎實時判斷列車是否位于測試車尾保持區(qū)域。當列車位于測試車尾保持區(qū)域,DMI分引擎向DMI發(fā)送獲取允許速度命令,DMI向DMI分引擎回復列車當前允許速度。DMI分引擎判斷列車當前允許速度是否等于要求的車尾保持速度。如果列車當前允許速度不等于車尾保持速度,則分引擎向主引擎報告“車尾保持失敗”,主引擎向腳本報告“車尾保持失敗”;如果列車當前允許速度等于車尾保持速度,則不做任何處理,繼續(xù)下一次循環(huán)。當列車出了測試車尾保持區(qū)域,則DMI分引擎向主引擎報告“車尾保持成功”,主引擎向腳本報告“車尾保持成功”。
腳本自動判斷車尾保持功能的原理如圖6所示。
圖6 腳本自動判斷車尾保持功能原理
在對CTCS-2級車載ATP進行人工測試過程中,許多測試步驟的期望結(jié)果是判斷DMI是否顯示指定文本消息、是否發(fā)出指定語音、是否顯示指定圖標等。本文介紹了在對車載ATP進行自動測試過程中,測試腳本自動按壓DMI按鈕、自動確認或取消DMI文本信息、自動判斷DMI輸出語音、自動判斷DMI顯示圖標、自動判斷DMI動態(tài)圖像信息的基本原理和方法。通過開發(fā)和實驗室驗證,證明文中所述方法是正確的,通過判斷DMI的各種信息,可以實現(xiàn)對車載ATP功能的自動測試,具有研究和應(yīng)用價值。
[1]趙麗.基于TCL腳本的自動化測試工具的研究與實現(xiàn)[J].信息化研究,2009,35(11):28.
[2]蔣云,趙佳寶.自動化測試腳本自動生成技術(shù)的研究[J].計算機技術(shù)與發(fā)展,2007,17(7):4.
[3]朱磊.基于可重用框架的CTCS仿真車載DMI研究與實現(xiàn)[D].北京:北京交通大學,2009.
[4]張勇,覃燕,李凱,等.CTCS-3級列控系統(tǒng)車載設(shè)備人機界面信息的識別方法[J].中國鐵道科學,2010,31(4):92.
[5]林穎,王長林.車載列車自動保護系統(tǒng)對空轉(zhuǎn)及滑行的檢測與校正方法研究[J].城市軌道交通研究,2011(3):28.