楊 平,謝 林
隨著計(jì)算機(jī)聯(lián)鎖的廣泛應(yīng)用,在面臨大規(guī)模的車站開通時(shí),提供一種通用聯(lián)鎖邏輯的生成方法顯得尤為重要。目前,自動(dòng)生成聯(lián)鎖邏輯的方式多數(shù)都采用高級(jí)語(yǔ)言來(lái)實(shí)現(xiàn),雖然實(shí)現(xiàn)了自動(dòng)化,但是對(duì)信號(hào)開發(fā)人員來(lái)說(shuō)要求很高,不僅要熟悉高級(jí)語(yǔ)言編程方法,又要理解聯(lián)鎖信號(hào)邏輯,二者缺一不可,否則在開發(fā)的過程中就有可能出現(xiàn)潛在的安全隱患。
針對(duì)上述問題,本文提供一種自動(dòng)生成車站通用聯(lián)鎖邏輯的搜索方法,將聯(lián)鎖信號(hào)邏輯與軟件編程分離開,由信號(hào)人員根據(jù)站場(chǎng)特點(diǎn),采用自定義的搜索語(yǔ)言來(lái)描述通用聯(lián)鎖邏輯,軟件只需按照通用方法的搜索原則來(lái)執(zhí)行搜索,無(wú)需考慮信號(hào)邏輯,以此來(lái)達(dá)到聯(lián)鎖邏輯生成的目的。
通用聯(lián)鎖邏輯生成整體架構(gòu)見圖1。本文結(jié)合計(jì)算機(jī)聯(lián)鎖技術(shù)條件,從數(shù)據(jù)通用處理、通用聯(lián)鎖邏輯搜索、參數(shù)過濾和通用聯(lián)鎖邏輯生成4個(gè)方面展開研究。首先根據(jù)站場(chǎng)特點(diǎn),定義搜索方法庫(kù)和搜索原則,由信號(hào)人員根據(jù)定義的搜索方法庫(kù)編寫通用聯(lián)鎖搜索規(guī)則,確定通用搜索邏輯;其次,根據(jù)實(shí)際站場(chǎng),讀取站場(chǎng)數(shù)據(jù),分析數(shù)據(jù)特征,為每個(gè)站場(chǎng)設(shè)備生成數(shù)據(jù)模塊,形成站場(chǎng)型數(shù)據(jù)結(jié)構(gòu);最后,利用由自定義語(yǔ)法編寫的、符合所有站場(chǎng)要求的通用聯(lián)鎖邏輯作為具體的搜索順序,根據(jù)該搜索順序執(zhí)行搜索程序,得到若干條搜索路徑,并過濾掉搜索路徑中不符合要求的站場(chǎng)設(shè)備,得到最終的搜索結(jié)果,利用該結(jié)果生成若干條分支,將分支進(jìn)行組合,生成整個(gè)支路的通用聯(lián)鎖邏輯[1?2]。

圖1 通用聯(lián)鎖邏輯生成整體架構(gòu)
數(shù)據(jù)通用處理用于分解由自定義語(yǔ)法編寫的符合所有站場(chǎng)的通用聯(lián)鎖邏輯模板,得到符合特定站場(chǎng)的具體搜索方法;結(jié)合特定的站場(chǎng)數(shù)據(jù),如站場(chǎng)的信號(hào)機(jī)、道岔、區(qū)段等元素的屬性,前后連接關(guān)系等數(shù)據(jù)信息,為站場(chǎng)中的信號(hào)機(jī)、道岔、區(qū)段等設(shè)備生成對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu),并將設(shè)備拼接成站場(chǎng)形狀,生成站場(chǎng)型數(shù)據(jù)結(jié)構(gòu)。
2.1.1 站場(chǎng)型數(shù)據(jù)結(jié)構(gòu)
結(jié)合項(xiàng)目具體的站型,根據(jù)每個(gè)站的特點(diǎn),先完成站場(chǎng)拓?fù)涞拿枋?形成站場(chǎng)數(shù)據(jù),然后為每個(gè)站場(chǎng)每個(gè)元素生成對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu),并將其按照站場(chǎng)的形式拼接成站場(chǎng)型數(shù)據(jù)結(jié)構(gòu)。某站場(chǎng)簡(jiǎn)化站場(chǎng)型數(shù)據(jù)結(jié)構(gòu)見圖2。為每個(gè)道岔設(shè)備、信號(hào)機(jī)設(shè)備和區(qū)段設(shè)備定義一個(gè)數(shù)據(jù)結(jié)構(gòu),每個(gè)結(jié)構(gòu)包含通用數(shù)據(jù)部分、上行指針場(chǎng)(prev)、下行指針場(chǎng)(next);由于道岔設(shè)備可以走反位,道岔數(shù)據(jù)結(jié)構(gòu)增加定義一個(gè)反位指針場(chǎng)(rvs)。

