黃 龍
(西南交通大學 信息科學與技術學院,成都 610031)
計算機聯鎖系統是信號系統中關鍵的安全防護系統。其核心功能就是對車站內的道岔、信號機以及軌道電路屏蔽門、防淹門進行實時檢查及控制,保證車站作業順利執行[1-2]。主要涉及采集設備狀態信息、人員的操作信息,在進行聯鎖邏輯運算后,輸出控制命令對設備進行驅動[9]。
根據實際線路,參考VPI型雙機熱備型計算機聯鎖系統,本文考慮通用性城軌計算機聯鎖仿真系統設計開發,對一些關鍵技術進行了探討,提出解決方案。主要內容包括:
利用SQL sever2014具有大容量數據存儲的特點,存儲信號機、軌道電路、道岔以及進路等線路靜態數據,在一定程度上提高了線路設備存儲的規范性和通用性;基于VS2013軟件開發平臺,采用C#語言設計系統底層軟件,實現對計算機聯鎖線路的建模和邏輯運算,闡述了建模的方法和步驟;采用傳輸控制協議(TCP)構建通信系統。
城軌計算機聯鎖和傳統計算機聯鎖一樣,按照系統層次結構分類,可以分為3個層次,即聯鎖上位機 (人機會話層)、聯鎖邏輯運算層和采集驅動層[3]。
仿真平臺能根據線路設備靜態數據編制數據庫,繪制平面布置圖,并生成進路表。點擊上位機設備生成操作命令,傳輸至聯鎖邏輯層進行聯鎖邏輯判斷,并生成驅動信息傳至驅動板驅動設備,并使對應設備驅動表示燈閃爍3 s。采集驅動仿真平臺中采集板時刻采集上位機的設備狀態,點亮對應設備表示燈,并將設備狀態信息回傳給聯鎖運算層。軟件實現中通過TCP通信接口實現上位機操作命令、驅動命令以及采集信息的互聯互通。系統整體框架如圖1所示。

圖1 計算機聯鎖系統結構
TCP/UDP協議由數據鏈路層、網絡層、傳輸層和應用層4層結構組成。
其中TCP是面向連接的協議,在收發數據之前需要進行3次握手,成功后才能建立可靠連接。確保了通信數據可靠、順序到達目的地。針對不同的鏈接分配獨立緩沖區,進一步減少可能的丟包問題[4-5]。
UDP協議面向無連接通信,可能出現丟失、亂序到達的問題,同樣由于沒有流控制,如果開發控制不當,可能導致數據風暴問題[4-5]。
本文采用TCP通信,以保證計算機聯鎖系統數據傳輸的實時性、有效性、可靠性。
在本設計中,需要將聯鎖上位機,聯鎖邏輯層和采集驅動系統建立通信。采用同一IP地址綁定多個端口的方法,實現不同設備操作命令和驅動信息的獨立傳輸,使信息傳輸高效可靠。在本系統中,IP地址統一設置為127.0.0.1,采用4個端口分別傳輸信息。聯鎖上位機與采集驅動系統TCP通信設計與實現原理圖如圖2所示。(1)端口號8888,以該端口實現聯鎖上位機的設備狀態信息傳輸和進路辦理;(2)端口號8889,以該端口實現信號機操作命令和驅動信息的傳輸;(3)端口號8890,以該端口實現軌道電路操作命令和驅動信息的傳輸;(4)端口號8891,以該端口實現道岔操作命令和驅動信息的傳輸。

圖2 TCP通信設計與實現原理圖
聯鎖數據由靜態數據和動態數據兩部分共同組成,兩種數據相互關聯、缺一不可[6]。
計算機聯鎖線路中需要存儲道岔、信號機、軌道區段、進路等大量數據,采用數據庫存儲有利于數據的規范、擴展和增強配置數據通用性。若要對不同的聯鎖區進行相關設計,只需要按照實際線路的設備數據在數據庫中重新配置即可。
“進路表”和“站場形”是聯鎖軟件兩種不同形式的靜態數據結構。進路表方式較站場形數據結構方式而言,實現起來較為簡易且搜索過程簡單。站場形方式一旦指針發生錯誤,則會產生一些程序搜索問題,很難發現和找到問題所在。故本文采用進路表方式靜態數據結構。把信號機、道岔、軌道電路、絕緣節、進路的靜態數據分類存放到數據庫中[6]。
聯鎖數據中的靜態數據指不發生變化的數據。信號機靜態數據包括編號、名稱、類型、方向、內方第一區段、防護方向,橫坐標以及縱坐標;軌道電路靜態數據包括編號、名稱,始端橫坐標和縱坐標、終端橫坐標與縱坐標、軌道類型、名稱位置等靜態數據;道岔靜態數據包括編號、名稱、岔心橫縱坐標,道岔類型,名稱位置等數據。
在軟件實現中,每個靜態數據都定義一個變量來存儲數據庫中對應的信息,形成設備靜態數據模塊。以信號機為例,其數據模塊如表1所示。

表1 信號機靜態數據模塊
仿真系統動態數據包括操作變量、狀態變量、控制變量。
操作變量為操作人員點擊按鈕需要的變量,操作人員在聯鎖上位機完成點擊操作之后,上位機程序將會對操作指令信息進行處理,形成一條合法的操作命令,傳送至聯鎖邏輯運算模塊進行處理。
仿真系統控制變量,用于存儲經邏輯處理后的設備驅動命令,控制信號機的開放、關閉和道岔的定位、反位動作以及軌道的占用出清。
狀態變量用于存儲上位機設備狀態信息,反映信號機、道岔、軌道電路目前工作狀態。狀態信息的傳輸刷新周期設置為1.5 s。設置timer將上位機狀態信息發送至采集驅動系統和聯鎖邏輯層,以便實時檢測設備狀態信息及下一次對操作命令的處理。
以道岔動態數據結構為例,定義布爾變量包反映道岔定操、反操、擠岔、單鎖以及單解等。其動態數據結構為:


