楊 平,謝 林
隨著計算機聯(lián)鎖的廣泛應(yīng)用,在面臨大規(guī)模的車站開通時,提供一種通用聯(lián)鎖邏輯的生成方法顯得尤為重要。目前,自動生成聯(lián)鎖邏輯的方式多數(shù)都采用高級語言來實現(xiàn),雖然實現(xiàn)了自動化,但是對信號開發(fā)人員來說要求很高,不僅要熟悉高級語言編程方法,又要理解聯(lián)鎖信號邏輯,二者缺一不可,否則在開發(fā)的過程中就有可能出現(xiàn)潛在的安全隱患。
針對上述問題,本文提供一種自動生成車站通用聯(lián)鎖邏輯的搜索方法,將聯(lián)鎖信號邏輯與軟件編程分離開,由信號人員根據(jù)站場特點,采用自定義的搜索語言來描述通用聯(lián)鎖邏輯,軟件只需按照通用方法的搜索原則來執(zhí)行搜索,無需考慮信號邏輯,以此來達到聯(lián)鎖邏輯生成的目的。
通用聯(lián)鎖邏輯生成整體架構(gòu)見圖1。本文結(jié)合計算機聯(lián)鎖技術(shù)條件,從數(shù)據(jù)通用處理、通用聯(lián)鎖邏輯搜索、參數(shù)過濾和通用聯(lián)鎖邏輯生成4個方面展開研究。首先根據(jù)站場特點,定義搜索方法庫和搜索原則,由信號人員根據(jù)定義的搜索方法庫編寫通用聯(lián)鎖搜索規(guī)則,確定通用搜索邏輯;其次,根據(jù)實際站場,讀取站場數(shù)據(jù),分析數(shù)據(jù)特征,為每個站場設(shè)備生成數(shù)據(jù)模塊,形成站場型數(shù)據(jù)結(jié)構(gòu);最后,利用由自定義語法編寫的、符合所有站場要求的通用聯(lián)鎖邏輯作為具體的搜索順序,根據(jù)該搜索順序執(zhí)行搜索程序,得到若干條搜索路徑,并過濾掉搜索路徑中不符合要求的站場設(shè)備,得到最終的搜索結(jié)果,利用該結(jié)果生成若干條分支,將分支進行組合,生成整個支路的通用聯(lián)鎖邏輯[1?2]。
圖1 通用聯(lián)鎖邏輯生成整體架構(gòu)
數(shù)據(jù)通用處理用于分解由自定義語法編寫的符合所有站場的通用聯(lián)鎖邏輯模板,得到符合特定站場的具體搜索方法;結(jié)合特定的站場數(shù)據(jù),如站場的信號機、道岔、區(qū)段等元素的屬性,前后連接關(guān)系等數(shù)據(jù)信息,為站場中的信號機、道岔、區(qū)段等設(shè)備生成對應(yīng)的數(shù)據(jù)結(jié)構(gòu),并將設(shè)備拼接成站場形狀,生成站場型數(shù)據(jù)結(jié)構(gòu)。
2.1.1 站場型數(shù)據(jù)結(jié)構(gòu)
結(jié)合項目具體的站型,根據(jù)每個站的特點,先完成站場拓撲的描述,形成站場數(shù)據(jù),然后為每個站場每個元素生成對應(yīng)的數(shù)據(jù)結(jié)構(gòu),并將其按照站場的形式拼接成站場型數(shù)據(jù)結(jié)構(gòu)。某站場簡化站場型數(shù)據(jù)結(jié)構(gòu)見圖2。為每個道岔設(shè)備、信號機設(shè)備和區(qū)段設(shè)備定義一個數(shù)據(jù)結(jié)構(gòu),每個結(jié)構(gòu)包含通用數(shù)據(jù)部分、上行指針場(prev)、下行指針場(next);由于道岔設(shè)備可以走反位,道岔數(shù)據(jù)結(jié)構(gòu)增加定義一個反位指針場(rvs)。
圖2 站場型數(shù)據(jù)結(jié)構(gòu)
2.1.2 通用布爾代數(shù)語法解析
通用布爾代數(shù)語法文件采用通用搜索方法[<關(guān)鍵字過濾>參數(shù)]的形式定義了通用站場形狀和邏輯的相關(guān)抽象信息,聯(lián)鎖在生成具體的站場布爾代數(shù)邏輯時,對通用布爾代數(shù)語法文件進行解析,生成每條語法的搜索方式。通用布爾代數(shù)語法解析過程見圖3。
圖3 通用布爾代數(shù)語法解析
根據(jù)通用布爾代數(shù)語法解析結(jié)果,結(jié)合具體的站場數(shù)據(jù),識別每條規(guī)則包含的所有搜索方法,為每一種搜索方法生成若干條搜索路徑,例如:以某信號機為始端的進路可能存在多條,最后就會生成多條路徑。通用邏輯搜索包含的方法如下[3]。
1)相關(guān)進路搜索:用于搜索每條符合要求的進路或者進路上的區(qū)段、道岔(包括防護道岔和帶動道岔)及信號機設(shè)備。
2)相關(guān)拓撲搜索:依據(jù)生成的站場型數(shù)據(jù)結(jié)構(gòu),按照信號設(shè)備在拓撲結(jié)構(gòu)上的連接關(guān)系進行搜索。
以圖4所示站場為例,搜索ⅠAG的相鄰設(shè)備,可以用拓撲搜索,得到ⅠAG旁邊的信號機X或者兩旁的區(qū)段XJG和1DG。
圖4 拓撲方向搜索
由于ⅠAG是沒有方向的,搜索時,只能往左或者往右搜索,如果想搜索信號機的外方第一區(qū)段,根據(jù)圖4所示信號X和SⅠ方向不一致,顯然采用固定往左或者往右的形式來搜索不通用,不能實現(xiàn)搜索目的。如果信號設(shè)備本身帶方向,可以定義一種帶方向的拓撲搜索,結(jié)合設(shè)備本身的方向,來判斷邏輯搜索方向。圖4中,由于信號機X和SⅠ本身帶方向,且方向不一致,如果要檢查進路X-SⅠ和SⅠ-X的始端信號內(nèi)方和外方是否被列車占用,以設(shè)備的方向為參考,沿著該設(shè)備的拓撲連接方向的相同方向或者相反方向搜索,可采用通用的一條語句來表達始端信號內(nèi)方和外方被列車占用[4?8]。
針對道岔設(shè)備,如果是對向道岔,可以沿著道岔的反位方向進行搜索,這樣可能會出現(xiàn)多個路徑的情況。例如1#道岔,往右搜索時,有2個搜索方向,1#定位和1#反位,生成2條路徑。
3)道岔搜索/道岔區(qū)段搜索:以當前設(shè)備為參考,搜索該設(shè)備所在的所有道岔/道岔區(qū)段。
4)相關(guān)中岔區(qū)域搜索:車站包含到發(fā)線出岔的場景時,分歧道岔的鎖閉方式與進路中的道岔鎖閉方式不同,因此采用進路搜索的方式,無法實現(xiàn)到發(fā)線出岔的聯(lián)鎖邏輯。
以圖5所示站場為例,定義S6至X6之間的區(qū)域為中岔區(qū)域,建立以X6或者S6為終端的列車進路時,需要將設(shè)備X6至S6之間的設(shè)備納入到聯(lián)鎖邏輯中,正常的進路搜索邏輯無法搜索到終端X6后方的設(shè)備,定義中岔搜索方式,針對區(qū)域S6至X6,可搜索區(qū)域中的道岔、無岔區(qū)段、調(diào)車信號機和左側(cè)或者右側(cè)的出站信號機,實現(xiàn)中岔邏輯。
圖5 到發(fā)線出岔
通過中岔區(qū)域搜索,建立以X6或者S6為終端的列車進路時,檢查中岔在規(guī)定位置,中岔區(qū)段及無岔區(qū)段在空閑狀態(tài),中岔區(qū)域的調(diào)車信號機未建立調(diào)車進路;進路解鎖時,可實現(xiàn)中岔道岔區(qū)段按正常走車分段解鎖,或者車壓入中岔區(qū)域,延時3 min解鎖。
通過中岔區(qū)域搜索,建立以X6或者S6為始端的發(fā)車進路時,將中岔道岔防護鎖閉在定位,并在信號開放的過程中持續(xù)檢查,車完全壓入發(fā)車進路內(nèi)方,解除鎖閉。
5)非進路區(qū)域搜索:用于搜索聯(lián)鎖邏輯中涉及到的非進路區(qū)域。
為了方便列車的解體和編組,會將集中區(qū)聯(lián)鎖的牽出線部分線路作為車列的推送線使用,由調(diào)車員指揮車列在推送線上往返調(diào)車,這種調(diào)車方式稱為非進路調(diào)車。非進路調(diào)車需借用集中區(qū)聯(lián)鎖的部分區(qū)域來進行,因此必須有單獨的搜索方式來搜索非進路區(qū)域,實現(xiàn)非進路區(qū)域與集中聯(lián)鎖區(qū)域中的調(diào)車進路和列車進路之間的聯(lián)鎖制約關(guān)系。
以圖6所示站場為例,定義牽出線D7G至TF1G的區(qū)域為非進路區(qū)域,此區(qū)域未建立非進路調(diào)車時,該區(qū)域中的道岔和信號機由集中聯(lián)鎖控制,當需要建立非進路調(diào)車時,需先采用非進路區(qū)域搜索識別該站場中的非進路區(qū)域,實現(xiàn)非進路與區(qū)域中的調(diào)車信號機、道岔、基本調(diào)車進路、迎面進路之間的敵對關(guān)系檢查。圖6中,以非進路牽出線邊上的第一架調(diào)車信號機D7為起始點,通過關(guān)鍵道岔13#和67#的位置,以TF1G為結(jié)束條件,搜索出一條非進路區(qū)域,并獲取區(qū)域中相關(guān)的信號機、道岔、進路及迎面進路信息[5?7]。
圖6 非進路區(qū)域
6)溜放區(qū)域搜索:用于搜索聯(lián)鎖邏輯中涉及到的溜放區(qū)域。
溜放是由牽出線通向某一股道或者某一線路的所有調(diào)車進路的組合。由于溜放的隨機性和連續(xù)性,在溜放進路建立時,必須確保聯(lián)鎖邏輯的正確性,因此需要提供一種溜放的搜索方式,來實現(xiàn)溜放區(qū)域的搜索。
以圖7所示站場為例,定義牽出線D7G至TF1G和TF2G的區(qū)域為溜放區(qū)域,從始端信號機D7開始,根據(jù)關(guān)鍵道岔13#和69#的位置,搜索到至溜放進路終端D39、D43結(jié)束,該條路徑上的所有設(shè)備都是本條溜放區(qū)域上的元素。并從路徑中區(qū)別以下信息。
圖7 溜放區(qū)域
前進信號:該條路徑中信號機方向與始端方向相同的信號機,包含溜放始端。
后退信號:該條路徑中信號機方向與始端方向相反的信號機,包含溜放終端。
按照上述通用邏輯進行搜索,會生成若干個分支,每個分支上的元素由該條路徑中的元素組成,如圖4所示,假如進路X-SⅠ是一條搜索到的具體路徑,則該路徑中包含的元素有X、ⅠAG、1#、SⅠ、ⅠG和進路X-SⅠ,顯然不是所有的元素都滿足要求,要根據(jù)特定的限制條件取滿足要求的結(jié)果,因此需要對路徑中的元素進行過濾,刪掉不符合要求的元素,過濾方法包括下列項目。
1)方向參數(shù)過濾:只取與設(shè)備相同方向或者相反方向的元素。
2)參數(shù)類型過濾:只取符合的或與設(shè)備類型相同的元素。例如取路徑上的信號機、道岔、區(qū)段;如果路徑是進路,還可以取進路的始端、終端和進路本身。
3)參數(shù)個數(shù)過濾:只取符合要求的一個或多個元素。
4)關(guān)鍵參數(shù)過濾:如果關(guān)鍵參數(shù)沒有生成,該條分支邏輯可以全部不生成。
5)關(guān)鍵分支過濾:如果關(guān)鍵分支邏輯沒有生成,與該條分支邏輯有關(guān)系的所有分支邏輯全部不生成。
每個通用搜索方法按照一定的規(guī)律存儲每一個分支的結(jié)果,并進行分支合并,分支之間連接的數(shù)學(xué)運算關(guān)系由通用語法給出。
以圖8所示站場為例,建立X-SⅠ的列車進路時,要檢查進路中的區(qū)段ⅠBG、3DG和ⅠG空閑,敵對信號D1、SⅠ未開放,迎面敵對進路未建立。
圖8 示例站
實現(xiàn)該需求時,定義通用搜索語法:“進路搜索[<分支1>*<分支2>*<分支3>*<分支4>]”,進路X-SⅠ是當前路徑,分3個分支搜索。分支1利用區(qū)段過濾關(guān)鍵字,搜索進路中的所有區(qū)段,檢查區(qū)段空閑;分支2利用信號過濾關(guān)鍵字,搜索進路中的敵對信號,查敵對信號未開放,即以D1和SⅠ為始端未建立進路;分支3采用參數(shù)過濾方式,即搜索與進路終端信號相隔一個股道/無岔區(qū)段有列車性質(zhì)的信號機XⅠ,以XⅠ為終端未建立列車或者調(diào)車進路。由于股道信號機類型不確定,需要增加一個分支4,與分支3功能類似,搜索與進路終端信號相隔一個股道/無岔區(qū)段僅有調(diào)車性質(zhì)的信號機[9?10]。
通用聯(lián)鎖邏輯實現(xiàn)的過程,不僅可以大大減少信號設(shè)計人員的工作強度,而且對聯(lián)鎖邏輯的安全性有重要的影響。聯(lián)鎖邏輯的實現(xiàn),可以有很多方式,但是聯(lián)鎖邏輯和編程能力如果不分開,對人員的要求會很高,本文提供的實現(xiàn)方式,信號邏輯和軟件分離,錯誤率較低,但是該方式對特殊站型的適應(yīng)性不高,在今后的工作中需要不斷積累新的站型,完善和優(yōu)化通用聯(lián)鎖邏輯。