圖2 站場(chǎng)型數(shù)據(jù)結(jié)構(gòu)
2.1.2 通用布爾代數(shù)語(yǔ)法解析
通用布爾代數(shù)語(yǔ)法文件采用通用搜索方法[<關(guān)鍵字過濾>參數(shù)]的形式定義了通用站場(chǎng)形狀和邏輯的相關(guān)抽象信息,聯(lián)鎖在生成具體的站場(chǎng)布爾代數(shù)邏輯時(shí),對(duì)通用布爾代數(shù)語(yǔ)法文件進(jìn)行解析,生成每條語(yǔ)法的搜索方式。通用布爾代數(shù)語(yǔ)法解析過程見圖3。

圖3 通用布爾代數(shù)語(yǔ)法解析
根據(jù)通用布爾代數(shù)語(yǔ)法解析結(jié)果,結(jié)合具體的站場(chǎng)數(shù)據(jù),識(shí)別每條規(guī)則包含的所有搜索方法,為每一種搜索方法生成若干條搜索路徑,例如:以某信號(hào)機(jī)為始端的進(jìn)路可能存在多條,最后就會(huì)生成多條路徑。通用邏輯搜索包含的方法如下[3]。
1)相關(guān)進(jìn)路搜索:用于搜索每條符合要求的進(jìn)路或者進(jìn)路上的區(qū)段、道岔(包括防護(hù)道岔和帶動(dòng)道岔)及信號(hào)機(jī)設(shè)備。
2)相關(guān)拓?fù)渌阉?依據(jù)生成的站場(chǎng)型數(shù)據(jù)結(jié)構(gòu),按照信號(hào)設(shè)備在拓?fù)浣Y(jié)構(gòu)上的連接關(guān)系進(jìn)行搜索。
以圖4所示站場(chǎng)為例,搜索ⅠAG的相鄰設(shè)備,可以用拓?fù)渌阉?得到ⅠAG旁邊的信號(hào)機(jī)X或者兩旁的區(qū)段XJG和1DG。

圖4 拓?fù)浞较蛩阉?/p>
由于ⅠAG是沒有方向的,搜索時(shí),只能往左或者往右搜索,如果想搜索信號(hào)機(jī)的外方第一區(qū)段,根據(jù)圖4所示信號(hào)X和SⅠ方向不一致,顯然采用固定往左或者往右的形式來(lái)搜索不通用,不能實(shí)現(xiàn)搜索目的。如果信號(hào)設(shè)備本身帶方向,可以定義一種帶方向的拓?fù)渌阉?結(jié)合設(shè)備本身的方向,來(lái)判斷邏輯搜索方向。圖4中,由于信號(hào)機(jī)X和SⅠ本身帶方向,且方向不一致,如果要檢查進(jìn)路X-SⅠ和SⅠ-X的始端信號(hào)內(nèi)方和外方是否被列車占用,以設(shè)備的方向?yàn)閰⒖?沿著該設(shè)備的拓?fù)溥B接方向的相同方向或者相反方向搜索,可采用通用的一條語(yǔ)句來(lái)表達(dá)始端信號(hào)內(nèi)方和外方被列車占用[4?8]。
針對(duì)道岔設(shè)備,如果是對(duì)向道岔,可以沿著道岔的反位方向進(jìn)行搜索,這樣可能會(huì)出現(xiàn)多個(gè)路徑的情況。例如1#道岔,往右搜索時(shí),有2個(gè)搜索方向,1#定位和1#反位,生成2條路徑。
3)道岔搜索/道岔區(qū)段搜索:以當(dāng)前設(shè)備為參考,搜索該設(shè)備所在的所有道岔/道岔區(qū)段。
4)相關(guān)中岔區(qū)域搜索:車站包含到發(fā)線出岔的場(chǎng)景時(shí),分歧道岔的鎖閉方式與進(jìn)路中的道岔鎖閉方式不同,因此采用進(jìn)路搜索的方式,無(wú)法實(shí)現(xiàn)到發(fā)線出岔的聯(lián)鎖邏輯。
以圖5所示站場(chǎng)為例,定義S6至X6之間的區(qū)域?yàn)橹胁韰^(qū)域,建立以X6或者S6為終端的列車進(jìn)路時(shí),需要將設(shè)備X6至S6之間的設(shè)備納入到聯(lián)鎖邏輯中,正常的進(jìn)路搜索邏輯無(wú)法搜索到終端X6后方的設(shè)備,定義中岔搜索方式,針對(duì)區(qū)域S6至X6,可搜索區(qū)域中的道岔、無(wú)岔區(qū)段、調(diào)車信號(hào)機(jī)和左側(cè)或者右側(cè)的出站信號(hào)機(jī),實(shí)現(xiàn)中岔邏輯。