SQL Server 是由 Microsoft 開發和推廣的,具有開放、操作簡單、安全性高,可伸縮性和可擴展性好以及與相關軟件集成程度高等優點,為關系型數據和結構化數據提供了更安全可靠的存儲功能[7]。
本文數據庫共包含8個數據表,每一個數據表均可供程序調用。數據表對象的設計視圖與靜態數據模塊設計結構相一致。
以信號機為例,信號機表:用于存放信號機的名稱、編號、類型、坐標、信號機方向、信號機防護方向和內方第一區段信息。數據庫的實現如圖3所示。

圖3 數據庫的實現實例
聯鎖上位機界面主要包括界面顯示模塊和功能實現模塊。
界面顯示主要包括界面初始化顯示以及驅動顯示,顯示設備主要包括信號機、軌道電路、道岔、絕緣節以及聯鎖區特殊設備及按鈕。為了系統的通用性及可擴展性,界面布置中利用hScrollBar1_Scroll和vScrollBar1_Scroll控件自定義滾動條,通過滾動滾動條實現整條線路的布置。
對于界面初始化顯示,這里主要介紹信號機、軌道電路、道岔以及絕緣節的繪制過程。界面初始化流程圖和初始化界面如圖4和圖5所示。
對于界面驅動顯示,根據經聯鎖邏輯回傳的驅動命令,改變站場設備的動態數據(布爾值),在界面中設置timer定時器,采用GDI+技術根據設備最新布爾值對設備進行刷新重繪。

圖4 界面初始化流程圖

圖5 初始化界面
聯鎖系統的功能主要包括軌道電路信息處理、進路控制、道岔控制、信號顯示以及跟其他系統接口交換信息等[8]。
本文的聯鎖功能全部使用對應功能按鈕實現,操作人員必須首先點擊相關功能按鈕,功能操作變量存儲功能按鈕類別,根據功能操作變量類別再采用坐標位置匹配的方式查找到對應設備鼠標右擊,這一過程都在Form1_MouseClick(object sender, MouseEvent-Args e)函數中執行。部分功能按鈕如圖6所示。

圖6 計算機聯鎖功能按鈕
坐標位置匹配是指利用鼠標左鍵點擊時的坐標位置,去循環匹配線路中設備的坐標位置,找到對應功能操作的設備,并發送對應的操作命令。操作命令基本格式:功能標識(包頭)+設備標識+設備編號+設備名稱,設備標識分為4類,如表2所示。
信號機:作為進路始、終端,發送數據包頭部“0x00”。對其單獨操作,包括信號重開,燈斷絲,信號封鎖操作,發送數據包頭部“0x01”。

表2 操作命令分類
軌道區段:對其單獨操作,包括軌道電路“占用”“出清”操作,發送數據包頭部“0x02”。
道岔:對其單獨操作,包括道岔定位操作,反位操作,單鎖,單解等操作,發送數據包頭部“0x03”。
點擊設備功能按鈕,將帶有標識的數據包發送至聯鎖邏輯運算層,聯鎖邏輯運算模塊根據數據包頭類型,分別進行布爾表達式運算,并將驅動信息經采集驅動層回傳至聯鎖上位機驅動設備。
以進路和道岔控制為例,功能實現結構如圖7所示。
采集驅動仿真系統采用A機和B機雙機熱備,正常情況下由A機參與,故障時切換至B機。系統由采集模塊,驅動模塊以及數據傳輸模塊組成。采集模塊實時采集設備狀態信息,并將對應的表示燈點亮。驅動模塊接收進邏輯運算后的驅動命令,并開放驅動通道,表現為驅動設備對應的表示燈閃爍3 s后停止。數據傳輸模塊由3部分組成:設備動態數據布爾表達式顯示;操作命令顯示;驅動命令顯示。以采集板為例,組成如圖8所示。
系統測試過程在實驗室中進行,系統采用從數據庫中獲取靜態數據,初始化界面。然后通過點擊設備發送操作命令,經由邏輯判斷后驅動設備。最后將驅動數據和設備狀態信息反映道采集驅動仿真系統中。以辦理基本進路為例,對系統進行功能測試。

圖7 進路和道岔控制結構圖

圖8 采集板組成實例
點擊辦理進路按鈕,然后點擊始端信號機按鈕,使能以此信號機為始端辦理進路的終端信號機閃爍。系統顯示如圖9所示。

圖9 預辦理進路顯示
點擊上位機終端信號機按鈕,成功辦理側線進路并鎖閉,始端信號機顯示黃色。此時采集驅動仿真系統中采集板采集到設備狀態信息,驅動板顯示驅動設備,數據傳輸記錄過程數據。如圖10、圖11和圖12所示。

圖10 上位機顯示

圖11 采集板顯示

圖12 數據傳輸記錄
本文通過數據庫存儲線路信息,繪制站場圖,利用功能按鈕和鼠標點擊坐標匹配方式,判斷操作人員進行的操作。根據操作設備的不同,經由不同的傳輸端口,發送不同的操作命令給聯鎖邏輯層。邏輯層進行對應的邏輯處理并回傳驅動信息,以達到驅動設備目的。整個系統只需要設計人員在數據庫中正確輸入線路的設備信息,利用底層軟件就可以實現不同線路計算機聯鎖系統設計。本文聯鎖系統設計的通用性研究主要通過數據庫實現,還未得到應用,有一定局限性和缺陷,有待改善。