徐 強,崔 龍,黃 琨
(中國鐵道科學研究院集團有限公司 通信信號研究所, 北京 100081)
近年來,隨著我國CTCS-3 級客運專線建設的快速推進,作為CTCS-3 級列控系統(tǒng)地面核心設備[1]的無線閉塞中心(RBC,Radio Block Center)得到了廣泛的應用。在工程項目實施中,需將大量的原始線路工程數(shù)據(jù)配置為RBC可讀取的數(shù)據(jù)格式以控制列車運行。由于數(shù)據(jù)量龐大,開發(fā)數(shù)據(jù)配置工具以替代人工完成數(shù)據(jù)配置是十分必要的。許多研究人員都針對不同類型的地面列控設備進行了數(shù)據(jù)配置方法研究,例如基于圖論生成RBC配置數(shù)據(jù)的數(shù)據(jù)模型[2]、從列控工程數(shù)據(jù)表自動創(chuàng)建列控配置模型的技術[3]、基于服務的鐵路信號數(shù)據(jù)一體化配置系統(tǒng)的方法[4]、基于ES(enterprise system)[5]技術的鐵路信號工程數(shù)據(jù)配置等。
由于不同類型的設備,甚至同一類型不同型號的設備所采用的數(shù)據(jù)結構都不相同,因此對于本文所指向的RBC設備來說,上述已有研究方案借鑒意義不大。本文旨在從列控地面工程數(shù)據(jù)和RBC工程化數(shù)據(jù)配置規(guī)則出發(fā),制定一套完整的工程化數(shù)據(jù)生成方法與實現(xiàn)方案,并基于此方案開發(fā)相應的工程化數(shù)據(jù)配置工具,為今后采用RBC設備的工程項目的順利實施提供有力保障。
列控地面工程數(shù)據(jù)作為RBC數(shù)據(jù)配置的輸入,由信號設計單位和鐵路局相關部門提供[6],是RBC數(shù)據(jù)配置的重要依據(jù)。
列控地面工程數(shù)據(jù)主要包括列控地面工程輸入數(shù)據(jù)和輸出數(shù)據(jù),其中,列控地面工程輸入數(shù)據(jù)由設計單位按照規(guī)定格式提供給設備供應廠家;列控地面工程輸出數(shù)據(jù)由列控中心廠家負責編制,提供給工程設計單位,作為工程設計的依據(jù)。列控地面工程數(shù)據(jù)的分類結構如圖1所示。
圖1 列控地面工程數(shù)據(jù)分類結構圖
圖1中,制作RBC系統(tǒng)線路數(shù)據(jù)所需列控地面工程數(shù)據(jù)表的詳細說明如下。
(1) 信號數(shù)據(jù)表。描述線路布置信號機和軌道區(qū)段的數(shù)據(jù)信息,包括信號機名稱、公里標、信號點類型、軌道區(qū)段名稱、區(qū)段載頻、區(qū)段長度等數(shù)據(jù)。
(2) 應答器位置表。主要描述線路布置的應答器數(shù)據(jù)信息,包括應答器名稱、編號、應答器公里標、應答器用途和類型等數(shù)據(jù)。
(3) 列車進路信息表。按車站劃分,每個車站編制一個進路信息表,描述該車站所有接車、發(fā)車進路的數(shù)據(jù)信息,包括進路編號、進路類型、該進路通過的應答器鏈接信息、道岔信息、進路速度信息和軌道區(qū)段信息等數(shù)據(jù)。
(4) 線路坡度表。主要描述線路的坡度數(shù)據(jù)信息,包括線路坡度值、坡度長度及變坡點公里標等數(shù)據(jù)。
(5) 線路速度表。主要描述線路的速度數(shù)據(jù)信息,包括線路速度值、速度長度及變速點公里標等數(shù)據(jù)。
(6) 分相區(qū)信息表。主要描述設置的分相區(qū)信息,包括分相區(qū)起點里程、終點里程及分相區(qū)長度信息。
(7) RBC信息表。主要描述RBC管轄的相關信息,包括RBC所在地區(qū)編號、RBC編號、電話號碼以及RBC的管轄范圍等數(shù)據(jù)。
(8) 道岔信息表。主要描述各個車站內(nèi)的道岔信息,包括道岔編號、岔尖里程以及正側線關系等數(shù)據(jù)。
(9) 斷鏈信息表。主要描述線路設置的長鏈、短鏈信息,包括斷鏈所在線別、斷鏈類型、斷鏈起點里程、終點里程及斷鏈長度等信息。
RBC數(shù)據(jù)由站別常量表、站別常量文件和站別數(shù)據(jù)3部分組成,其中站別常量表存儲格式為Excel,由14個數(shù)據(jù)表構成;站別常量文件存儲格式為Excel,由30個數(shù)據(jù)表構成;站別數(shù)據(jù)存儲格為C源碼,由34個文件構成。站別常量表、站別常量文件的文件結構分別如圖2、圖3所示。
圖 2 站別常量表結構圖
RBC數(shù)據(jù)的配置流程為:(1)以列控地面工程數(shù)據(jù)為輸入,配置站別常量表;(2)以站別常量表為輸入,配置站別常量文件;(3)將站別常量文件按規(guī)定格式轉化為站別數(shù)據(jù)。
站別常量表、站別常量文件是由列控地面工程數(shù)據(jù)至站別數(shù)據(jù)轉換的中間表,是驗證數(shù)據(jù)配置正確與否的重要依據(jù);站別數(shù)據(jù)是站別常量文件的C源碼形式,是RBC最終應用的線路數(shù)據(jù)形式。
圖 3 站別常量文件結構圖
RBC將列車控制邏輯與站別數(shù)據(jù)結合在一起,從而實現(xiàn)對列車的控制[7],由于站別數(shù)據(jù)的格式為C源碼,因此需按照RBC系統(tǒng)數(shù)據(jù)格式要求,將列控地面工程數(shù)據(jù)表轉換為對應的C源碼格式。文件之間的具體轉換關系如圖4所示。
其中,站別常量表是對列控地面工程數(shù)據(jù)表進行匯總和數(shù)字化處理后得到的中間表,將列控地面工程數(shù)據(jù)表中的信息轉變?yōu)閷臄?shù)字變量,并將RBC站別常量數(shù)據(jù)所需列控數(shù)據(jù)表進行整合,方便后續(xù)站別常量文件的計算、特殊線路設計處理以及數(shù)據(jù)的人工核驗。
圖4 RBC數(shù)據(jù)轉換流程圖
站別常量文件則是通過將圖4中的站別常量表按照RBC系統(tǒng)定義的站別常量數(shù)據(jù)結構體進行重新編排、整合和計算獲得。站別常量文件中各個表的結構與RBC系統(tǒng)中對線路數(shù)據(jù)定義的數(shù)據(jù)結構一一對應,方便后續(xù)C源碼的生成。
站別數(shù)據(jù)(C源碼)為RBC存儲和編譯站別常量數(shù)據(jù)的源文件。通過相關軟件將其與RBC邏輯代碼一同編譯,從而實現(xiàn)站別數(shù)據(jù)下裝。
根據(jù)數(shù)據(jù)處理流程,可以將數(shù)據(jù)生成分為兩個部分:(1) 由列控地面工程數(shù)據(jù)生成對應的站別常量表;(2) 由站別常量表生成對應的站別常量文件,以及對應的C源碼。
考慮到兩部分邏輯相互影響,存在數(shù)據(jù)生成錯誤的可能性,本文設計中將兩個部分劃分為兩個功能模塊進行開發(fā)。
將列控地面工程數(shù)據(jù)轉化為站別常量表的具體處理流程如圖5所示。
(1) 設置站別常量表模板路徑,并將模板進行拷貝,作為最后輸出的站別常量表;
(2) 讀取信號數(shù)據(jù)表和進路數(shù)據(jù)表,并生成閉塞進路列表;
(3) 按照線路順線,生成閉塞進路的結合關系,并將其寫入到站別常量表;
(4) 將閉塞進路信息寫入站別常量表中;
(5) 讀取應答器位置表,結合閉塞進路信息中的公里標和長度,建立應答器與閉塞進路的連接關系;
(6) 將應答器信息以及應答器和閉塞進路對應關系寫入站別常量表;
(7) 讀取分相區(qū)信息表,將分相區(qū)信息轉化至對應的閉塞進路中,形成軌道條件信息表,并將其寫入站別常量表中;
(8) 讀取線路坡度表,將坡度信息轉化至對應的閉塞進路中,并將其寫入站別常量表中;
(9) 讀取線路速度表,將速度信息轉化至對應的閉塞進路中,并將其寫入站別常量表中;
(10) 結合之前生成的信息,生成相關CBI信息表,并將其寫入站別常量表中;
(11) 保存寫入的站別常量表。
站別常量表轉化為對應的站別常量文件,并進一步轉化為RBC系統(tǒng)所需的站別數(shù)據(jù)(C源碼)的流程圖如圖6所示,具體處理流程如下。
(1) 設置站別常量文件模板路徑,并將模板進行拷貝,作為最后輸出的站別常量文件。
(2) 讀取站別常量表,按照相關邏輯生成對應的站別常量文件,將其寫入到站別常量文件中,并保存。
(3) 讀取生成的站別常量文件,將其轉化為對應的C源碼文件,生成完畢后關閉打開的站別常量文件。
數(shù)據(jù)生成工具主要包含5個模塊:數(shù)據(jù)讀取模塊、站別常量表計算模塊、站別常量文件計算模塊、C源碼生成模塊和數(shù)據(jù)寫入模塊。設計結構如圖7所示。
圖5 RBC站別常量表生成流程圖
圖 6 RBC站別常量文件及C源碼生成流程圖
其中數(shù)據(jù)讀取模塊主要負責對Excel文件進行讀取,包括讀取特定數(shù)據(jù)表、特定單元格的文本、公式和數(shù)值等。站別常量表和站別常量文件計算模塊主要負責站別常量表和站別常量文件的計算、組織和存儲,其具體處理邏輯參考文中2.3和2.4節(jié)所述;C源碼生成模塊主要負責由站別常量文件計算得出對應的站別數(shù)據(jù)的C源碼。數(shù)據(jù)寫入模塊分為兩部分:Excel文件寫入模塊和C源碼寫入模塊。Excel寫入模塊主要功能有創(chuàng)建、刪除電子表,寫入特定數(shù)據(jù)表、特定單元格的內(nèi)容、公式和數(shù)值,合并、拆分單元格,設置單元格格式等;C源碼寫入模塊主要負責將生成數(shù)據(jù)寫入到C源碼文件中。
圖7 數(shù)據(jù)生成工具設計結構圖
本文設計中采用C#和NPOI作為實現(xiàn)數(shù)據(jù)生成工具的技術手段。C#語言作為一種簡單的、現(xiàn)代的、面向對象的、類型安全的編程語言,不但提供了面向對象的編程技術,還提供了面向組件編程的支持技術[8]??紤]到列控地面工程數(shù)據(jù)表以及站別常量表和站別常量文件包含有大量數(shù)據(jù),且均為Excel格式,數(shù)據(jù)工具需能夠快速、正確、穩(wěn)定地讀取Excel文件,因此采用NPOI進行相關Excel文件的編輯。NPOI是基于Java版本的POI庫制作的.NET框架版本。NPOI具有開發(fā)簡易、讀取高效等特點。且其對于Excel沒有依賴性,可以在未安裝Excel的計算機上運行。.NET框架具有便利、穩(wěn)定等優(yōu)秀特性,是較適合編制數(shù)據(jù)制作工具的語言平臺。
數(shù)據(jù)生成工具驗證使用的數(shù)據(jù)為某線路中某個RBC管轄范圍內(nèi)的列控地面工程數(shù)據(jù),該線路設計數(shù)據(jù)容量[9]如表1所示。
表1 測試用列控地面工程數(shù)據(jù)容量表 單位:個
通過人工制作和數(shù)據(jù)生成工具自動生成兩種方式,生成同一臺RBC的站別數(shù)據(jù)。由于C源碼的數(shù)據(jù)結構與站別常量文件結構一一對應,且人工制作C源碼耗費時間較長,容易產(chǎn)生錯誤,因此數(shù)據(jù)生成測試的范圍限定在中間表環(huán)節(jié)。經(jīng)過測試,兩種制作方式所需的制作時間如表2所示。
表2 數(shù)據(jù)生成時間對比表
由表2可知,相對于傳統(tǒng)的人工制作方式,通過數(shù)據(jù)生成工具可以在較短時間內(nèi)完成RBC站別數(shù)據(jù)的生成,提高了站別數(shù)據(jù)的制作效率,縮短了列控地面工程數(shù)據(jù)變更時RBC軟件的更新周期。此外,通過人工和工具雙重方法制作雙份數(shù)據(jù),還可實現(xiàn)數(shù)據(jù)的相互校驗,提高數(shù)據(jù)正確率與安全性。
本文針對制作RBC用站別數(shù)據(jù)過程中存在的數(shù)據(jù)量大、易出錯以及制作周期長的問題,設計了基于C#和NPOI的工程化數(shù)據(jù)生成工具。該工具讀取列控地面工程數(shù)據(jù)后生成對應的站別數(shù)據(jù)。經(jīng)過測試,數(shù)據(jù)生成工具在保證數(shù)據(jù)正確性的基礎上,顯著提高了數(shù)據(jù)生成速度,縮短了軟件更新周期。通過人工和工具雙重數(shù)據(jù)制作相互核驗的方式,既保證了數(shù)據(jù)的正確性、完整性,又提高了制作效率。
為了提高軟件的計算速度,減少內(nèi)存占用,本文采用的模型僅涵蓋了常見線路設計模式。后續(xù)可將線路模型進行改進,如設計基于圖論的數(shù)據(jù)模型等,以提高復雜線路狀況下站別數(shù)據(jù)中間表生成的正確率。此外,考慮到列控地面工程數(shù)據(jù)可能存在錯誤,導致對應生成的站別數(shù)據(jù)錯誤,后續(xù)可增加列控地面工程數(shù)據(jù)核驗功能[10],實現(xiàn)在RBC站別常量數(shù)據(jù)生成之前對列控地面工程數(shù)據(jù)的核驗,防止后期因為列控地面工程數(shù)據(jù)錯誤造成的數(shù)據(jù)無效制作、重復制作,減少數(shù)據(jù)制作、核驗時間,減輕核驗人員工作量,提高RBC站別常量數(shù)據(jù)制作效率。