柳 新
(1.北京全路通信信號(hào)研究設(shè)計(jì)院集團(tuán)有限公司,北京 100070;2.北京市高速鐵路運(yùn)行控制系統(tǒng)工程技術(shù)研究中心,北京 100070)
配置數(shù)據(jù)作為鐵路信號(hào)安全控制系統(tǒng)的實(shí)現(xiàn)基礎(chǔ),在整個(gè)技術(shù)流程中起到關(guān)鍵的作用。而現(xiàn)有的DS60 聯(lián)鎖配置數(shù)據(jù)自動(dòng)生成方法均為面向國(guó)內(nèi)的高鐵聯(lián)鎖系統(tǒng),無(wú)法兼容東南亞泰國(guó)地區(qū)的輸入形式以及顯示規(guī)范。
而隨著高鐵技術(shù)的不斷發(fā)展,"一帶一路"倡議的大方向下,海外聯(lián)鎖設(shè)備功能不斷擴(kuò)展,數(shù)據(jù)配置工作也日趨復(fù)雜、繁重,人工配置數(shù)據(jù)已無(wú)法滿足工期需求。為緩解人工配置工作量大、效率低、配置過(guò)程依賴人員技術(shù)水平等問(wèn)題,實(shí)現(xiàn)一種可應(yīng)用于泰國(guó)計(jì)算機(jī)聯(lián)鎖系統(tǒng)的配置數(shù)據(jù)自動(dòng)生成方法,能夠兼容當(dāng)?shù)靥赜械膹?fù)雜輸入形式并滿足顯示規(guī)范,自動(dòng)生成泰國(guó)計(jì)算機(jī)聯(lián)鎖所需的配置數(shù)據(jù)。泰國(guó)聯(lián)鎖軟件編制過(guò)程如圖1 所示。
圖1 泰國(guó)聯(lián)鎖軟件編制過(guò)程Fig.1 Programming process of Thai interlocking software
工具以設(shè)計(jì)文件為輸入,采用可視化圖形編程思路,依照站場(chǎng)設(shè)計(jì)平面圖建立起以道岔、信號(hào)機(jī)、區(qū)段等基本圖形對(duì)象構(gòu)成的站場(chǎng)圖形。用戶在軟件界面內(nèi)實(shí)現(xiàn)繪制、儲(chǔ)存圖形單元功能;同時(shí)在后端建立拓?fù)淠P?,將圖形進(jìn)行連接,加入聯(lián)鎖表的導(dǎo)入、解析模塊,將表內(nèi)數(shù)據(jù)按數(shù)據(jù)結(jié)構(gòu)需求分類進(jìn)行解析,結(jié)合拓?fù)潢P(guān)系自動(dòng)生成計(jì)算機(jī)聯(lián)鎖系統(tǒng)所需的聯(lián)鎖數(shù)據(jù)。
因此,分析出本工具軟件的基本功能如下。
1)圖形處理模塊及人機(jī)交互界面。實(shí)現(xiàn)站內(nèi)設(shè)備圖元的繪制、拖動(dòng)、翻轉(zhuǎn)等功能。并建立設(shè)備對(duì)象間的拓?fù)潢P(guān)系模型。
2)導(dǎo)入及解析功能。將泰國(guó)聯(lián)鎖表、道岔控制表、閉塞表、道口表、采驅(qū)表等導(dǎo)入,并對(duì)于每類數(shù)據(jù)需要的信息進(jìn)行分類提取、存儲(chǔ)。
3)泰國(guó)聯(lián)鎖數(shù)據(jù)生成。根據(jù)已錄入的表信息、站場(chǎng)圖形對(duì)象及設(shè)備間的鏈表關(guān)系,以及各設(shè)備的屬性、初始化、配置文件等輸出聯(lián)鎖數(shù)據(jù).c 以及.dat 文件。
4)控顯數(shù)據(jù)的生成。實(shí)現(xiàn)控顯軟件需要的數(shù)據(jù)文件,主要包括站場(chǎng)設(shè)備名稱、坐標(biāo)、各類配置信息等。
工具總體流程如圖2 所示。
圖2 泰國(guó)聯(lián)鎖數(shù)據(jù)自動(dòng)生成工具功能流程示意Fig.2 Functional flow of Thai interlocking data automatic generation tool
面向泰國(guó)DS60 聯(lián)鎖的配置數(shù)據(jù)生成工具由若干個(gè)功能模塊組成,每個(gè)模塊負(fù)責(zé)實(shí)現(xiàn)自己的邏輯功能。軟件系統(tǒng)結(jié)構(gòu)按功能分為前端和后端兩大部分,系統(tǒng)前端包括主框架、基本站場(chǎng)視圖、設(shè)備創(chuàng)建和繪制(標(biāo)準(zhǔn)圖元庫(kù)界面);系統(tǒng)后端包括站場(chǎng)設(shè)備管理、圖形搜索、數(shù)據(jù)建模和數(shù)據(jù)輸出模塊,功能模塊結(jié)構(gòu)如圖3 所示。設(shè)計(jì)采用面向?qū)ο蟮募夹g(shù),從圖元的繪制到數(shù)據(jù)的生成采用類進(jìn)行對(duì)象的封裝,各模塊間通過(guò)接口方法進(jìn)行訪問(wèn)。軟件架構(gòu)如圖3所示。
圖3 軟件架構(gòu)Fig.3 Software architecture
各模塊功能如下。
1) 主框架模塊:是聯(lián)鎖數(shù)據(jù)配置軟件的主框架模塊,實(shí)現(xiàn)了人機(jī)交互界面功能。
2) 基本站場(chǎng)視圖:實(shí)現(xiàn)了基本站場(chǎng)的繪制和顯示,實(shí)現(xiàn)了站場(chǎng)的拖動(dòng)、縮放等功能。
3) 標(biāo)準(zhǔn)圖元庫(kù)界面:實(shí)現(xiàn)了各類設(shè)備的圖形化顯示,完全遵從泰國(guó)地區(qū)的顯示規(guī)范。
4) 站場(chǎng)設(shè)備管理:完成圖紙中各圖元對(duì)象的存儲(chǔ)、管理,實(shí)現(xiàn)圖元的增、刪、改、查等操作。
5) 圖形搜索模塊:根據(jù)坐標(biāo)位置信息搜索圖元,建立各設(shè)備圖元的鏈接關(guān)系。
6) 數(shù)據(jù)建模模塊:按聯(lián)鎖業(yè)務(wù)搜索建立聯(lián)鎖表等數(shù)據(jù)結(jié)構(gòu)模型。
7) 數(shù)據(jù)配置輸出:根據(jù)數(shù)據(jù)模型完成聯(lián)鎖數(shù)據(jù)的輸出功能。
下面重點(diǎn)介紹圖形及用戶交互界面設(shè)計(jì)、輸入文件導(dǎo)入處理、數(shù)據(jù)輸出模塊設(shè)計(jì)的設(shè)計(jì)思路。
2.2.1 圖形及用戶交互界面設(shè)計(jì)
主框架界面基于windows 系統(tǒng)開(kāi)發(fā),包含框架主窗口、視圖、菜單工具欄、設(shè)備的屬性對(duì)話框等。主框架負(fù)責(zé)處理用戶的各種輸入消息,并將各種請(qǐng)求分派給自己或者其他模塊。系統(tǒng)主框架是多文檔結(jié)構(gòu),具備同時(shí)打開(kāi)顯示多個(gè)站場(chǎng)圖形文件功能。
站場(chǎng)圖可以顯示通過(guò)標(biāo)準(zhǔn)圖庫(kù)創(chuàng)建的11 類設(shè)備對(duì)象,包括信號(hào)機(jī)、道岔、區(qū)段、區(qū)間口、道口、限界、按鈕、站臺(tái)、信號(hào)樓、信息窗、文本、健康燈和系統(tǒng)時(shí)間等,并實(shí)現(xiàn)了站場(chǎng)的縮放、拖拽、設(shè)備的復(fù)制創(chuàng)建等,軟件每一類設(shè)備的圖元繪制風(fēng)格都完全契合泰國(guó)地區(qū)的顯示規(guī)范要求,并精確到像素級(jí),保證生成坐標(biāo)數(shù)據(jù)與控顯顯示規(guī)范相契合。基本圖元如圖4 所示。
圖4 基本圖元繪制要求Fig.4 Basic primitive drawing requirements
2.2.2 數(shù)據(jù)生成模塊設(shè)計(jì)
1)輸入文件導(dǎo)入處理、數(shù)據(jù)輸出模塊設(shè)計(jì)
泰國(guó)聯(lián)鎖數(shù)據(jù)生成的許多信息都在泰版聯(lián)鎖表中,因此工具需要將其導(dǎo)入并解析、處理,得到關(guān)鍵信息。工具導(dǎo)入各類表單、數(shù)據(jù)建模、數(shù)據(jù)輸出的流程如圖5 所示。其中CMainView 是軟件的主體顯示框架類;CTLLsIntput 是軟件聯(lián)鎖輸入的大類;CInputTOOL 是軟件實(shí)現(xiàn)輸入需要的方法類;CTLLsOutput 是實(shí)現(xiàn)輸出的大類;CDrawmanager 是軟件實(shí)現(xiàn)繪圖、管理圖中設(shè)備對(duì)象的大類。聯(lián)鎖表等文件導(dǎo)入后以字符串形式存儲(chǔ)在內(nèi)存中。而由于表中的信息繁雜,且每列格式均不同,需要對(duì)每一列分別處理以提取關(guān)鍵信息,并存儲(chǔ)進(jìn)相應(yīng)的結(jié)構(gòu)體對(duì)象中。在用戶交互界面收到輸出數(shù)據(jù)命令后,再?gòu)慕Y(jié)構(gòu)體對(duì)象組中輸出為數(shù)據(jù)文件的格式。
圖5 導(dǎo)入表單、數(shù)據(jù)建模、數(shù)據(jù)輸出流程Fig.5 Form importing, data modeling and data output process
2)泰國(guó)聯(lián)鎖表特點(diǎn)分析及具體數(shù)據(jù)解析方法
泰版聯(lián)鎖表(部分)如圖6 所示,其中每行對(duì)應(yīng)一條進(jìn)路,每列則對(duì)應(yīng)不同的信息,且其格式往往繁瑣、奇特,需要根據(jù)每一列的不同情況設(shè)計(jì)不同的解析邏輯。圖6 中包含了接近延長(zhǎng)(K 列)、區(qū)間側(cè)防(U 列)等信息,以K 列表示的接近延長(zhǎng)信息為例,其有帶多層嵌套括號(hào)表達(dá)式的接近延長(zhǎng)信息,需要根據(jù)由外至內(nèi)、由右向左的規(guī)則依次配置設(shè)備代碼及狀態(tài),如有并列括號(hào)的情況還需由并列項(xiàng)開(kāi)始拆分為兩條接近延長(zhǎng)信息;其他進(jìn)路還具有帶“WHEN CLEARED WITH”字樣的描述字符串等,且僅此一列信息就有3 類情況需要分別進(jìn)行特殊處理。再以U 列的區(qū)間側(cè)防數(shù)據(jù)為例,其中包含多層括號(hào)嵌套的復(fù)雜字符串及等號(hào)分割的情況,也需特殊處理。
圖6 泰國(guó)聯(lián)鎖表Fig.6 Thai interlocking table
由于篇幅原因,在此只以K 列數(shù)據(jù)(接近延長(zhǎng))為例詳細(xì)說(shuō)明數(shù)據(jù)解析邏輯設(shè)計(jì)。其所需的信息為進(jìn)路中接近延長(zhǎng)區(qū)段以及包含的道岔、信號(hào)機(jī)設(shè)備代碼及狀態(tài)。對(duì)應(yīng)區(qū)段狀態(tài)分為空閑、占用;道岔分為定位、反位;信號(hào)機(jī)狀態(tài)分為YES 及NO。具體狀態(tài)在圖6 中有所表示,道岔名后帶有“N”即為定位,“R”為反位;信號(hào)機(jī)名稱后帶有“N”即為NO,否則為YES;區(qū)段均為空閑。其在表中一共可分為3 大類情況進(jìn)行處理,具體解析邏輯設(shè)計(jì)如下。
a.形如:1-1BT 1-1AT 151-2T 139-1T
此情況最為簡(jiǎn)單,按空格劃分設(shè)備名后在圖中遍歷尋找設(shè)備代碼,并將設(shè)備代碼、設(shè)備對(duì)應(yīng)狀態(tài)依次填入數(shù)據(jù)結(jié)構(gòu)中。
b.帶有“WHEN CLEARED WITH”字樣
* 形如WHEN CLEARED WITH 1-1AT OR 1-1BT OCC 60S。
此情況需要去除“WITH”前的所有字符,去除“OR”后方的所有字符,余下部分字符串即為設(shè)備名,將其在圖中搜索,在數(shù)據(jù)結(jié)構(gòu)中填寫設(shè)備代碼及其對(duì)應(yīng)的設(shè)備狀態(tài)即可。
*形如WHEN CLEARED WITH 61T OCC 60S%B[2-4T 2-72T102BT(61T OR 61T OCC 60S) AFTER 2-4(8M)] 。
此情況較前種情況多了“%B”以及方括號(hào)“[] ”。需將去除“WITH”前的所有字符,將括號(hào)中信息去除,并將自“OCC”以后的字符串去除,余下部分即為設(shè)備名,將其在圖中搜索,在數(shù)據(jù)結(jié)構(gòu)中填寫設(shè)備代碼及其對(duì)應(yīng)的設(shè)備狀態(tài)即可。
c.括號(hào)嵌套字符串
*無(wú)并列括號(hào)的情況,形如:62T ((102B(( 2-2T OR 2-4N) 2-4T 2-72T OR 302N) OR R102) OR R114)。
此情況的進(jìn)路只有一條接近延長(zhǎng)信息,需按照括號(hào)由外向內(nèi),先右后左的順序進(jìn)行填寫。括號(hào)外的62T 不配置。
*有并列括號(hào)的情況,如62T(101AT((1-1BT OR 1-3N)1-3T 1-71T OR 301N)OR R101)(101BT((3-1BT OR 3-3N)3-3T 3-71T OR 303N)OR N103) OR R113 OR R101)。
此情況需將((1-1BT OR 1-3N)1-3T 1-71T OR 301N)OR R101) 及(101BT((3-1BT OR 3-3N)3-3T 3-71T OR 303N)OR N103)拆分成兩條并列關(guān)系的兩條接近數(shù)據(jù),再分別加上共享的外層(101AT OR R101)。即:101 道岔、113 道岔、101AT、101 道岔、301 信號(hào)、1-71T、1-3T、1-3 信號(hào)、1-1BT 以及101 道岔、113 道岔、101AT、103 道岔、101BT,303 信號(hào)、3-3T、3-71T、3-3 信號(hào)和3-1BT。
數(shù)據(jù)輸出部分則按照接近延長(zhǎng)數(shù)據(jù)結(jié)構(gòu)的定義依次輸出。將解析出的設(shè)備名在圖形庫(kù)中遍歷搜索器設(shè)備代碼、所屬進(jìn)路代碼、設(shè)備狀態(tài)等信息,并輸出為標(biāo)準(zhǔn)數(shù)據(jù)格式。
按設(shè)計(jì)思路進(jìn)行工具開(kāi)發(fā),泰國(guó)聯(lián)鎖數(shù)據(jù)自動(dòng)生成工具可實(shí)現(xiàn)泰國(guó)站場(chǎng)圖的構(gòu)建、聯(lián)鎖表導(dǎo)入以及聯(lián)鎖、控顯數(shù)據(jù)的自動(dòng)生成。本文以泰國(guó)BBU 站的聯(lián)鎖數(shù)據(jù)為例,介紹工具在數(shù)據(jù)生成中的應(yīng)用。
以泰國(guó)BBU 站為例,以站場(chǎng)設(shè)計(jì)藍(lán)圖為輸入,在工具中繪制設(shè)備、構(gòu)建站場(chǎng)模型,并顯示設(shè)備拓?fù)溥B接關(guān)系,如圖7 所示。
圖7 BBU站拓?fù)潢P(guān)系Fig.7 BBU station topology relationship
使用工具將聯(lián)鎖表、道岔控制表、閉塞表、道口控制表等輸入文件導(dǎo)入到上文3.1 中繪制的站場(chǎng)模型中,文件可以正常導(dǎo)入。使用工具生成泰國(guó)聯(lián)鎖數(shù)據(jù)。生成的泰國(guó)BBU 站聯(lián)鎖數(shù)據(jù)共17 716 行,將工具自動(dòng)生成的數(shù)據(jù)與人工配置的樣例數(shù)據(jù)對(duì)比,數(shù)據(jù)無(wú)差異,編譯聯(lián)鎖軟件進(jìn)行功能測(cè)試,功能正常。并已應(yīng)用該工具進(jìn)行泰國(guó)其他站場(chǎng)聯(lián)鎖數(shù)據(jù)的配置工作。
泰國(guó)聯(lián)鎖數(shù)據(jù)自動(dòng)生成工具主要實(shí)現(xiàn)站場(chǎng)模型構(gòu)建,泰版聯(lián)鎖表、閉塞表、道岔控制表等輸入文件的導(dǎo)入解析以及泰國(guó)聯(lián)鎖數(shù)據(jù)的自動(dòng)生成功能。解決人工配置泰國(guó)聯(lián)鎖數(shù)據(jù)的難題,提高編制聯(lián)鎖數(shù)據(jù)的自動(dòng)化程度與效率。目前泰國(guó)聯(lián)鎖數(shù)據(jù)自動(dòng)生成工具已投入使用,隨著工具功能的不斷完善,數(shù)據(jù)配置人員工作效率明顯提高,現(xiàn)已成為泰國(guó)聯(lián)鎖數(shù)據(jù)配置環(huán)節(jié)不可缺少的關(guān)鍵部分。