張?zhí)礻?,?揚(yáng)
在鐵路信號(hào)系統(tǒng)中,低頻信息碼傳輸序列表(簡稱“碼序表”),是驗(yàn)證列控中心編碼邏輯正確性的重要依據(jù),是整個(gè)信號(hào)系統(tǒng)設(shè)計(jì)中的重要環(huán)節(jié)[1]。碼序表的編制具有數(shù)據(jù)量大、周期短的特點(diǎn),編制過程繁瑣、重復(fù)度高且易出錯(cuò)。傳統(tǒng)的人工編制方式已無法滿足需求,而計(jì)算機(jī)輔助繪圖方式則提供了較好的解決辦法。針對(duì)碼序表輔助設(shè)計(jì)軟件的開發(fā),已有學(xué)者展開了研究。例如,通過人工輸入特征數(shù)據(jù),按特征表格進(jìn)行碼序運(yùn)算,將結(jié)果存入access 表格后,再將數(shù)據(jù)寫入AutoCAD 圖形文件;以區(qū)間及車站信號(hào)平面布置圖、信號(hào)點(diǎn)布置表作為輸入,實(shí)現(xiàn)碼序運(yùn)算與圖紙的直接生成;基于列控工程數(shù)據(jù)表,對(duì)客運(yùn)專線碼序表的工程設(shè)計(jì)進(jìn)行研究[2-5]。
然而,現(xiàn)階段已有的碼序表自動(dòng)生成輔助設(shè)計(jì)軟件大多以進(jìn)路或車站為單位,無法獲取到鄰站的邊界碼序,故處理方式通常以L5~HU 碼作為鄰站默認(rèn)的邊界碼序輸入。雖然這種軟件設(shè)計(jì)方法能夠確保生成的碼序表在列舉邊界區(qū)段的發(fā)碼情形時(shí),不會(huì)出現(xiàn)缺漏,但可能存在贅余,需要對(duì)表格內(nèi)容進(jìn)行逐一校核與修改。尤其當(dāng)站場結(jié)構(gòu)復(fù)雜時(shí),進(jìn)路數(shù)量非常多,會(huì)導(dǎo)致生成的大量圖紙內(nèi)容需要調(diào)整,且由于輸入數(shù)據(jù)的局限性,難以在碼序表中體現(xiàn)車站站形及進(jìn)路示意。
為進(jìn)一步提高碼序表生成的準(zhǔn)確性及豐富圖紙信息,本文以整條線路為單位提供必要的輸入數(shù)據(jù),對(duì)線路各信號(hào)設(shè)備建立面向?qū)ο竽P?,?gòu)建全線拓?fù)潢P(guān)系[6-7],并依序?qū)M(jìn)路各軌道區(qū)段碼序進(jìn)行遞推,得到精確的邊界碼序,進(jìn)而實(shí)現(xiàn)全線碼序的追蹤,同時(shí)基于線路拓?fù)潢P(guān)系繪制車站簡易站形結(jié)構(gòu)及進(jìn)路走行示意圖。
在信號(hào)設(shè)計(jì)時(shí),碼序表是以區(qū)間、車站信號(hào)平面布置圖及列控工程數(shù)據(jù)表為基礎(chǔ),車站(線路所)的每張碼序表與車站進(jìn)路數(shù)據(jù)表的每條列控編碼接、發(fā)車進(jìn)路一一對(duì)應(yīng)。每張碼序表的縱列,表示該進(jìn)路對(duì)應(yīng)的列車運(yùn)行前方鄰站TCC邊界區(qū)段的各種碼型,以及本站不同區(qū)段的占用情況;橫列表示本站進(jìn)路(含區(qū)間)范圍內(nèi),各軌道區(qū)段的遞推碼序情況。碼序表通常為dwg 格式的AutoCAD 文件,本文采用Visual Studio 2010+ObjectARX2013+AutoCAD2013 組合開發(fā)環(huán)境實(shí)現(xiàn)軟件設(shè)計(jì)??傮w設(shè)計(jì)方案見圖1。
圖1 總體設(shè)計(jì)方案
ObjectARX 具有高效的AutoCAD 圖形處理效率[8],其生成的軟件需通過動(dòng)態(tài)鏈接庫的方式加載到AutoCAD中,對(duì)象鏈接與嵌入技術(shù)(Object Linking and Embedding,OLE)能通過跨進(jìn)程的方式實(shí)現(xiàn)AutoCAD 與Excel 進(jìn)程間的數(shù)據(jù)交換,故在AutoCAD 平臺(tái)下能同時(shí)實(shí)現(xiàn)dwg、Excel 文件的讀取與生成。
基于對(duì)碼序表內(nèi)容的分析,本文以列控系統(tǒng)基礎(chǔ)數(shù)據(jù)表、車站信號(hào)平面布置圖(簡稱“站場圖”)及車站聯(lián)鎖表作為輸入數(shù)據(jù)。根據(jù)《列控?cái)?shù)據(jù)管理暫行辦法》《計(jì)算機(jī)聯(lián)鎖車站聯(lián)鎖圖表編制原則》[9-10],列控基礎(chǔ)數(shù)據(jù)表與聯(lián)鎖表都有其相應(yīng)的編制規(guī)范,便于軟件進(jìn)行信息識(shí)別與數(shù)據(jù)處理。但是站場圖通常是基于AutoCAD 中提供的基礎(chǔ)圖元繪制而成,圖紙數(shù)據(jù)雖易提取,但難以實(shí)現(xiàn)各信號(hào)設(shè)備類別的區(qū)分及屬性數(shù)據(jù)歸類。為此,對(duì)站場圖按自定義實(shí)體方式進(jìn)行規(guī)范化繪制。自定義實(shí)體是指通過CAD 二次開發(fā)方式定制圖元對(duì)象,鐵路信號(hào)設(shè)備的屬性數(shù)據(jù)可以直接封裝在圖元中,并以函數(shù)接口形式獲取相應(yīng)數(shù)據(jù)[11]。
全線碼序追蹤的前提是建立線路的拓?fù)潢P(guān)系,按順序根據(jù)線路經(jīng)行的軌道區(qū)段逐一遞推得到其碼序信息。在生成碼序表時(shí),以各車站進(jìn)路為單位,需在線路拓?fù)浣Y(jié)構(gòu)基礎(chǔ)上進(jìn)行通過進(jìn)路搜索及閉塞分區(qū)的劃分。
基于面向?qū)ο笏枷氲姆庋b特性,將對(duì)應(yīng)信號(hào)設(shè)備抽象成對(duì)象時(shí),可實(shí)現(xiàn)文件讀取過程中離散數(shù)據(jù)的整合。根據(jù)站場圖生成站內(nèi)信號(hào)設(shè)備對(duì)象,每個(gè)對(duì)象有其唯一的ID 信息,然后基于圖紙中各對(duì)象的坐標(biāo)數(shù)據(jù),可構(gòu)建站內(nèi)拓?fù)潢P(guān)系,并以ID 信息進(jìn)行表示。列控基礎(chǔ)數(shù)據(jù)表中的信號(hào)點(diǎn)布置表,包含了線路正線上的信號(hào)點(diǎn)布置信息,可據(jù)此生成區(qū)間中各信號(hào)設(shè)備對(duì)象,并按里程信息直接建立區(qū)間內(nèi)的拓?fù)潢P(guān)系。
由于輸入的線路數(shù)據(jù)分別來自于站場圖與信號(hào)點(diǎn)布置表,兩者文件格式不同,導(dǎo)致獲取到的車站數(shù)據(jù)與區(qū)間數(shù)據(jù)間的關(guān)聯(lián)性被割裂,需對(duì)區(qū)間與站內(nèi)的拓?fù)潢P(guān)系另做處理。在讀取信號(hào)點(diǎn)布置表時(shí),根據(jù)表中的“進(jìn)站”與“出站口”標(biāo)識(shí),可定位到車站正線上的正/反向進(jìn)站信號(hào)機(jī)外方的相鄰區(qū)間區(qū)段,并對(duì)其設(shè)置相應(yīng)的屬性標(biāo)識(shí):將下行線正向進(jìn)站信號(hào)機(jī)外方的區(qū)間區(qū)段設(shè)置為三接近區(qū)段(3JJG),下行線反向進(jìn)站信號(hào)機(jī)外方的區(qū)間區(qū)段,設(shè)置為一離去區(qū)段(1LQG),上行線同理。以站內(nèi)4 個(gè)進(jìn)站信號(hào)機(jī)處的絕緣節(jié)為節(jié)點(diǎn),根據(jù)線路的上、下行與區(qū)間區(qū)段屬性搜索區(qū)段對(duì)象,確定絕緣節(jié)左右連接的具體區(qū)段,從而完成區(qū)間與車站拓?fù)潢P(guān)系的重新連接,形成全線的拓?fù)浣Y(jié)構(gòu)。
一個(gè)閉塞分區(qū)可能包含多個(gè)軌道區(qū)段,區(qū)間軌道區(qū)段根據(jù)其所屬防護(hù)信號(hào)機(jī)是否相同,判斷是否屬于同一閉塞分區(qū);站內(nèi)軌道區(qū)段根據(jù)其所屬咽喉是否為股道,判斷是否屬于同一閉塞分區(qū)。以車站下行正向運(yùn)行的進(jìn)路為例,發(fā)車進(jìn)路由上行咽喉區(qū)段組成,接車進(jìn)路由下行咽喉區(qū)段與股道組成,因此,進(jìn)路中X1LQG 與屬于上行咽喉的站內(nèi)區(qū)段為同一閉塞分區(qū),股道與屬于下行咽喉的站內(nèi)區(qū)段為同一閉塞分區(qū),其閉塞分區(qū)劃分示意見圖2。對(duì)于反向運(yùn)行時(shí)閉塞分區(qū)的劃分,還需考慮離去區(qū)段發(fā)碼分區(qū)是否合并。
圖2 3JJG與1LQG及閉塞分區(qū)劃分示意
每條通過進(jìn)路對(duì)應(yīng)一張碼序表,表中需體現(xiàn)進(jìn)路中每一軌道區(qū)段的發(fā)碼信息。對(duì)于結(jié)構(gòu)較為簡單、站內(nèi)不存在進(jìn)路信號(hào)機(jī)的車站,可直接以接車進(jìn)路與發(fā)車進(jìn)路組合的方式得到通過進(jìn)路;對(duì)于存在進(jìn)路信號(hào)機(jī)的車站,則無法采用上述方法。為適應(yīng)不同站場結(jié)構(gòu),本文設(shè)計(jì)了一種基于聯(lián)鎖表的通過進(jìn)路遞歸搜索算法。
通過遍歷聯(lián)鎖表中的列車進(jìn)路,首先確定組合通過進(jìn)路的首條列車進(jìn)路,其必須滿足的條件為:始端信號(hào)機(jī)類型為進(jìn)站信號(hào)機(jī);后續(xù)接續(xù)進(jìn)路的始端信號(hào)機(jī)與上一條進(jìn)路的終端信號(hào)機(jī)相同。按此條件不斷查找接續(xù)進(jìn)路并添加滿足條件的進(jìn)路信息,直到找到的接續(xù)進(jìn)路終端信號(hào)機(jī)類型為進(jìn)站信號(hào)機(jī),說明查找到的所有列車進(jìn)路已經(jīng)組合成一條完整的通過進(jìn)路。通過進(jìn)路搜索流程見圖3。
圖3 通過進(jìn)路搜索流程
結(jié)合全線拓?fù)潢P(guān)系,獲取通過進(jìn)路始、終端信號(hào)機(jī)外方連接的區(qū)間軌道區(qū)段信息,由此得到列車在本站集中區(qū)范圍(兩端TCC 邊界)內(nèi)通過進(jìn)路的完整運(yùn)行路徑,包括進(jìn)路運(yùn)行方向、直彎進(jìn)出股道、信號(hào)機(jī)、軌道區(qū)段、道岔等信息,可直接供碼序遞推過程使用。
車站的邊界碼是相鄰站間進(jìn)行碼序追蹤與遞推的基本依據(jù)。由于碼序追蹤具有方向性,碼序信息的遞推過程需根據(jù)車站信息表,對(duì)全線車站進(jìn)行順序或逆序遍歷,得到每一車站相同運(yùn)行方向進(jìn)路的碼序,此處約定下行正向與上行反向的列車運(yùn)行進(jìn)路方向相同。因線路兩端車站的邊界區(qū)段碼序情形未知,需通過人工輸入。
考慮列車下行正向運(yùn)行方向,設(shè)列車經(jīng)行的首個(gè)車站為始發(fā)站,最后一個(gè)車站為終到站。對(duì)于最高碼序?yàn)長5 碼的線路,參考碼序表編制的相關(guān)規(guī)則[12-14],全線中所有下行正向與上行反向的進(jìn)路碼序追蹤運(yùn)算示意見圖4,詳細(xì)步驟如下。
圖4 全線碼序追蹤運(yùn)算示意
Step 1按全線碼序追蹤思想,每一車站必須先獲取其前方鄰站邊界區(qū)段的所有邊界碼,才能遞推本站的碼序內(nèi)容,并得到本站邊界區(qū)段的邊界碼,以供后方鄰站追蹤使用,故需先對(duì)終到站所有下行正向與上行反向進(jìn)路的碼序進(jìn)行遞推。終到站的前方線路數(shù)據(jù)不存在,故其參考的邊界碼序由人工輸入。
Step 2對(duì)終到站所有滿足運(yùn)行方向要求的進(jìn)路,依序遍歷其中所有的軌道區(qū)段,按占用-HB/HU-U-LU-L-L2-L3-L4-L5或占用-HB/HUUU/UUS-U2/U2S-LU-L-L2-L3-L4-L5 的碼序順序,依次對(duì)進(jìn)路中所屬閉塞分區(qū)不同的軌道區(qū)段遞推得到其碼序。
Step 3若車站進(jìn)路中存在過彎(側(cè)線進(jìn)路)的情形,則軌道區(qū)段可能需降級(jí)或升級(jí)發(fā)送UU/UUS 碼,此時(shí)需基于UU/UUS 碼順序遞推其相鄰軌道區(qū)段的碼序。
Step 4若進(jìn)路為反向運(yùn)行,列車按自動(dòng)站間閉塞制式行車,此時(shí)區(qū)間有車占用與空閑時(shí)的發(fā)碼規(guī)則不同。區(qū)間空閑時(shí),碼序追蹤方式與正向運(yùn)行相同;區(qū)間被占用時(shí),出站信號(hào)機(jī)關(guān)閉,股道及對(duì)應(yīng)咽喉區(qū)段發(fā)HU 碼。此時(shí)需結(jié)合本站與鄰站間的閉塞分區(qū)個(gè)數(shù)及鄰站邊界區(qū)段的追蹤碼序,分別確定區(qū)間空閑與占用時(shí)可能的發(fā)碼情形,據(jù)此遞推得到本進(jìn)路各軌道區(qū)段碼序。
Step 5每條進(jìn)路經(jīng)過的首個(gè)軌道區(qū)段為本站左側(cè)TCC 內(nèi)方的邊界區(qū)段,根據(jù)其所屬上、下行線路,分別存儲(chǔ)對(duì)應(yīng)邊界區(qū)段的所有邊界碼,供鄰站追蹤使用。
Step 6以終到站為起點(diǎn),對(duì)線路上所有車站逆序遍歷,重復(fù)Step 2~Step 5,則可計(jì)算得到全線所有下行正向與上行反向運(yùn)行的軌道區(qū)段碼序。
Step 7根據(jù)Step 1~Step 6 的步驟,同理可計(jì)算得到全線車站所有下行反向與上行正向運(yùn)行的進(jìn)路碼序,由此完成全線碼序信息的追蹤與遞推。
反向運(yùn)行的進(jìn)路碼序遞推過程:獲取前方鄰站邊界區(qū)段的邊界碼,根據(jù)線路拓?fù)潢P(guān)系計(jì)算本站與前方鄰站間的閉塞分區(qū)個(gè)數(shù)n,當(dāng)n≥8 時(shí),區(qū)間空閑時(shí)的邊界碼序只可能為L5 碼;當(dāng)n=7時(shí),區(qū)間空閑時(shí)的邊界碼序只可能為L5 和L4碼,依此類推。根據(jù)n值,確定區(qū)間空閑時(shí)進(jìn)路邊界區(qū)段最低能夠達(dá)到的碼序值,則所有的鄰站邊界碼序中,大于等于該碼序值的邊界碼,均按區(qū)間空閑時(shí)的發(fā)碼規(guī)則進(jìn)行遞推;其余小于該碼序值的邊界碼,均按區(qū)間占用時(shí)的發(fā)碼規(guī)則遞推進(jìn)路碼序信息。
按照進(jìn)路的運(yùn)行方向分別生成對(duì)應(yīng)格式的碼序表,將每條進(jìn)路碼序依序填入表格中,并對(duì)每行發(fā)碼情形進(jìn)行說明,具體內(nèi)容填入說明欄中。在表格左上角添加進(jìn)路走行信息,其格式為:接車進(jìn)路始端信號(hào)機(jī)名稱→進(jìn)路信號(hào)機(jī)名稱→發(fā)車進(jìn)路始端信號(hào)機(jī)名稱→發(fā)車進(jìn)路終端信號(hào)機(jī)名稱。若存在變通進(jìn)路,則在走行信息中額外添加“變通”標(biāo)注。
根據(jù)全線拓?fù)浣Y(jié)構(gòu),按區(qū)間(中繼站)或車站TCC 邊界范圍,分別在圖紙中繪制對(duì)應(yīng)的區(qū)間或車站站形。通過線路拓?fù)潢P(guān)系查找到本站TCC邊界范圍內(nèi)所有的軌道區(qū)段、信號(hào)機(jī)、絕緣節(jié)等對(duì)象信息,確定首個(gè)繪制的軌道區(qū)段及繪制基點(diǎn),按照拓?fù)溥壿嬯P(guān)系依序繪制其余信號(hào)設(shè)備對(duì)象的圖元示意,最終將結(jié)果保存并輸出為dwg 格式的文件。
軟件通過一次性讀取所有輸入文件,對(duì)線路制式、最高碼序等屬性進(jìn)行設(shè)置,選擇性生成全線或部分車站的碼序表。由于碼序表中的發(fā)碼信息存在一定的重復(fù)性,為精簡碼序表內(nèi)容,做以下處理:若一個(gè)閉塞分區(qū)中存在多個(gè)軌道區(qū)段,在列舉該閉塞分區(qū)中軌道區(qū)段占用的發(fā)碼情形時(shí),只考慮列車經(jīng)行該閉塞分區(qū)的末尾軌道區(qū)段;車站站內(nèi)不逐一列舉各道岔區(qū)段或股道占用的發(fā)碼情形,只列舉出站/進(jìn)路、進(jìn)站信號(hào)機(jī)關(guān)閉(HU)與開放引導(dǎo)(HB)時(shí)的發(fā)碼情形;若本站TCC 邊界外方恰好為鄰站的進(jìn)站信號(hào)機(jī),則本站邊界區(qū)段的碼序信息,需結(jié)合鄰站站內(nèi)軌道區(qū)段的碼序及鄰站進(jìn)站信號(hào)機(jī)的信號(hào)顯示具體分析。例如,當(dāng)鄰站信號(hào)機(jī)開放側(cè)向進(jìn)路時(shí),TCC 邊界處鄰站的站內(nèi)軌道區(qū)段可能存在多個(gè)發(fā)碼情形,但此時(shí)只列舉與進(jìn)站信號(hào)機(jī)開放側(cè)線進(jìn)路的信號(hào)顯示對(duì)應(yīng)的發(fā)碼情形。
該軟件已在京津城際線(北京南城際場-天津城際場)碼序表工程圖紙?jiān)O(shè)計(jì)中通過測試,并擬投入大秦線(大同-秦皇島)碼序表圖紙?jiān)O(shè)計(jì)中使用。京津線亦莊站的某條進(jìn)路對(duì)應(yīng)的碼序表生成實(shí)例見圖5。
圖5 京津線亦莊站碼序表生成實(shí)例
本文以自定義實(shí)體的方式將規(guī)范化的站場圖、列控基礎(chǔ)數(shù)據(jù)表及聯(lián)鎖表作為輸入,通過構(gòu)建線路拓?fù)潢P(guān)系,實(shí)現(xiàn)了全線碼序的追蹤計(jì)算。該方式能夠準(zhǔn)確計(jì)算車站邊界碼序,并繪制簡易站形及進(jìn)路走行示意,進(jìn)一步提高了碼序表的編制效率及準(zhǔn)確率。