張天昱,楊 揚
在鐵路信號系統中,低頻信息碼傳輸序列表(簡稱“碼序表”),是驗證列控中心編碼邏輯正確性的重要依據,是整個信號系統設計中的重要環節[1]。碼序表的編制具有數據量大、周期短的特點,編制過程繁瑣、重復度高且易出錯。傳統的人工編制方式已無法滿足需求,而計算機輔助繪圖方式則提供了較好的解決辦法。針對碼序表輔助設計軟件的開發,已有學者展開了研究。例如,通過人工輸入特征數據,按特征表格進行碼序運算,將結果存入access 表格后,再將數據寫入AutoCAD 圖形文件;以區間及車站信號平面布置圖、信號點布置表作為輸入,實現碼序運算與圖紙的直接生成;基于列控工程數據表,對客運專線碼序表的工程設計進行研究[2-5]。
然而,現階段已有的碼序表自動生成輔助設計軟件大多以進路或車站為單位,無法獲取到鄰站的邊界碼序,故處理方式通常以L5~HU 碼作為鄰站默認的邊界碼序輸入。雖然這種軟件設計方法能夠確保生成的碼序表在列舉邊界區段的發碼情形時,不會出現缺漏,但可能存在贅余,需要對表格內容進行逐一校核與修改。尤其當站場結構復雜時,進路數量非常多,會導致生成的大量圖紙內容需要調整,且由于輸入數據的局限性,難以在碼序表中體現車站站形及進路示意。
為進一步提高碼序表生成的準確性及豐富圖紙信息,本文以整條線路為單位提供必要的輸入數據,對線路各信號設備建立面向對象模型,構建全線拓撲關系[6-7],并依序對進路各軌道區段碼序進行遞推,得到精確的邊界碼序,進而實現全線碼序的追蹤,同時基于線路拓撲關系繪制車站簡易站形結構及進路走行示意圖。
在信號設計時,碼序表是以區間、車站信號平面布置圖及列控工程數據表為基礎,車站(線路所)的每張碼序表與車站進路數據表的每條列控編碼接、發車進路一一對應。每張碼序表的縱列,表示該進路對應的列車運行前方鄰站TCC邊界區段的各種碼型,以及本站不同區段的占用情況;橫列表示本站進路(含區間)范圍內,各軌道區段的遞推碼序情況。碼序表通常為dwg 格式的AutoCAD 文件,本文采用Visual Studio 2010+ObjectARX2013+AutoCAD2013 組合開發環境實現軟件設計。總體設計方案見圖1。

圖1 總體設計方案
ObjectARX 具有高效的AutoCAD 圖形處理效率[8],其生成的軟件需通過動態鏈接庫的方式加載到AutoCAD中,對象鏈接與嵌入技術(Object Linking and Embedding,OLE)能通過跨進程的方式實現AutoCAD 與Excel 進程間的數據交換,故在AutoCAD 平臺下能同時實現dwg、Excel 文件的讀取與生成。
基于對碼序表內容的分析,本文以列控系統基礎數據表、車站信號平面布置圖(簡稱“站場圖”)及車站聯鎖表作為輸入數據。根據《列控數據管理暫行辦法》《計算機聯鎖車站聯鎖圖表編制原則》[9-10],列控基礎數據表與聯鎖表都有其相應的編制規范,便于軟件進行信息識別與數據處理。但是站場圖通常是基于AutoCAD 中提供的基礎圖元繪制而成,圖紙數據雖易提取,但難以實現各信號設備類別的區分及屬性數據歸類。為此,對站場圖按自定義實體方式進行規范化繪制。自定義實體是指通過CAD 二次開發方式定制圖元對象,鐵路信號設備的屬性數據可以直接封裝在圖元中,并以函數接口形式獲取相應數據[11]。
全線碼序追蹤的前提是建立線路的拓撲關系,按順序根據線路經行的軌道區段逐一遞推得到其碼序信息。在生成碼序表時,以各車站進路為單位,需在線路拓撲結構基礎上進行通過進路搜索及閉塞分區的劃分。
基于面向對象思想的封裝特性,將對應信號設備抽象成對象時,可實現文件讀取過程中離散數據的整合。根據站場圖生成站內信號設備對象,每個對象有其唯一的ID 信息,然后基于圖紙中各對象的坐標數據,可構建站內拓撲關系,并以ID 信息進行表示。列控基礎數據表中的信號點布置表,包含了線路正線上的信號點布置信息,可據此生成區間中各信號設備對象,并按里程信息直接建立區間內的拓撲關系。
由于輸入的線路數據分別來自于站場圖與信號點布置表,兩者文件格式不同,導致獲取到的車站數據與區間數據間的關聯性被割裂,需對區間與站內的拓撲關系另做處理。在讀取信號點布置表時,根據表中的“進站”與“出站口”標識,可定位到車站正線上的正/反向進站信號機外方的相鄰區間區段,并對其設置相應的屬性標識:將下行線正向進站信號機外方的區間區段設置為三接近區段(3JJG),下行線反向進站信號機外方的區間區段,設置為一離去區段(1LQG),上行線同理。以站內4 個進站信號機處的絕緣節為節點,根據線路的上、下行與區間區段屬性搜索區段對象,確定絕緣節左右連接的具體區段,從而完成區間與車站拓撲關系的重新連接,形成全線的拓撲結構。
一個閉塞分區可能包含多個軌道區段,區間軌道區段根據其所屬防護信號機是否相同,判斷是否屬于同一閉塞分區;站內軌道區段根據其所屬咽喉是否為股道,判斷是否屬于同一閉塞分區。以車站下行正向運行的進路為例,發車進路由上行咽喉區段組成,接車進路由下行咽喉區段與股道組成,因此,進路中X1LQG 與屬于上行咽喉的站內區段為同一閉塞分區,股道與屬于下行咽喉的站內區段為同一閉塞分區,其閉塞分區劃分示意見圖2。對于反向運行時閉塞分區的劃分,還需考慮離去區段發碼分區是否合并。