圖5 到發(fā)線出岔
通過中岔區(qū)域搜索,建立以X6或者S6為終端的列車進(jìn)路時(shí),檢查中岔在規(guī)定位置,中岔區(qū)段及無(wú)岔區(qū)段在空閑狀態(tài),中岔區(qū)域的調(diào)車信號(hào)機(jī)未建立調(diào)車進(jìn)路;進(jìn)路解鎖時(shí),可實(shí)現(xiàn)中岔道岔區(qū)段按正常走車分段解鎖,或者車壓入中岔區(qū)域,延時(shí)3 min解鎖。
通過中岔區(qū)域搜索,建立以X6或者S6為始端的發(fā)車進(jìn)路時(shí),將中岔道岔防護(hù)鎖閉在定位,并在信號(hào)開放的過程中持續(xù)檢查,車完全壓入發(fā)車進(jìn)路內(nèi)方,解除鎖閉。
5)非進(jìn)路區(qū)域搜索:用于搜索聯(lián)鎖邏輯中涉及到的非進(jìn)路區(qū)域。
為了方便列車的解體和編組,會(huì)將集中區(qū)聯(lián)鎖的牽出線部分線路作為車列的推送線使用,由調(diào)車員指揮車列在推送線上往返調(diào)車,這種調(diào)車方式稱為非進(jìn)路調(diào)車。非進(jìn)路調(diào)車需借用集中區(qū)聯(lián)鎖的部分區(qū)域來(lái)進(jìn)行,因此必須有單獨(dú)的搜索方式來(lái)搜索非進(jìn)路區(qū)域,實(shí)現(xiàn)非進(jìn)路區(qū)域與集中聯(lián)鎖區(qū)域中的調(diào)車進(jìn)路和列車進(jìn)路之間的聯(lián)鎖制約關(guān)系。
以圖6所示站場(chǎng)為例,定義牽出線D7G至TF1G的區(qū)域?yàn)榉沁M(jìn)路區(qū)域,此區(qū)域未建立非進(jìn)路調(diào)車時(shí),該區(qū)域中的道岔和信號(hào)機(jī)由集中聯(lián)鎖控制,當(dāng)需要建立非進(jìn)路調(diào)車時(shí),需先采用非進(jìn)路區(qū)域搜索識(shí)別該站場(chǎng)中的非進(jìn)路區(qū)域,實(shí)現(xiàn)非進(jìn)路與區(qū)域中的調(diào)車信號(hào)機(jī)、道岔、基本調(diào)車進(jìn)路、迎面進(jìn)路之間的敵對(duì)關(guān)系檢查。圖6中,以非進(jìn)路牽出線邊上的第一架調(diào)車信號(hào)機(jī)D7為起始點(diǎn),通過關(guān)鍵道岔13#和67#的位置,以TF1G為結(jié)束條件,搜索出一條非進(jìn)路區(qū)域,并獲取區(qū)域中相關(guān)的信號(hào)機(jī)、道岔、進(jìn)路及迎面進(jìn)路信息[5?7]。

圖6 非進(jìn)路區(qū)域
6)溜放區(qū)域搜索:用于搜索聯(lián)鎖邏輯中涉及到的溜放區(qū)域。
溜放是由牽出線通向某一股道或者某一線路的所有調(diào)車進(jìn)路的組合。由于溜放的隨機(jī)性和連續(xù)性,在溜放進(jìn)路建立時(shí),必須確保聯(lián)鎖邏輯的正確性,因此需要提供一種溜放的搜索方式,來(lái)實(shí)現(xiàn)溜放區(qū)域的搜索。
以圖7所示站場(chǎng)為例,定義牽出線D7G至TF1G和TF2G的區(qū)域?yàn)榱锓艆^(qū)域,從始端信號(hào)機(jī)D7開始,根據(jù)關(guān)鍵道岔13#和69#的位置,搜索到至溜放進(jìn)路終端D39、D43結(jié)束,該條路徑上的所有設(shè)備都是本條溜放區(qū)域上的元素。并從路徑中區(qū)別以下信息。

