馮濤
摘 要:新型網(wǎng)絡(luò)計算機(jī)聯(lián)鎖仿真系統(tǒng)采用網(wǎng)絡(luò)技術(shù)、Web3D技術(shù),實(shí)現(xiàn)對現(xiàn)場計算機(jī)聯(lián)鎖操作及各類信號設(shè)備的模擬仿真,具有廣闊的應(yīng)用前景。其聯(lián)鎖功能設(shè)計采用C#技術(shù),依據(jù)計算機(jī)聯(lián)鎖程序執(zhí)行原理,對計算機(jī)聯(lián)鎖操作命令形成模塊、操作命令執(zhí)行模塊及進(jìn)路處理模塊進(jìn)行設(shè)計,并部署在Web應(yīng)用服務(wù)器及數(shù)據(jù)庫服務(wù)器端,實(shí)現(xiàn)在客戶端瀏覽器進(jìn)行操作與仿真的功能。
關(guān)鍵詞:網(wǎng)絡(luò);計算機(jī)聯(lián)鎖;仿真
1 新型網(wǎng)絡(luò)計算機(jī)聯(lián)鎖仿真系統(tǒng)簡介
隨著我國高速鐵路及城市軌道交通的飛速發(fā)展,設(shè)備的更新?lián)Q代速度不斷加快,對運(yùn)營維護(hù)及運(yùn)輸組織人員提出更高要求,計算機(jī)聯(lián)鎖系統(tǒng)作為軌道交通安全運(yùn)營的核心設(shè)備,對其熟練操作和掌握,具有充分的現(xiàn)實(shí)意義。網(wǎng)絡(luò)計算機(jī)聯(lián)鎖仿真系統(tǒng)主要用于對現(xiàn)場作業(yè)人員的模擬培訓(xùn),其在局域網(wǎng)內(nèi)采用B/S(瀏覽器/服務(wù)器)模式,計算機(jī)聯(lián)鎖系統(tǒng)人機(jī)交互界面在用戶瀏覽器端自動生成,可模擬辦理各種操作,在服務(wù)器端的Web服務(wù)器和數(shù)據(jù)庫服務(wù)器中分別部署聯(lián)鎖程序模塊和各類站場數(shù)據(jù),同時在本系統(tǒng)中采用Web 3D技術(shù),加入設(shè)備的三維仿真場景,通過在客戶端瀏覽器加載三維仿真場景的方式,帶來更直觀的用戶體驗。系統(tǒng)同時模擬各類常見故障現(xiàn)象,提高學(xué)員的故障處理能力。網(wǎng)絡(luò)計算機(jī)聯(lián)鎖仿真系統(tǒng)相比傳統(tǒng)計算機(jī)聯(lián)鎖仿真系統(tǒng),具有部署簡易、交互方便、不受參訓(xùn)人員數(shù)量限制、可模擬多個站場,且當(dāng)站場改擴(kuò)建后可隨時更改站場數(shù)據(jù),了解設(shè)備動作原理等諸多優(yōu)點(diǎn)。本文就網(wǎng)絡(luò)計算機(jī)聯(lián)鎖仿真系統(tǒng)聯(lián)鎖功能模塊的設(shè)計與實(shí)現(xiàn)做主要分析和探討。
2 聯(lián)鎖功能模塊設(shè)計
網(wǎng)絡(luò)計算機(jī)聯(lián)鎖仿真系統(tǒng)主要針對計算機(jī)聯(lián)鎖操作仿真,同時模擬對現(xiàn)場信號設(shè)備的采集和驅(qū)動,主要功能模塊包括操作命令形成模塊、操作命令執(zhí)行模塊和進(jìn)路處理模塊[1]。操作命令形成模塊是將人員按壓按鈕的操作,轉(zhuǎn)化為可識別的命令信息發(fā)送到服務(wù)器端,與服務(wù)器端數(shù)據(jù)表進(jìn)行對比,形成有效操作命令。操作命令執(zhí)行模塊是根據(jù)用戶操作,判斷命令類型,并在服務(wù)器端執(zhí)行,同時返回執(zhí)行結(jié)果。進(jìn)路處理模塊對選出的進(jìn)路進(jìn)行選排一致性檢查,進(jìn)路鎖閉及解鎖等處理,同時將處理結(jié)果返回給用戶。本系統(tǒng)在ASP.NET框架下采用C#網(wǎng)絡(luò)編程語言來實(shí)現(xiàn)。
2.1 操作命令形成模塊
操作命令形成模塊通過記錄和查詢用戶操作信息,判斷其是否構(gòu)成有效操作命令。本系統(tǒng)采用XML文件記錄用戶操作信息,其優(yōu)點(diǎn)是不占用數(shù)據(jù)庫資源,可方便的刪除歷史操作日志,同時使用數(shù)據(jù)表形式讀取和保存XML文件。通過XML文件記錄用戶按壓按鈕等操作,同時使用數(shù)據(jù)表讀取XML文件,并在服務(wù)器端查找操作命令是否在數(shù)據(jù)信息表中,若存在,則為有效操作命令并執(zhí)行進(jìn)路操作,反之則發(fā)出告警信息。
2.2 操作命令執(zhí)行模塊
網(wǎng)絡(luò)計算機(jī)聯(lián)鎖仿真系統(tǒng)根據(jù)計算機(jī)聯(lián)鎖程序執(zhí)行原理,針對每種操作命令建立執(zhí)行程序,組成操作命令執(zhí)行程序模塊,包括進(jìn)路搜索子程序、取消進(jìn)路子程序、人工延時解鎖子程序、進(jìn)路故障解鎖子程序、區(qū)段故障解鎖子程序等[2]。
操作命令執(zhí)行模塊通過調(diào)用數(shù)據(jù)庫服務(wù)器中站場數(shù)據(jù),在瀏覽器端生成站場平面圖,在平面圖中通過點(diǎn)擊始終端按鈕及其他按鈕進(jìn)行辦理進(jìn)路等操作。按壓按鈕后觸發(fā)鼠標(biāo)點(diǎn)擊事件,在服務(wù)器端作出響應(yīng),執(zhí)行服務(wù)器端程序,之后將執(zhí)行結(jié)果反饋給瀏覽器。同時使用AJAX編程方法實(shí)現(xiàn)瀏覽器端的頁面無刷新功能。網(wǎng)絡(luò)計算機(jī)聯(lián)鎖仿真系統(tǒng)在用戶端辦理進(jìn)路時,進(jìn)路鎖閉和解鎖對應(yīng)軌道區(qū)段光帶的顏色變化,采用AJAX技術(shù),可實(shí)現(xiàn)光帶顏色的及時刷新,帶來較好的用戶體驗。
操作命令執(zhí)行模塊的執(zhí)行流程為記錄用戶按壓按鈕操作、判斷用戶操作命令是否合法、判斷操作命令類型,根據(jù)命令類型執(zhí)行相應(yīng)的程序模塊,其示意圖如圖2所示。
2.2.1 進(jìn)路搜索程序模塊
網(wǎng)絡(luò)計算機(jī)聯(lián)鎖仿真系統(tǒng)執(zhí)行進(jìn)路搜索程序時,首先將辦理進(jìn)路所需的靜態(tài)及動態(tài)數(shù)據(jù)存入臨時進(jìn)路表中,之后在進(jìn)路總表中查找是否有臨時進(jìn)路表數(shù)據(jù)存在,若存在則為合法進(jìn)路,同時與敵對信號數(shù)據(jù)進(jìn)行對比,確定敵對信號未建立,并將占用標(biāo)志設(shè)置在所建立進(jìn)路的變量模塊中,通過C#中的GDI+將既有道岔位置轉(zhuǎn)換到所選進(jìn)路中。
網(wǎng)絡(luò)計算機(jī)聯(lián)鎖仿真系統(tǒng)的每一個數(shù)據(jù)模塊包括數(shù)據(jù)場和指針場[3],用以存放該數(shù)據(jù)模塊的數(shù)據(jù)和相鄰模塊的首地址,進(jìn)路搜索時按照站場型數(shù)據(jù)結(jié)構(gòu),從一個模塊出發(fā)查找相鄰模塊,直至搜索到目標(biāo)進(jìn)路為止[4]。系統(tǒng)使用C#中的數(shù)組和指針實(shí)現(xiàn)數(shù)據(jù)模塊的鏈接,使用數(shù)組的堆棧等操作,通過鏈接各模塊從而找到目標(biāo)節(jié)點(diǎn)。
2.2.2 取消進(jìn)路子模塊
網(wǎng)絡(luò)計算機(jī)聯(lián)鎖仿真系統(tǒng)中,取消已建立的進(jìn)路通過取消進(jìn)路子模塊來實(shí)現(xiàn),系統(tǒng)的取消進(jìn)路操作需先按下總?cè)∠粹o,之后10秒內(nèi)再按下進(jìn)路始端按鈕,為控制按壓時間,需在按鈕事件中添加一個計時器private Timer loginTimer。隨著進(jìn)路的占用和空閑,其進(jìn)路光帶要有顏色變化,一般白色光帶表示進(jìn)路鎖閉,綠色光帶表示進(jìn)路空閑,紅色光帶表示有車占用,進(jìn)路光帶顏色的變化通過GDI+中的繪圖的方式來實(shí)現(xiàn)。
取消進(jìn)路子程序執(zhí)行過程中還需檢查接近區(qū)段是否有車占用,通過彈出文字提示和變換進(jìn)路內(nèi)光帶顏色的方法來模擬區(qū)段占用和出清,同時顯示列車車次。
2.2.3 人工延時解鎖子模塊
網(wǎng)絡(luò)計算機(jī)聯(lián)鎖仿真系統(tǒng)的人工延時解鎖子模塊,用于因臨時改變進(jìn)路,需解除已處于接近鎖閉狀態(tài)的進(jìn)路。本系統(tǒng)將鼠標(biāo)點(diǎn)擊事件添加到在站場界面的按鈕中,通過按壓按鈕來觸發(fā)鼠標(biāo)點(diǎn)擊事件,并將聯(lián)鎖處理程序添加到在鼠標(biāo)點(diǎn)擊事件中,從而實(shí)現(xiàn)聯(lián)鎖功能。聯(lián)鎖程序中用C#的委托來聲明和觸發(fā)事件,以人工延時解鎖為例,首先在人工延時解鎖程序中生成一個委托實(shí)例,然后將此委托實(shí)例添加到在人工解鎖程序執(zhí)行的事件列表中,進(jìn)行事件訂閱,再在操作命令執(zhí)行中將人工延時解鎖命令從訂閱事件中取出。涉及到的鼠標(biāo)相關(guān)事件有MouseHover、MouseLeave、MouseEnter、MouseMove、MouseDown和MouseUp分別代表捕捉鼠標(biāo)停留指定區(qū)域、捕捉鼠標(biāo)離開指定區(qū)域、捕捉鼠標(biāo)進(jìn)入指定區(qū)域、鼠標(biāo)移動、鼠標(biāo)按下、鼠標(biāo)彈起[5]。辦理人工延時解鎖,可在MouseDown事件中添加人工延時解鎖子模塊程序,同時觸發(fā)定時器功能。需檢查的聯(lián)鎖條件包括進(jìn)路是否存在、接近區(qū)段是否空閑、信號是否開放、進(jìn)路是否空閑。
2.2.4 區(qū)段故障解鎖子模塊
區(qū)段故障解鎖子模塊是當(dāng)軌道區(qū)段發(fā)生故障或其他原因?qū)е聼o法正常解鎖時辦理的特殊解鎖方式。區(qū)段故障解鎖操作需先后按下區(qū)段故障解鎖按鈕和相應(yīng)的道岔按鈕(無岔區(qū)段處按壓以區(qū)段名稱命名的按鈕),將區(qū)段故障解鎖程序添加到該鼠標(biāo)點(diǎn)擊事件中,通過按壓按鈕即可觸發(fā)該事件并執(zhí)行程序。解鎖后將引起光帶顏色的變化,即將紅色變?yōu)榫G色。
區(qū)段故障解鎖子模塊程序執(zhí)行前,需檢查該區(qū)段是否存在、該區(qū)段信號是否關(guān)閉、本區(qū)段以及接近區(qū)段是否空閑、與其相鄰的無岔區(qū)段和保護(hù)區(qū)段是否解鎖。
網(wǎng)絡(luò)計算機(jī)聯(lián)鎖仿真系統(tǒng)操作命令執(zhí)行模塊還包括重復(fù)開放信號子模塊、非常關(guān)閉信號子模塊、開放引導(dǎo)信號子模塊等,這些模塊功能的實(shí)現(xiàn)均是在鼠標(biāo)點(diǎn)擊事件中添加相應(yīng)的處理程序,同時檢查聯(lián)鎖條件是否建立,將響應(yīng)結(jié)果顯示在瀏覽器端。
2.3 進(jìn)路處理模塊
本系統(tǒng)進(jìn)路處理模塊是進(jìn)路生成以后按照進(jìn)路條件對進(jìn)路進(jìn)行鎖閉及解鎖等處理的模塊,主要包括選排一致性檢查及道岔控制命令生成子模塊、進(jìn)路鎖閉子模塊、信號開放及信號保持開放子模塊、進(jìn)路自動解鎖子模塊,其執(zhí)行過程為先檢查進(jìn)路選排一致性標(biāo)志fxp,再檢查鎖閉標(biāo)志fs和信號保持開放標(biāo)志fXB,若滿足條件則執(zhí)行相應(yīng)的處理程序,若不滿足則執(zhí)行下一命令。流程如圖3所示。
進(jìn)路處理程序執(zhí)行過程中需頻繁檢查各類聯(lián)鎖條件,包括進(jìn)路空閑檢查、道岔位置檢查、敵對信號檢查,以及各種照查條件檢查等,利用C#的泛型編程機(jī)制,將類型參數(shù)化,可實(shí)現(xiàn)代碼的靈活復(fù)用。
2.3.1 選排一致性檢查及道岔控制命令生成模塊
選排一致性檢查即確定選出進(jìn)路的始終端與進(jìn)路表中對比一致。
道岔控制命令生成模塊,還需檢查區(qū)段是否空閑、道岔是否單鎖。道岔轉(zhuǎn)換可通過C#的GDI+繪制,同時為實(shí)現(xiàn)頁面的無刷新功能,需使用AJAX方法。
本系統(tǒng)中的道岔控制命令對現(xiàn)場信號設(shè)備采集驅(qū)動的模擬,可通過Web3D技術(shù)加入設(shè)備的三維仿真場景,三維仿真場景由Cult3D制作實(shí)現(xiàn),Cult3D基于JAVA內(nèi)核,其XML構(gòu)架可方便瀏覽器與服務(wù)器之間的數(shù)據(jù)通信。本系統(tǒng)對三維模型文件的管理是將三維模型文件存儲為表示空間位置的二進(jìn)制碼或字符串,并利用Stream對象在關(guān)系型數(shù)據(jù)庫中讀取并輸出模型文件。
2.3.2 進(jìn)路鎖閉模塊
本系統(tǒng)進(jìn)路鎖閉模塊在進(jìn)路中軌道區(qū)段空閑、道岔位置正確以及照查條件滿足的情況下用于對已選出的進(jìn)路執(zhí)行鎖閉操作。本系統(tǒng)中瀏覽器端進(jìn)路鎖閉表現(xiàn)為進(jìn)路光帶顏色的變化,鎖閉后由綠色變?yōu)榘咨?。進(jìn)路空閑檢查可預(yù)先設(shè)定該段時間內(nèi)是否有車通過,對于敵對進(jìn)路的檢查,即檢查該進(jìn)路辦理之前,站場內(nèi)是否辦理了影響該進(jìn)路行車的其他進(jìn)路,或開放了敵對信號,需與進(jìn)路總表中的敵對信號進(jìn)行對比,若存在敵對信號則不予辦理,并發(fā)出提出信息。
2.3.3 信號開放及信號保持開放模塊
網(wǎng)絡(luò)計算機(jī)聯(lián)鎖仿真系統(tǒng)模擬真實(shí)計算機(jī)聯(lián)鎖系統(tǒng),將燈絲完整性檢查納入信號開放需檢查的聯(lián)鎖條件中,通過三維仿真模型模擬燈絲繼電器的吸起和落下,同時還需檢查進(jìn)路是否空閑且鎖閉、道岔是否處在正確位置、敵對信號是否存在。若聯(lián)鎖條件滿足,則信號開放。
信號保持開放階段,加載信號機(jī)主副燈絲及室內(nèi)燈絲繼電器三維仿真場景,模擬檢查燈絲完整性,同時還需對其他信號開放條件進(jìn)行檢查,判斷是正常關(guān)閉信號或者調(diào)車中途返回,若為前者,則進(jìn)入進(jìn)路解鎖模塊,若為后者,則需檢查進(jìn)路接近區(qū)段或第一區(qū)段是否空閑。具體流程為:先檢查進(jìn)路處理進(jìn)程標(biāo)志是否為信號保持開放標(biāo)志fXB,之后檢查接近區(qū)段及進(jìn)路第一區(qū)段是否空閑,若空閑則進(jìn)入自動解鎖模塊,之后判斷道岔位置是否正確、進(jìn)路是否空閑,若滿足條件則信號保持開放;若存在調(diào)車進(jìn)路,則需檢查是否出清進(jìn)路第一軌道區(qū)段,若已出清則信號保持開放。
2.3.4 進(jìn)路自動解鎖模塊
本系統(tǒng)模擬實(shí)際計算機(jī)聯(lián)鎖系統(tǒng),將進(jìn)路自動解鎖程序模塊分為正常解鎖程序模塊和調(diào)車中途折返解鎖程序模塊兩部分。
進(jìn)路的正常解鎖一般通過三點(diǎn)檢查法來實(shí)現(xiàn),即檢查本區(qū)段,進(jìn)路前方區(qū)段及進(jìn)路后方區(qū)段的占用狀態(tài)來判斷進(jìn)路能否解鎖。調(diào)車中途折返解鎖又分為牽出進(jìn)路有折返信號機(jī)和辦理復(fù)合牽出進(jìn)路兩種情況[6]:若牽出進(jìn)路中途有折返信號機(jī),則需保證折返信號曾開放過、要解鎖的區(qū)段空閑、折返信號內(nèi)方第一軌道區(qū)段被占用;若車列較長,為滿足轉(zhuǎn)線作業(yè)要求,進(jìn)路中途折返操作需辦理復(fù)合牽出進(jìn)路,需要檢查的條件有:是否有車占用過牽出進(jìn)路,且進(jìn)路處于鎖閉狀態(tài);當(dāng)進(jìn)路空閑時,進(jìn)路的前方接近區(qū)段是否被占用;之后此接近區(qū)段是否又一次處于空閑狀態(tài)。若滿足條件,則執(zhí)行相應(yīng)的解鎖程序。
3 結(jié)論及展望
網(wǎng)絡(luò)計算機(jī)聯(lián)鎖仿真系統(tǒng)已從理論研究階段進(jìn)入具體實(shí)施階段,其聯(lián)鎖功能的實(shí)現(xiàn),對于整個系統(tǒng)從設(shè)備模擬過渡到操作模擬,具有舉足輕重的作用。各個程序模塊由C#語言在應(yīng)用服務(wù)器端部署,同時在數(shù)據(jù)庫服務(wù)器中添加聯(lián)鎖關(guān)系數(shù)據(jù)及XML構(gòu)架下的各類三維仿真模型,可實(shí)現(xiàn)計算機(jī)聯(lián)鎖從人員操作到設(shè)備動作的一系列模擬,此系統(tǒng)可應(yīng)用于普速鐵路、高速鐵路及城市軌道交通的運(yùn)營管理及人員培訓(xùn),其良好的交互性能夠提高現(xiàn)場作業(yè)人員的培訓(xùn)效率,帶來更加直觀具體的用戶體驗,具有廣闊的應(yīng)用前景。
參考文獻(xiàn)
[1]趙志熙.計算機(jī)聯(lián)鎖系統(tǒng)技術(shù)[M].北京:中國鐵道出版社,2008:19-25.
[2]徐洪澤,岳強(qiáng).車站信號計算機(jī)聯(lián)鎖系統(tǒng)技術(shù)[M].北京:中國鐵道出版社,2009:44-54.
[3]文武臣,王曉明.計算機(jī)聯(lián)鎖數(shù)據(jù)結(jié)構(gòu)及進(jìn)路搜索算法[J].重慶工學(xué)院學(xué)報,2008,22(6):51-53.
[4]胡媛,魏宗壽.采用DFS策略的進(jìn)路搜索算法研究[J].鐵路計算機(jī)應(yīng)用,2007,16(9):4-6.
[5]郭靖.ASP.NET開發(fā)技術(shù)大全[M].北京:清華大學(xué)出版社,2009:7-9,22-25.
[6]陸亞平.CTCS-3級計算機(jī)聯(lián)鎖上位機(jī)系統(tǒng)仿真研究[D].成都:西南交通大學(xué),2007:22-25.