圖2 3JJG與1LQG及閉塞分區劃分示意
每條通過進路對應一張碼序表,表中需體現進路中每一軌道區段的發碼信息。對于結構較為簡單、站內不存在進路信號機的車站,可直接以接車進路與發車進路組合的方式得到通過進路;對于存在進路信號機的車站,則無法采用上述方法。為適應不同站場結構,本文設計了一種基于聯鎖表的通過進路遞歸搜索算法。
通過遍歷聯鎖表中的列車進路,首先確定組合通過進路的首條列車進路,其必須滿足的條件為:始端信號機類型為進站信號機;后續接續進路的始端信號機與上一條進路的終端信號機相同。按此條件不斷查找接續進路并添加滿足條件的進路信息,直到找到的接續進路終端信號機類型為進站信號機,說明查找到的所有列車進路已經組合成一條完整的通過進路。通過進路搜索流程見圖3。

圖3 通過進路搜索流程
結合全線拓撲關系,獲取通過進路始、終端信號機外方連接的區間軌道區段信息,由此得到列車在本站集中區范圍(兩端TCC 邊界)內通過進路的完整運行路徑,包括進路運行方向、直彎進出股道、信號機、軌道區段、道岔等信息,可直接供碼序遞推過程使用。
車站的邊界碼是相鄰站間進行碼序追蹤與遞推的基本依據。由于碼序追蹤具有方向性,碼序信息的遞推過程需根據車站信息表,對全線車站進行順序或逆序遍歷,得到每一車站相同運行方向進路的碼序,此處約定下行正向與上行反向的列車運行進路方向相同。因線路兩端車站的邊界區段碼序情形未知,需通過人工輸入。
考慮列車下行正向運行方向,設列車經行的首個車站為始發站,最后一個車站為終到站。對于最高碼序為L5 碼的線路,參考碼序表編制的相關規則[12-14],全線中所有下行正向與上行反向的進路碼序追蹤運算示意見圖4,詳細步驟如下。