圖7 溜放區(qū)域
前進(jìn)信號(hào):該條路徑中信號(hào)機(jī)方向與始端方向相同的信號(hào)機(jī),包含溜放始端。
后退信號(hào):該條路徑中信號(hào)機(jī)方向與始端方向相反的信號(hào)機(jī),包含溜放終端。
按照上述通用邏輯進(jìn)行搜索,會(huì)生成若干個(gè)分支,每個(gè)分支上的元素由該條路徑中的元素組成,如圖4所示,假如進(jìn)路X-SⅠ是一條搜索到的具體路徑,則該路徑中包含的元素有X、ⅠAG、1#、SⅠ、ⅠG和進(jìn)路X-SⅠ,顯然不是所有的元素都滿足要求,要根據(jù)特定的限制條件取滿足要求的結(jié)果,因此需要對(duì)路徑中的元素進(jìn)行過濾,刪掉不符合要求的元素,過濾方法包括下列項(xiàng)目。
1)方向參數(shù)過濾:只取與設(shè)備相同方向或者相反方向的元素。
2)參數(shù)類型過濾:只取符合的或與設(shè)備類型相同的元素。例如取路徑上的信號(hào)機(jī)、道岔、區(qū)段;如果路徑是進(jìn)路,還可以取進(jìn)路的始端、終端和進(jìn)路本身。
3)參數(shù)個(gè)數(shù)過濾:只取符合要求的一個(gè)或多個(gè)元素。
4)關(guān)鍵參數(shù)過濾:如果關(guān)鍵參數(shù)沒有生成,該條分支邏輯可以全部不生成。
5)關(guān)鍵分支過濾:如果關(guān)鍵分支邏輯沒有生成,與該條分支邏輯有關(guān)系的所有分支邏輯全部不生成。
每個(gè)通用搜索方法按照一定的規(guī)律存儲(chǔ)每一個(gè)分支的結(jié)果,并進(jìn)行分支合并,分支之間連接的數(shù)學(xué)運(yùn)算關(guān)系由通用語(yǔ)法給出。
以圖8所示站場(chǎng)為例,建立X-SⅠ的列車進(jìn)路時(shí),要檢查進(jìn)路中的區(qū)段ⅠBG、3DG和ⅠG空閑,敵對(duì)信號(hào)D1、SⅠ未開放,迎面敵對(duì)進(jìn)路未建立。

圖8 示例站
實(shí)現(xiàn)該需求時(shí),定義通用搜索語(yǔ)法:“進(jìn)路搜索[<分支1>*<分支2>*<分支3>*<分支4>]”,進(jìn)路X-SⅠ是當(dāng)前路徑,分3個(gè)分支搜索。分支1利用區(qū)段過濾關(guān)鍵字,搜索進(jìn)路中的所有區(qū)段,檢查區(qū)段空閑;分支2利用信號(hào)過濾關(guān)鍵字,搜索進(jìn)路中的敵對(duì)信號(hào),查敵對(duì)信號(hào)未開放,即以D1和SⅠ為始端未建立進(jìn)路;分支3采用參數(shù)過濾方式,即搜索與進(jìn)路終端信號(hào)相隔一個(gè)股道/無(wú)岔區(qū)段有列車性質(zhì)的信號(hào)機(jī)XⅠ,以XⅠ為終端未建立列車或者調(diào)車進(jìn)路。由于股道信號(hào)機(jī)類型不確定,需要增加一個(gè)分支4,與分支3功能類似,搜索與進(jìn)路終端信號(hào)相隔一個(gè)股道/無(wú)岔區(qū)段僅有調(diào)車性質(zhì)的信號(hào)機(jī)[9?10]。
通用聯(lián)鎖邏輯實(shí)現(xiàn)的過程,不僅可以大大減少信號(hào)設(shè)計(jì)人員的工作強(qiáng)度,而且對(duì)聯(lián)鎖邏輯的安全性有重要的影響。聯(lián)鎖邏輯的實(shí)現(xiàn),可以有很多方式,但是聯(lián)鎖邏輯和編程能力如果不分開,對(duì)人員的要求會(huì)很高,本文提供的實(shí)現(xiàn)方式,信號(hào)邏輯和軟件分離,錯(cuò)誤率較低,但是該方式對(duì)特殊站型的適應(yīng)性不高,在今后的工作中需要不斷積累新的站型,完善和優(yōu)化通用聯(lián)鎖邏輯。