胡 旭
(通號(hào)城市軌道交通技術(shù)有限公司,北京 100070)
城軌CBTC系統(tǒng)信號(hào)設(shè)計(jì)人員以聯(lián)鎖設(shè)備集中站為界限,將各集中站的進(jìn)路、道岔、軌道區(qū)段、敵對(duì)信號(hào)、接近區(qū)段、其他聯(lián)鎖對(duì)象、保護(hù)區(qū)段、自動(dòng)觸發(fā)等聯(lián)鎖關(guān)系編制成聯(lián)鎖表。聯(lián)鎖表內(nèi)容一般包括CBTC聯(lián)鎖表、降級(jí)模式聯(lián)鎖表、引導(dǎo)信號(hào)聯(lián)鎖表、自動(dòng)折返進(jìn)路表等文件,作為后續(xù)聯(lián)鎖、ZC、ATP和ATS等設(shè)備軟件數(shù)據(jù)配置的重要輸入文件。
人工編制聯(lián)鎖表工作量大、容易出錯(cuò)、效率低,需要進(jìn)行多輪人工校核,而且聯(lián)鎖表格式不容易統(tǒng)一。在工程實(shí)踐過程中,尤其是使用一體化綜合自動(dòng)生產(chǎn)工具平臺(tái)生成聯(lián)鎖、ZC、ATP和ATS等軟件的配置數(shù)據(jù),或使用自動(dòng)測(cè)試工具測(cè)試相關(guān)軟件時(shí),多次發(fā)現(xiàn)人工編制的聯(lián)鎖表與相關(guān)工具軟件兼容性不好的問題。因此,使用軟件自動(dòng)生成聯(lián)鎖表可以防范人工因素產(chǎn)生的錯(cuò)誤或格式不統(tǒng)一的問題,可大大縮短編制時(shí)間,提高編制效率。
一體化繪圖工具(簡(jiǎn)稱工具)基于AutoCAD二次開發(fā),可實(shí)現(xiàn)平面圖的輔助繪制,支持后續(xù)室內(nèi)圖紙、室外圖紙、一體化工程數(shù)據(jù)表等的自動(dòng)生成,信號(hào)設(shè)計(jì)人員可使用可視化的界面調(diào)整設(shè)計(jì)數(shù)據(jù)。通過設(shè)計(jì)圖紙獲取工程相關(guān)數(shù)據(jù),并輸出一體化工程數(shù)據(jù)表作為后續(xù)多個(gè)工具的接口資料。聯(lián)鎖表自動(dòng)生成軟件通過讀取一體化工程數(shù)據(jù)表中的站場(chǎng)數(shù)據(jù)建立站場(chǎng)數(shù)據(jù)模型,通過進(jìn)路搜索計(jì)算可以生成城軌CBTC系統(tǒng)的聯(lián)鎖表。
軟件按功能劃分,主要包括3大功能模塊:數(shù)據(jù)表讀取模塊、進(jìn)路數(shù)據(jù)自動(dòng)搜索模塊、聯(lián)鎖表輸出模塊。
數(shù)據(jù)表讀取模塊的功能:通過讀取本聯(lián)鎖區(qū)及相鄰聯(lián)鎖區(qū)的工程數(shù)據(jù)對(duì)照表獲取站場(chǎng)數(shù)據(jù),包括軌道區(qū)段、信號(hào)機(jī)、道岔、PSD屏蔽門、站臺(tái)、車站名稱簡(jiǎn)稱、超限區(qū)段等。進(jìn)路數(shù)據(jù)自動(dòng)搜索模塊的功能:使用站場(chǎng)數(shù)據(jù)計(jì)算本站進(jìn)路、鄰站進(jìn)路、保護(hù)進(jìn)路、接近區(qū)段數(shù)據(jù)、折返進(jìn)路,并根據(jù)相關(guān)進(jìn)路數(shù)據(jù)生成聯(lián)鎖表中的所有信息字符串。聯(lián)鎖表輸出模塊的功能:根據(jù)聯(lián)鎖數(shù)據(jù)格式化輸出聯(lián)鎖區(qū)聯(lián)鎖表文件。
軟件采用Visual Studio Code作為軟件開發(fā)平臺(tái),利用Python語(yǔ)言實(shí)現(xiàn)面向?qū)ο蟮慕Y(jié)構(gòu)設(shè)計(jì),通過導(dǎo)入一體化工程數(shù)據(jù)對(duì)照表獲取基礎(chǔ)站場(chǎng)數(shù)據(jù)及關(guān)鍵參數(shù),工具使用站場(chǎng)搜索技術(shù)生成列車進(jìn)路,隨后生成聯(lián)鎖表。
進(jìn)路自動(dòng)搜索模塊根據(jù)站場(chǎng)數(shù)據(jù)及關(guān)鍵參數(shù)搜索生成進(jìn)路、保護(hù)進(jìn)路、接近區(qū)段3部分基本進(jìn)路數(shù)據(jù),后續(xù)分別生成降級(jí)模式聯(lián)鎖表、CBTC聯(lián)鎖表、引導(dǎo)進(jìn)路表、自動(dòng)折返進(jìn)路表共4個(gè)表單。
進(jìn)路搜索的站場(chǎng)數(shù)據(jù)實(shí)際上類似于圖的結(jié)構(gòu),由節(jié)點(diǎn)(軌道區(qū)段、道岔)的集合(節(jié)點(diǎn)包含相互之間的鏈接)組成。如圖1所示,軌道區(qū)段是若干邏輯軌道區(qū)段的組合。無岔計(jì)軸區(qū)段與軌道區(qū)段的范圍一致,對(duì)于道岔計(jì)軸區(qū)段,岔前、岔后定位,岔后反位各定義為一個(gè)軌道區(qū)段。每個(gè)軌道區(qū)段都根據(jù)左、右公里標(biāo),長(zhǎng)度,長(zhǎng)鏈、短鏈數(shù)據(jù),邏輯軌道區(qū)段的長(zhǎng)度等計(jì)算并校核,為后續(xù)搜索保護(hù)進(jìn)路和接近延長(zhǎng)區(qū)段做好準(zhǔn)備。
圖1 站場(chǎng)數(shù)據(jù)結(jié)構(gòu)示意Fig.1 Schematic diagram of station data structure
道岔被定義為沒有長(zhǎng)度的特殊節(jié)點(diǎn),只有道岔有左側(cè)第二軌道區(qū)段鏈接和右側(cè)第二軌道區(qū)段鏈接,每個(gè)道岔由于岔尖向左或向右,只有1個(gè)第二軌道區(qū)段鏈接有效,另1個(gè)為空。每個(gè)節(jié)點(diǎn)都有左側(cè)鏈接區(qū)段和右側(cè)鏈接區(qū)段,如果該軌道區(qū)段在盡頭處,鏈接區(qū)段為空。
每1個(gè)軌道區(qū)段增加左側(cè)信號(hào)機(jī)、右側(cè)信號(hào)機(jī)的鏈接,信號(hào)機(jī)按照其位置鏈接到其接近軌道區(qū)段內(nèi)。如圖2所示,X4001信號(hào)機(jī)在其接近區(qū)段T4003的左側(cè),所以T4003的左側(cè)信號(hào)機(jī)為X4001;X4003信號(hào)機(jī)在其接近區(qū)段T4003的右側(cè),所以T4003的右側(cè)信號(hào)機(jī)為X4003。由此,在進(jìn)路搜索時(shí)可根據(jù)搜索方向方便找到進(jìn)路的始端、終端。由于部分信號(hào)機(jī)沒有接近區(qū)段,信號(hào)機(jī)數(shù)據(jù)結(jié)構(gòu)包含接近區(qū)段、內(nèi)方區(qū)段和信號(hào)機(jī)朝向,方便后續(xù)記錄搜索時(shí)檢索數(shù)據(jù)。
圖2 站場(chǎng)平面局部示例Fig.2 Local example of station plane
模塊的主要功能為讀取本聯(lián)鎖區(qū)及相鄰聯(lián)鎖區(qū)的工程數(shù)據(jù)對(duì)照表獲取站場(chǎng)數(shù)據(jù),包括軌道區(qū)段、信號(hào)機(jī)、道岔、PSD屏蔽門、站臺(tái)、車站名稱簡(jiǎn)稱、超限區(qū)段等。工程數(shù)據(jù)對(duì)照表中的數(shù)據(jù)已包含設(shè)備間鏈接關(guān)系信息,工具在讀入表格時(shí)同步更新設(shè)備間相互鏈接的數(shù)據(jù),如軌道區(qū)段的左、右鏈接軌道區(qū)段及所有其他設(shè)備所屬軌道區(qū)段信息,為后續(xù)聯(lián)鎖進(jìn)路的搜索做好準(zhǔn)備。
模塊讀取本站及相鄰車站的工程數(shù)據(jù)對(duì)照表,生成站場(chǎng)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),按設(shè)備類別將設(shè)備類數(shù)據(jù)存入列表中并同步建立設(shè)備類成員間的鏈接指針。主要包括軌道區(qū)段列表、無岔計(jì)軸區(qū)段列表、道岔計(jì)軸區(qū)段列表、道岔列表、信號(hào)機(jī)列表、長(zhǎng)鏈短鏈列表、超限區(qū)段列表、屏蔽門列表等。該模塊還負(fù)責(zé)根據(jù)道岔軌道區(qū)段的鏈接生成雙動(dòng)道岔列表、交分道岔列表,方便后續(xù)自動(dòng)計(jì)算防護(hù)道岔和帶動(dòng)道岔信息。
進(jìn)路實(shí)際上是給列車運(yùn)行時(shí)預(yù)留的路徑,進(jìn)路搜索是基于抽象處理后的信號(hào)平面布置圖中軌道區(qū)段的數(shù)據(jù)結(jié)構(gòu),搜索給定起點(diǎn)的多條進(jìn)路數(shù)據(jù),每一條進(jìn)路都包含起點(diǎn)至阻擋信號(hào)機(jī)的所有軌道區(qū)段節(jié)點(diǎn)。
工具使用一種改進(jìn)的深度優(yōu)先搜索算法搜索進(jìn)路。由于相同起點(diǎn)的多條進(jìn)路大部分路徑相同,工具一次搜索以某一起點(diǎn)的所有進(jìn)路數(shù)據(jù)。該算法適用于地鐵正線中不存在變更進(jìn)路的情況,搜索到的進(jìn)路依次為直向進(jìn)路、側(cè)向進(jìn)路1、側(cè)向進(jìn)路2等。
3.3.1 進(jìn)路數(shù)據(jù)搜索
如圖3所示,進(jìn)路搜索函數(shù)算法如下。
圖3 進(jìn)路搜索函數(shù)流程Fig.3 Flow chart of route search function
1)遍歷信號(hào)機(jī)列表,如果信號(hào)機(jī)非空、信號(hào)機(jī)內(nèi)方區(qū)段非空,則開始搜索。
2)進(jìn)路搜索前,先初始化控制表。
3)循環(huán)n次,啟動(dòng)單條進(jìn)路搜索函數(shù)。
以進(jìn)路始端信號(hào)機(jī)內(nèi)方軌道區(qū)段為起點(diǎn),向信號(hào)機(jī)對(duì)應(yīng)方向搜索進(jìn)路。如果設(shè)備節(jié)點(diǎn)堆棧為空,則當(dāng)前節(jié)點(diǎn)設(shè)為始端信號(hào)機(jī)內(nèi)方區(qū)段開始搜索。如果設(shè)備節(jié)點(diǎn)堆棧不空,則堆棧彈出一個(gè)節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn)開始搜索。
判斷當(dāng)前節(jié)點(diǎn)搜索方向是否有阻擋信號(hào)機(jī)。如果有則當(dāng)前節(jié)點(diǎn)入棧,當(dāng)前節(jié)點(diǎn)搜索次數(shù)加1,函數(shù)結(jié)束返回找到一條進(jìn)路。否則進(jìn)入循環(huán)繼續(xù)搜索。
判斷當(dāng)前節(jié)點(diǎn)是否為空,為空則堆棧彈出一個(gè)節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn)。繼續(xù)檢查如果堆棧彈出的當(dāng)前節(jié)點(diǎn)為空,則表明堆棧已空,搜索結(jié)束函數(shù)返回假。否則當(dāng)前節(jié)點(diǎn)壓入堆棧。按給定方向搜索,找到當(dāng)前節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)并設(shè)為當(dāng)前節(jié)點(diǎn)。
判斷當(dāng)前節(jié)點(diǎn)是否為空,為空則跳轉(zhuǎn)至循環(huán)開始處。否則判斷當(dāng)前節(jié)點(diǎn)在搜索方向是否有阻擋信號(hào)機(jī),如有當(dāng)前節(jié)點(diǎn)入棧,當(dāng)前節(jié)點(diǎn)搜索次數(shù)加1,返回找到一條進(jìn)路。否則跳轉(zhuǎn)至循環(huán)開始處。
如果已搜索到進(jìn)路,則生成一條進(jìn)路數(shù)據(jù):將設(shè)備節(jié)點(diǎn)堆棧中的數(shù)據(jù)作為進(jìn)路數(shù)據(jù)存入該進(jìn)路中,將該進(jìn)路存入始端信號(hào)機(jī)節(jié)點(diǎn)的進(jìn)路列表中,并將該進(jìn)路存入進(jìn)路列表中。否則函數(shù)結(jié)束返回假。
4)如果搜索到一條進(jìn)路且已存入進(jìn)路列表中,則繼續(xù)循環(huán)查找下一條進(jìn)路。
5)如果設(shè)備節(jié)點(diǎn)堆棧為空,沒有找到進(jìn)路則退出循環(huán)。
3.3.2 保護(hù)進(jìn)路的自動(dòng)生成
一般情況下進(jìn)路最后一個(gè)區(qū)段為站臺(tái)區(qū)域或停車線區(qū)域的進(jìn)路設(shè)置保護(hù)區(qū)段。工具會(huì)自動(dòng)根據(jù)進(jìn)路終端信號(hào)機(jī)的接近區(qū)段是否有保護(hù)進(jìn)路,以該區(qū)段為始端搜索保護(hù)進(jìn)路。工具使用與進(jìn)路搜索相同的改進(jìn)深度優(yōu)先搜索算法,找到所有滿足最小長(zhǎng)度要求的保護(hù)區(qū)段數(shù)據(jù),一次可搜索出多條相同進(jìn)路終端的保護(hù)進(jìn)路。搜索算法與進(jìn)路的搜索算法基本相同,只修改判斷保護(hù)進(jìn)路成功找到的條件。
3.3.3 接近區(qū)段的自動(dòng)生成
接近區(qū)段為滿足接近鎖閉長(zhǎng)度要求的軌道區(qū)段。CBTC聯(lián)鎖表及降級(jí)模式聯(lián)鎖表中,順序填寫該進(jìn)路的接近區(qū)段。信號(hào)開放后一旦接近區(qū)段有車占用,進(jìn)路立即轉(zhuǎn)入接近鎖閉狀態(tài),只有等列車經(jīng)過后正常解鎖,或使用人工解鎖的方法,辦理人工解鎖,首先關(guān)閉信號(hào),然后開始計(jì)時(shí),延時(shí)結(jié)束后進(jìn)路解鎖。
工具使用與進(jìn)路搜索相同的改進(jìn)深度優(yōu)先搜索算法搜索接近區(qū)段的信息。列車通過道岔側(cè)向時(shí)需要限速運(yùn)行,所以接近延長(zhǎng)的區(qū)段全部通過道岔直向和部分通過道岔側(cè)向時(shí)需要的長(zhǎng)度不同。工具由進(jìn)路始端信號(hào)機(jī)的接近區(qū)段向信號(hào)機(jī)反方向搜索接近區(qū)段,把滿足直向路徑長(zhǎng)度大于“接近延長(zhǎng)直向最小長(zhǎng)度” 及側(cè)向路徑大于“接近延長(zhǎng)側(cè)向最小長(zhǎng)度” 的路徑一次全搜索出來。搜索算法與進(jìn)路的搜索算法基本相同,只修改判斷接近延長(zhǎng)路徑成功的條件。
由于列車實(shí)際運(yùn)行區(qū)段的速度等級(jí)不同,實(shí)際接近延長(zhǎng)的最小長(zhǎng)度需根據(jù)接近延長(zhǎng)中是否有道岔側(cè)向及相關(guān)軌道區(qū)段的列車最高運(yùn)行速度,使用牽引計(jì)算工具計(jì)算出理論最小值。工具先使用全站較大的兩個(gè)長(zhǎng)度值進(jìn)行接近延長(zhǎng)搜索,并自動(dòng)生成《聯(lián)鎖區(qū)接近延長(zhǎng)區(qū)段長(zhǎng)度表》。根據(jù)《接近區(qū)段計(jì)算統(tǒng)計(jì)清單》使用牽引計(jì)算工具計(jì)算出每一條接近區(qū)段的計(jì)算長(zhǎng)度值,并填入《聯(lián)鎖區(qū)接近延長(zhǎng)區(qū)段長(zhǎng)度表》中,工具自動(dòng)讀取《聯(lián)鎖區(qū)接近延長(zhǎng)區(qū)段長(zhǎng)度表》,并按照接近區(qū)段的計(jì)算長(zhǎng)度校核接近延長(zhǎng)區(qū)段的長(zhǎng)度(按計(jì)軸區(qū)段為單位回縮),由此精確生成聯(lián)鎖進(jìn)路的接近區(qū)段信息。工具在修訂接近區(qū)段的長(zhǎng)度后還會(huì)自動(dòng)重新生成《聯(lián)鎖區(qū)接近延長(zhǎng)區(qū)段長(zhǎng)度表》,同步更新表中的數(shù)據(jù),方便人工復(fù)核。
工具在完成進(jìn)路相關(guān)數(shù)據(jù)搜索后,可按照一定的格式輸出聯(lián)鎖表。聯(lián)鎖表包含變更記錄、CBTC聯(lián)鎖表、降級(jí)模式聯(lián)鎖表、引導(dǎo)進(jìn)路表、自動(dòng)折返進(jìn)路表等表單。
變更記錄包含版本號(hào)、日期、工具的版本號(hào),相關(guān)工程數(shù)據(jù)對(duì)照表的文件名稱及32位CRC校驗(yàn)碼、工具的計(jì)算參數(shù)等內(nèi)容。由此,工具自動(dòng)生成聯(lián)鎖表的相關(guān)輸入信息可方便地自動(dòng)記錄,方便后續(xù)版本管理工作。有基本的聯(lián)鎖數(shù)據(jù),聯(lián)鎖表的輸出就比較簡(jiǎn)單。
工具通過讀取一體化工程數(shù)據(jù)表中的站場(chǎng)數(shù)據(jù)建立站場(chǎng)數(shù)據(jù)模型,通過進(jìn)路搜索計(jì)算生成基本進(jìn)路、保護(hù)進(jìn)路、接近區(qū)段等,并能根據(jù)相關(guān)要求及用戶特殊要求生成聯(lián)鎖表。目前工具生成的聯(lián)鎖表經(jīng)過審核可直接發(fā)布使用,基本上不需要后續(xù)人工修改聯(lián)鎖表。
目前,該工具已成功用于長(zhǎng)沙6號(hào)線、北京12號(hào)線聯(lián)鎖表的生成。通過使用該工具編制聯(lián)鎖表,大大縮短編制時(shí)間,提高信號(hào)系統(tǒng)設(shè)計(jì)工效,簡(jiǎn)化聯(lián)鎖表的審核。同時(shí),工具大大提高生成聯(lián)鎖表的完整性及正確性,與后續(xù)相關(guān)工具軟件兼容性好,對(duì)于信號(hào)系統(tǒng)工程的快速、高質(zhì)量推進(jìn)起到很好的作用。