圖4 全線碼序追蹤運算示意
Step 1按全線碼序追蹤思想,每一車站必須先獲取其前方鄰站邊界區段的所有邊界碼,才能遞推本站的碼序內容,并得到本站邊界區段的邊界碼,以供后方鄰站追蹤使用,故需先對終到站所有下行正向與上行反向進路的碼序進行遞推。終到站的前方線路數據不存在,故其參考的邊界碼序由人工輸入。
Step 2對終到站所有滿足運行方向要求的進路,依序遍歷其中所有的軌道區段,按占用-HB/HU-U-LU-L-L2-L3-L4-L5或占用-HB/HUUU/UUS-U2/U2S-LU-L-L2-L3-L4-L5 的碼序順序,依次對進路中所屬閉塞分區不同的軌道區段遞推得到其碼序。
Step 3若車站進路中存在過彎(側線進路)的情形,則軌道區段可能需降級或升級發送UU/UUS 碼,此時需基于UU/UUS 碼順序遞推其相鄰軌道區段的碼序。
Step 4若進路為反向運行,列車按自動站間閉塞制式行車,此時區間有車占用與空閑時的發碼規則不同。區間空閑時,碼序追蹤方式與正向運行相同;區間被占用時,出站信號機關閉,股道及對應咽喉區段發HU 碼。此時需結合本站與鄰站間的閉塞分區個數及鄰站邊界區段的追蹤碼序,分別確定區間空閑與占用時可能的發碼情形,據此遞推得到本進路各軌道區段碼序。
Step 5每條進路經過的首個軌道區段為本站左側TCC 內方的邊界區段,根據其所屬上、下行線路,分別存儲對應邊界區段的所有邊界碼,供鄰站追蹤使用。
Step 6以終到站為起點,對線路上所有車站逆序遍歷,重復Step 2~Step 5,則可計算得到全線所有下行正向與上行反向運行的軌道區段碼序。
Step 7根據Step 1~Step 6 的步驟,同理可計算得到全線車站所有下行反向與上行正向運行的進路碼序,由此完成全線碼序信息的追蹤與遞推。
反向運行的進路碼序遞推過程:獲取前方鄰站邊界區段的邊界碼,根據線路拓撲關系計算本站與前方鄰站間的閉塞分區個數n,當n≥8 時,區間空閑時的邊界碼序只可能為L5 碼;當n=7時,區間空閑時的邊界碼序只可能為L5 和L4碼,依此類推。根據n值,確定區間空閑時進路邊界區段最低能夠達到的碼序值,則所有的鄰站邊界碼序中,大于等于該碼序值的邊界碼,均按區間空閑時的發碼規則進行遞推;其余小于該碼序值的邊界碼,均按區間占用時的發碼規則遞推進路碼序信息。
按照進路的運行方向分別生成對應格式的碼序表,將每條進路碼序依序填入表格中,并對每行發碼情形進行說明,具體內容填入說明欄中。在表格左上角添加進路走行信息,其格式為:接車進路始端信號機名稱→進路信號機名稱→發車進路始端信號機名稱→發車進路終端信號機名稱。若存在變通進路,則在走行信息中額外添加“變通”標注。
根據全線拓撲結構,按區間(中繼站)或車站TCC 邊界范圍,分別在圖紙中繪制對應的區間或車站站形。通過線路拓撲關系查找到本站TCC邊界范圍內所有的軌道區段、信號機、絕緣節等對象信息,確定首個繪制的軌道區段及繪制基點,按照拓撲邏輯關系依序繪制其余信號設備對象的圖元示意,最終將結果保存并輸出為dwg 格式的文件。
軟件通過一次性讀取所有輸入文件,對線路制式、最高碼序等屬性進行設置,選擇性生成全線或部分車站的碼序表。由于碼序表中的發碼信息存在一定的重復性,為精簡碼序表內容,做以下處理:若一個閉塞分區中存在多個軌道區段,在列舉該閉塞分區中軌道區段占用的發碼情形時,只考慮列車經行該閉塞分區的末尾軌道區段;車站站內不逐一列舉各道岔區段或股道占用的發碼情形,只列舉出站/進路、進站信號機關閉(HU)與開放引導(HB)時的發碼情形;若本站TCC 邊界外方恰好為鄰站的進站信號機,則本站邊界區段的碼序信息,需結合鄰站站內軌道區段的碼序及鄰站進站信號機的信號顯示具體分析。例如,當鄰站信號機開放側向進路時,TCC 邊界處鄰站的站內軌道區段可能存在多個發碼情形,但此時只列舉與進站信號機開放側線進路的信號顯示對應的發碼情形。
該軟件已在京津城際線(北京南城際場-天津城際場)碼序表工程圖紙設計中通過測試,并擬投入大秦線(大同-秦皇島)碼序表圖紙設計中使用。京津線亦莊站的某條進路對應的碼序表生成實例見圖5。

圖5 京津線亦莊站碼序表生成實例
本文以自定義實體的方式將規范化的站場圖、列控基礎數據表及聯鎖表作為輸入,通過構建線路拓撲關系,實現了全線碼序的追蹤計算。該方式能夠準確計算車站邊界碼序,并繪制簡易站形及進路走行示意,進一步提高了碼序表的編制效率及準確率。