張友兵,張 波
(北京全路通信信號(hào)研究設(shè)計(jì)院有限公司 列車(chē)自動(dòng)控制研究所, 北京 100073)
車(chē)載ATP(Automatic Train Protection,列車(chē)超速防護(hù)系統(tǒng))作為CTCS-2級(jí)列控系統(tǒng)的重要組成部分,影響著列車(chē)的行車(chē)安全。在將車(chē)載ATP投入應(yīng)用之前,必須對(duì)其進(jìn)行嚴(yán)格、完備的測(cè)試。
當(dāng)前,對(duì)車(chē)載ATP進(jìn)行的測(cè)試是以人工為主的測(cè)試,需要測(cè)試人員控制整個(gè)測(cè)試過(guò)程,判斷測(cè)試成功與否等。由于人工干預(yù)測(cè)試條件的控制和轉(zhuǎn)換,執(zhí)行效率低下。同時(shí),要求測(cè)試人員具有堅(jiān)實(shí)的專(zhuān)業(yè)知識(shí)和豐富的測(cè)試經(jīng)驗(yàn),特別是針對(duì)回歸測(cè)試,重復(fù)的測(cè)試工作量很大。
本文主要介紹了一種基于TCL腳本語(yǔ)言的針對(duì)車(chē)載ATP的自動(dòng)測(cè)試平臺(tái),說(shuō)明該自動(dòng)測(cè)試平臺(tái)的工作原理,并通過(guò)平臺(tái)開(kāi)發(fā)和實(shí)驗(yàn)室實(shí)際測(cè)試,證明該自動(dòng)測(cè)試平臺(tái)是可行的、有用的和高效的。
TCL(Tool Command Language)語(yǔ)言是一種命令腳本化語(yǔ)言。它是基于字符串的解釋型命令語(yǔ)言,是一種簡(jiǎn)明、高效、可移植性好的編程語(yǔ)言,具有可擴(kuò)展、支持重用、簡(jiǎn)單易學(xué)等特點(diǎn)。TCL語(yǔ)言作為應(yīng)用的粘合劑,能夠無(wú)縫地將很多應(yīng)用集成在一起,并且每一條TCL語(yǔ)句都可以理解成命令參數(shù)形式[1~2]。TCL提供了標(biāo)準(zhǔn)語(yǔ)法,并實(shí)現(xiàn)了許多功能,利用TCL開(kāi)發(fā)測(cè)試腳本方便而簡(jiǎn)單[3~4]。
在TCL語(yǔ)言中,提供了許多強(qiáng)大的命令,其中Expect命令尤為突出。每次Expect命令操作完成,運(yùn)行結(jié)果將保存在本地環(huán)境變量 $expect_out中。這允許腳本收集這些信息給用戶(hù)以相應(yīng)的反饋,同時(shí)也允許根據(jù)當(dāng)前情況發(fā)送相對(duì)應(yīng)的指令。Expect命令的這個(gè)功能為測(cè)試腳本和車(chē)載ATP自動(dòng)交互信息提供了基礎(chǔ)。在下面將要介紹的測(cè)試案例腳本與車(chē)載ATP之間的“信息交互方式2”和“信息交互方式3”都使用了Expect命令。
車(chē)載ATP自動(dòng)測(cè)試平臺(tái)結(jié)構(gòu)如圖1所示。從圖1可以看出,除了被測(cè)設(shè)備車(chē)載ATP外,車(chē)載ATP自動(dòng)測(cè)試平臺(tái)包含4個(gè)部分:測(cè)試腳本、主引擎、分引擎和測(cè)試接口。
圖1 車(chē)載ATP自動(dòng)測(cè)試平臺(tái)結(jié)構(gòu)圖
測(cè)試腳本又細(xì)分為T(mén)CL函數(shù)庫(kù)、測(cè)試案例腳本兩個(gè)部分。將測(cè)試案例中每一項(xiàng)測(cè)試內(nèi)容封裝成函數(shù),構(gòu)成了TCL函數(shù)庫(kù)。編寫(xiě)測(cè)試案例腳本時(shí),只需根據(jù)文字描述的測(cè)試案例的每一項(xiàng)測(cè)試內(nèi)容調(diào)用TCL函數(shù)庫(kù)中與之應(yīng)的函數(shù),將文字描述的測(cè)試案例腳本化,就得到了測(cè)試案例腳本。
主引擎負(fù)責(zé)依次讀取測(cè)試案例腳本的每一句腳本命令,根據(jù)protocol buf fer協(xié)議將腳本命令發(fā)送給分引擎,另外主引擎還要將分引擎的數(shù)據(jù)傳遞給腳本。主引擎是測(cè)試案例腳本與分引擎之間交互數(shù)據(jù)的橋梁。
分引擎從主引擎獲取測(cè)試案例腳本命令,根據(jù)命令內(nèi)容執(zhí)行相應(yīng)的具體操作,并向主引擎回復(fù)車(chē)載ATP的實(shí)時(shí)信息等。在CTCS-2級(jí)車(chē)載ATP自動(dòng)測(cè)試系統(tǒng)中,包含列車(chē)動(dòng)力學(xué)分引擎、DMI分引擎和ATP接口平臺(tái)分引擎。
測(cè)試接口是各個(gè)分引擎和被測(cè)車(chē)載ATP之間交互數(shù)據(jù)的通道。
通過(guò)DMI接口,DMI分引擎可以獲取ATP發(fā)送給DMI的所有MMI包和CTCS包。還可以對(duì)DMI進(jìn)行以下操縱:設(shè)置司機(jī)號(hào)、設(shè)置車(chē)次號(hào)、設(shè)置列車(chē)長(zhǎng)度、設(shè)置載頻等。
ATP接口平臺(tái)分引擎可以對(duì)ATP進(jìn)行以下操作: ATP上電、ATP斷電、激活駕駛臺(tái)、關(guān)閉駕駛臺(tái)、設(shè)置列車(chē)運(yùn)行方向等。還可以獲取列車(chē)當(dāng)前位置坐標(biāo)、當(dāng)前速度、當(dāng)前加速度等。
為了對(duì)車(chē)載ATP進(jìn)行自動(dòng)測(cè)試,需要腳本與車(chē)載ATP自動(dòng)交互信息。根據(jù)需要,設(shè)計(jì)了以下3種信息交互方式,就可以完成自動(dòng)測(cè)試中腳本與車(chē)載ATP交互信息的所有需求。
信息交互方式1如圖2所示,它適用于從腳本到車(chē)載ATP的單方向的信息傳遞。通過(guò)方式1,自動(dòng)測(cè)試案例腳本可以控制車(chē)載ATP上電/斷電、激活/關(guān)閉駕駛臺(tái)、設(shè)置列車(chē)運(yùn)行方向、設(shè)置/取消ATP休眠、設(shè)置/取消ATP隔離、設(shè)置軌道電路低頻/載頻信息、設(shè)置應(yīng)答器報(bào)文、設(shè)置列車(chē)速度/加速度、設(shè)置列車(chē)初始位置等?,F(xiàn)在,以通過(guò)腳本控制車(chē)載ATP上電過(guò)程為例說(shuō)明該機(jī)制,其步驟如下:
(1) 主引擎識(shí)別出當(dāng)前一條腳本命令為“車(chē)載ATP上電”;
(2) 主引擎將“車(chē)載ATP上電”下達(dá)給對(duì)應(yīng)的分引擎;
(3) 分引擎將真實(shí)的車(chē)載ATP上電命令下達(dá)給車(chē)載ATP;
(4) 車(chē)載ATP收到上電命令,執(zhí)行上電命令。
圖2 信息交互方式1
信息交互方式2如圖3所示,它適用于腳本與車(chē)載ATP之間的雙方向的信息傳遞,分引擎對(duì)車(chē)載ATP的信息不做任何處理,只是透明地傳遞給腳本。通過(guò)方式2,自動(dòng)測(cè)試案例腳本可以獲取列車(chē)當(dāng)前位置坐標(biāo)、獲取列車(chē)當(dāng)前速度/加速度、獲取列車(chē)當(dāng)前運(yùn)行的模式/等級(jí)等?,F(xiàn)在,以通過(guò)腳本獲取列車(chē)當(dāng)前位置坐標(biāo)為例,說(shuō)明該機(jī)制,其步驟如下:
(1)主引擎識(shí)別出當(dāng)前一條腳本命令為“判斷列車(chē)當(dāng)前位置是否等于期盼位置?”;
(2)主引擎將“獲取列車(chē)位置”命令下達(dá)給對(duì)應(yīng)的分引擎;
(3)分引擎實(shí)時(shí)從DMI接收車(chē)載ATP報(bào)告的列車(chē)當(dāng)前位置,并將列車(chē)當(dāng)前位置發(fā)送給主引擎;
(4)主引擎將列車(chē)當(dāng)前位置發(fā)送給腳本,腳本判斷列車(chē)當(dāng)前位置是否等于期盼位置。如果列車(chē)當(dāng)前位置不等于期盼位置,則跳轉(zhuǎn)到步驟(1)。如果列車(chē)當(dāng)前位置等于期盼位置,則認(rèn)為期盼列車(chē)位置成功,結(jié)束此循環(huán)。
圖3 信息交互方式2
信息交互方式3如圖4所示,它適用于腳本與車(chē)載ATP之間的雙方向的信息傳遞,對(duì)于車(chē)載ATP某些功能進(jìn)行測(cè)試,如果將邏輯處理完全放在腳本中,勢(shì)必會(huì)增加腳本的復(fù)雜程度。為了降低腳本的復(fù)雜程度,可以將有些邏輯處理放在分引擎中。腳本向分引擎下達(dá)命令,分引擎根據(jù)實(shí)時(shí)信息進(jìn)行邏輯處理,將結(jié)果回送給腳本。通過(guò)方式3,自動(dòng)測(cè)試案例腳本可以測(cè)試車(chē)尾保持功能,測(cè)試DMI沒(méi)有發(fā)出指定聲音或報(bào)警語(yǔ)音等。現(xiàn)在,以測(cè)試車(chē)尾保持功能為例,說(shuō)明該機(jī)制,其步驟如下:
(1) 主引擎識(shí)別出當(dāng)前一條腳本命令為“測(cè)試車(chē)尾保持命令”;
(2) 主引擎將“測(cè)試車(chē)尾保持命令”下達(dá)給對(duì)應(yīng)的分引擎;
(3) 分引擎實(shí)時(shí)判斷列車(chē)是否位于測(cè)試車(chē)尾保持區(qū)域。當(dāng)列車(chē)位于測(cè)試車(chē)尾保持區(qū)域,分引擎向DMI發(fā)送獲取允許速度命令,DMI向分引擎回復(fù)列車(chē)當(dāng)前允許速度。DMI判斷列車(chē)當(dāng)前允許速度是否等于要求的車(chē)尾保持速度。如果列車(chē)當(dāng)前允許速度不等于車(chē)尾保持速度,則分引擎向主引擎報(bào)告“車(chē)尾保持失敗”,主引擎向腳本報(bào)告“車(chē)尾保持失敗”。如果列車(chē)當(dāng)前允許速度等于車(chē)尾保持速度,則不做任何處理,繼續(xù)下一次循環(huán)。當(dāng)列車(chē)出了測(cè)試車(chē)尾保持區(qū)域,則分引擎向主引擎報(bào)告“車(chē)尾保持成功”,主引擎向腳本報(bào)告“車(chē)尾保持成功”。
圖4 信息交互方式3
在軟件方面,需要實(shí)現(xiàn)主引擎、分引擎和自動(dòng)測(cè)試腳本。其中,主引擎和分引擎使用C#語(yǔ)言開(kāi)發(fā),自動(dòng)測(cè)試腳本使用TCL腳本語(yǔ)言開(kāi)發(fā)。為了提高測(cè)試腳本的編寫(xiě)效率和復(fù)用程度,可以將測(cè)試車(chē)載ATP每一項(xiàng)功能的TCL代碼分別封裝成函數(shù),這些函數(shù)一起構(gòu)成了TCL函數(shù)庫(kù)。在根據(jù)文字描述的測(cè)試案例編寫(xiě)測(cè)試案例腳本時(shí),根據(jù)文字描述的測(cè)試案例的每一步要測(cè)試的車(chē)載ATP功能,依次調(diào)用TCL函數(shù)庫(kù)中與之對(duì)應(yīng)的函數(shù),即可完成測(cè)試案例腳本的編寫(xiě)。測(cè)試案例腳本的編寫(xiě)過(guò)程,就是將文字描述的測(cè)試案例轉(zhuǎn)化成TCL腳本的測(cè)試案例。
在硬件方面,將主引擎、分引擎、TCL函數(shù)庫(kù)、測(cè)試案例腳本布置在一臺(tái)電腦上,再將該電腦通過(guò)專(zhuān)用的連接線(xiàn)連接到DMI上,并通過(guò)有線(xiàn)網(wǎng)絡(luò)或無(wú)線(xiàn)網(wǎng)絡(luò)連到ATP接口平臺(tái)。最再將ATP接口平臺(tái)和車(chē)載ATP連接起來(lái)。需要說(shuō)明的是,DMI和車(chē)載ATP本來(lái)就存在連接,不需要再做連接。
至此,對(duì)車(chē)載ATP進(jìn)行自動(dòng)測(cè)試的軟硬件條件都具備了,啟動(dòng)自動(dòng)測(cè)試,通過(guò)測(cè)試案例腳本中腳本順序執(zhí)行,即可完成對(duì)車(chē)載ATP的測(cè)試。
在CTCS-2級(jí)列控系統(tǒng)中,為了保證行車(chē)安全,在將車(chē)載ATP投入實(shí)際使用之前,必須對(duì)其進(jìn)行嚴(yán)格測(cè)試。人工測(cè)試存在耗費(fèi)時(shí)間、測(cè)試人員工作壓力大等缺陷。本文提出了一種基于TCL腳本的車(chē)載ATP自動(dòng)測(cè)試平臺(tái),并對(duì)該平臺(tái)的基本原理和實(shí)現(xiàn)方式做了介紹,通過(guò)開(kāi)發(fā)和實(shí)驗(yàn)室驗(yàn)證,證明該車(chē)載ATP自動(dòng)測(cè)試平臺(tái)能夠?qū)崿F(xiàn)對(duì)車(chē)載ATP進(jìn)行自動(dòng)測(cè)試,能夠降低測(cè)試人員的工作強(qiáng)度,能夠?qū)崿F(xiàn)測(cè)試結(jié)果的自動(dòng)判定,具有研究和應(yīng)用價(jià)值。
[1] John K. Ousterhout Ken Jones. Tcl/Tk入門(mén)經(jīng)典[M]. 北京:清華大學(xué)出版社,2010.
[2]趙 利. 基于TCL腳本的自動(dòng)化測(cè)試工具的研究與實(shí)現(xiàn)[J].信息化研究,2009,35(11).
[3]魏 玄,申 敏. 基于TCL腳本語(yǔ)言的AT指令自動(dòng)化測(cè)試技術(shù)的研究[J]. 重慶郵電大學(xué)學(xué)報(bào),2008,20(5).
[4]付文霞. 腳本在面向?qū)ο髮?shí)時(shí)數(shù)據(jù)庫(kù)中的應(yīng)用研究[J]. 科學(xué)技術(shù)與工程,2008,8(17).