專利名稱:基于命名管道通信的列車自動(dòng)監(jiān)控系統(tǒng)輸入輸出組件的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種軌道交通列車自動(dòng)監(jiān)控系統(tǒng)的通信方法,尤其是針對(duì)借助于命名 管道通信的系統(tǒng),具體地說是一種基于命名管道通信的列車自動(dòng)監(jiān)控系統(tǒng)輸入輸出組件的 實(shí)現(xiàn)方法。
背景技術(shù):
在現(xiàn)代城市軌道交通信號(hào)工程中,列車自動(dòng)監(jiān)控系統(tǒng)是地鐵信號(hào)系統(tǒng)的指揮中 樞。列車自動(dòng)監(jiān)控系統(tǒng)可以依據(jù)聯(lián)鎖提供的數(shù)據(jù)和時(shí)刻表對(duì)列車運(yùn)行及信號(hào)設(shè)備狀態(tài)進(jìn)行 監(jiān)督,需要人工操作時(shí)可以在人機(jī)界面上針對(duì)具體的信號(hào)元素及列車進(jìn)行人工干預(yù)。車站操作員工作站是車控室的操作員工作站,用來進(jìn)行元素狀態(tài)顯示和執(zhí)行本地 操作。列車排路計(jì)算機(jī)提供進(jìn)路設(shè)置,列車運(yùn)行管理和列車追蹤功能。時(shí)刻表處理器提供 時(shí)刻表文件的相關(guān)管理。前端處理器位于聯(lián)鎖站,負(fù)責(zé)與其它子系統(tǒng)的數(shù)據(jù)交互。上述列車自動(dòng)監(jiān)控系統(tǒng)系統(tǒng)設(shè)備是通過以太局域網(wǎng)直接與計(jì)算機(jī)聯(lián)鎖和列車自 動(dòng)保護(hù)(ATP)、列車自動(dòng)操作(ATO)連接。由于信號(hào)系統(tǒng)是安全系統(tǒng),子系統(tǒng)之間的通信需 要采取實(shí)時(shí)性、可靠性、穩(wěn)定性比較高的通信機(jī)制,并且需要對(duì)網(wǎng)絡(luò)上復(fù)雜的數(shù)據(jù)報(bào)文做解 包、打包操作。命名管道可在同一臺(tái)計(jì)算機(jī)的不同進(jìn)程之間,或在跨越一個(gè)網(wǎng)絡(luò)的不同計(jì)算機(jī) 的不同進(jìn)程之間,支持可靠的,單向或雙向的數(shù)據(jù)通信.命名管道利用了微軟網(wǎng)絡(luò)提供者 重定向器,通過一個(gè)網(wǎng)絡(luò),在各進(jìn)程間建立通信.充分利用了 Windows內(nèi)建的安全特性。
發(fā)明內(nèi)容
本發(fā)明的目的是為了充分發(fā)揮命名管道通信的優(yōu)勢(shì),發(fā)明一種基于命名管道通信 的列車自動(dòng)監(jiān)控系統(tǒng)輸入輸出組件的實(shí)現(xiàn)方法以提高運(yùn)行速度,提高可靠性和穩(wěn)定性。本發(fā)明的技術(shù)方案是
一種基于命名管道通信的列車自動(dòng)監(jiān)控系統(tǒng)輸入輸出組件的實(shí)現(xiàn)方法,其特征是它包 括以下步驟
第一步.管道配置,根據(jù)需要借助輸入輸出組件進(jìn)行輸入輸出的模塊不同,在其機(jī)器 上配置相應(yīng)的輸入輸出組件的配置文件,完成管道配置,生成所需的輸入輸出組件模塊;所 配置管道應(yīng)與進(jìn)程數(shù)據(jù)接口一端的設(shè)置相對(duì)應(yīng),比如IO端服務(wù)器與進(jìn)程數(shù)據(jù)接口端客戶 端的名稱設(shè)置應(yīng)相同;
第二步.對(duì)報(bào)文解包、打包過程中需要的報(bào)文類型、聯(lián)鎖信號(hào)元素屬性位置、外部、內(nèi) 部元素編號(hào)、系統(tǒng)內(nèi)各機(jī)器和組件編號(hào)參數(shù)進(jìn)行設(shè)置,包括狀態(tài)、事件、報(bào)警、時(shí)間、更新、加 載、操作控制等數(shù)十種報(bào)文處理相關(guān)的所有可變參數(shù);
第三步.設(shè)置元素屬性與報(bào)文數(shù)據(jù)位置對(duì)應(yīng)數(shù)據(jù)庫,將狀態(tài)報(bào)文字節(jié)中不同的字節(jié)比 特位代表的含義存入數(shù)據(jù)庫,并在配置文件中對(duì)不同的模塊配置所需屬性;第四步.輸入輸出組件模塊被宿主模塊調(diào)用前先進(jìn)行初始化;初始化時(shí)將首先啟動(dòng) 管道通道建立過程,在客戶端未連接到服務(wù)器端時(shí)采用線程循環(huán)請(qǐng)求機(jī)制,直到通道建立 為止;在服務(wù)端采用等待機(jī)制,在通信建立之后相應(yīng)線程則停止工作,以減少系統(tǒng)開銷;在 管道中建立心跳機(jī)制,以判斷最新的通信狀態(tài),在斷開連接后及時(shí)報(bào)警,并重新啟動(dòng)連接線 程;在管道接收數(shù)據(jù)與打包解包之間采取消息隊(duì)列機(jī)制,建立緩存,以防止報(bào)文處理過程中 后續(xù)報(bào)文丟包;
第五步.初始化還包括啟動(dòng)緩存隊(duì)列讀取行為,在隊(duì)列不為空時(shí)循環(huán)處理數(shù)據(jù),在管 道中收到的報(bào)文將被管道處理程序放入隊(duì)列,進(jìn)而觸發(fā)上述處理線程;同理,在列車自動(dòng)監(jiān) 控系統(tǒng)有操作指令下發(fā)給聯(lián)鎖時(shí),也會(huì)將數(shù)據(jù)放入隊(duì)列,觸發(fā)相應(yīng)處理;兩種觸發(fā)條件分別 進(jìn)入輸入輸出組件模塊的解包和打包工作;
第六步.解包過程,在收到要解包的報(bào)文時(shí),程序?qū)⑾热サ魣?bào)文頭,在讀取數(shù)據(jù)字節(jié)時(shí) 按照接口數(shù)據(jù)類型、報(bào)文類型、設(shè)備類型、設(shè)備編號(hào)依次解包,然后跟第三步中配置的字節(jié) 屬性,取出所有字節(jié),按照配置將帶有屬性值的不同對(duì)象,分發(fā)給不同的模塊,進(jìn)行相應(yīng)的 顯示和處理;
第七步.打包過程,在第五步中,系統(tǒng)其它模塊會(huì)調(diào)用輸入輸出組件模塊進(jìn)行指令的 輸出,線程收到要打包的數(shù)據(jù)時(shí),按照字節(jié)對(duì)照轉(zhuǎn)換屬性值,加入報(bào)文頭,調(diào)用管道接口,通 過對(duì)后備模式和連接狀態(tài)的判斷,確保報(bào)文發(fā)送成功。所述的管道配置包括管道名稱、管道方向、所屬聯(lián)鎖區(qū)域和關(guān)聯(lián)管道屬性。報(bào)文解包、打包過程中參數(shù)設(shè)置包括狀態(tài)、事件、報(bào)警、時(shí)間、更新、加載和操作控 制。本發(fā)明的有益效果
1、本發(fā)明可與進(jìn)程數(shù)據(jù)接口軟件進(jìn)行通信,從而建立列車監(jiān)控系統(tǒng)與聯(lián)鎖、ΑΤΡ/ΑΤ0等 外部系統(tǒng)的通道,模塊功能完善;處理速度快;占用資源較少;通道連接狀態(tài)等性能穩(wěn)定; 可配置、可擴(kuò)展性強(qiáng)。2、本發(fā)明的管道數(shù)量、類型可配置,可針對(duì)不同的模塊建立單獨(dú)的通道,增加刪除 方便高效。各管道采取單獨(dú)的線程處理,對(duì)于可能引發(fā)的資源競(jìng)爭(zhēng)問題,提供了良好的同步 互斥機(jī)制,保證了數(shù)據(jù)的統(tǒng)一性,數(shù)據(jù)之間嚴(yán)格的先后順序;
3、本發(fā)明針對(duì)信號(hào)系統(tǒng)中的元素類型、報(bào)文類型、各個(gè)組件所需報(bào)文字節(jié)參數(shù)是可配 置的XML文件和數(shù)據(jù)庫文件,可適應(yīng)聯(lián)鎖系統(tǒng)元素的變更,系統(tǒng)的修改、升級(jí),針對(duì)不同組 件所需的不同數(shù)據(jù)提供個(gè)性化定制,可實(shí)現(xiàn)系統(tǒng)的快速部署;
4、良好的通信機(jī)制,通過客戶端通信建立過程、心跳確認(rèn)機(jī)制,連接斷開自動(dòng)重新連 接,以及管道本身的通信機(jī)制,使得管道通信狀態(tài)穩(wěn)定,檢測(cè)及時(shí),大大降低了因通信終端 引起的丟包、延遲等問題;
5、數(shù)據(jù)緩存,通過消息隊(duì)列,事件通知機(jī)制,減少了數(shù)據(jù)處理過程中因調(diào)用其它多個(gè)模 塊可能引起的延遲、丟失的可能性,同時(shí)也避免了收和發(fā)可能引起的線程循環(huán)調(diào)用從而導(dǎo) 致的死鎖問題;
6、報(bào)文解包算法速度快,開銷小,提升了系統(tǒng)的性能,解包后的數(shù)據(jù)以對(duì)象屬性提供給 上層模塊,意義簡(jiǎn)單明確,便于處理;
7、打包接口調(diào)用方便,發(fā)送接口提供良好的故障檢測(cè)與重發(fā)機(jī)制,保證了所發(fā)指令及時(shí)傳輸?shù)骄W(wǎng)絡(luò)。
圖1是本發(fā)明的系統(tǒng)功能框圖。圖2是本發(fā)明的信號(hào)元素屬性圖。圖3是本發(fā)明的系統(tǒng)流程圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的說明。如圖1-3所示。一種基于命名管道通信的列車自動(dòng)監(jiān)控系統(tǒng)輸入輸出組件的實(shí)現(xiàn)方法,事先配置 管道通信的必要參數(shù),系統(tǒng)內(nèi)其它模塊初始化時(shí)調(diào)用該組件,服務(wù)器與客戶端分別與目標(biāo) 進(jìn)程建立通道,在運(yùn)行時(shí)接收與發(fā)送數(shù)據(jù),從而實(shí)現(xiàn)列車監(jiān)控系統(tǒng)與聯(lián)鎖和ΑΤΡ/ΑΤ0等其 他系統(tǒng)之間的通信。針對(duì)各類信號(hào)元素、列車報(bào)文進(jìn)行打包解包工作,接收來自外部系統(tǒng)的 數(shù)據(jù)報(bào)文,解包后提供屬性、字段給本地列車自動(dòng)監(jiān)控系統(tǒng)各個(gè)模塊使用,進(jìn)而顯示元素的 最新狀態(tài)。并且將本系統(tǒng)內(nèi)的指令發(fā)送給外部系統(tǒng)。步驟如下
第一步.針對(duì)需要借助IO (即輸入輸出組件,下同)進(jìn)行輸入輸出的模塊不同,在其機(jī) 器上配置IO的配置文件,管道配置包括管道名稱、管道方向、所屬聯(lián)鎖區(qū)域、關(guān)聯(lián)管道等屬 性,所配置管道應(yīng)與進(jìn)程數(shù)據(jù)接口一端的設(shè)置相對(duì)應(yīng),比如IO端服務(wù)器與進(jìn)程數(shù)據(jù)接口端 客戶端的名稱設(shè)置應(yīng)相同。第二步.對(duì)報(bào)文解包、打包過程中需要的報(bào)文類型、聯(lián)鎖信號(hào)元素屬性位置、外部、 內(nèi)部元素編號(hào)、系統(tǒng)內(nèi)各機(jī)器、組件編號(hào)等參數(shù)進(jìn)行設(shè)置,包括狀態(tài)、事件、報(bào)警、時(shí)間、更 新、加載、操作控制等數(shù)十種報(bào)文處理相關(guān)的所有可變參數(shù)。第三步.設(shè)置元素屬性與報(bào)文數(shù)據(jù)位置對(duì)應(yīng)數(shù)據(jù)庫,對(duì)狀態(tài)報(bào)文字節(jié)中不同的比 特位代表的含義存入數(shù)據(jù)庫。在配置文件中對(duì)不同的模塊配置所需屬性。第四步.IO模塊被宿主模塊調(diào)用,開始進(jìn)行初始化,將首先啟動(dòng)管道通道建立過 程,在客戶端未連接到服務(wù)器端時(shí)采用線程循環(huán)請(qǐng)求機(jī)制,直到通道建立為止;在服務(wù)端采 用等待機(jī)制,在通信建立之后相應(yīng)線程則停止工作,以減少系統(tǒng)開銷。在管道中建立心跳機(jī) 制,以判斷最新的通信狀態(tài),在斷開連接后及時(shí)報(bào)警,并重新啟動(dòng)連接線程。在管道接收數(shù) 據(jù)與打包解包之間采取消息隊(duì)列機(jī)制,建立緩存,以防止報(bào)文處理過程中后續(xù)報(bào)文丟包。第五步.初始化還包括啟動(dòng)緩存隊(duì)列讀取行為,在隊(duì)列不為空時(shí)循環(huán)處理數(shù)據(jù), 在管道中收到的報(bào)文將被管道處理程序放入隊(duì)列,進(jìn)而觸發(fā)上述處理線程。同理,在列車自 動(dòng)監(jiān)控系統(tǒng)有操作指令下發(fā)給聯(lián)鎖時(shí),也會(huì)將數(shù)據(jù)放入隊(duì)列,觸發(fā)相應(yīng)處理。兩種觸發(fā)條件 分別進(jìn)入IO模塊的解包和打包工作。第六步.解包過程,在收到要解包的報(bào)文時(shí),程序?qū)⑾热サ魣?bào)文頭,在讀取數(shù)據(jù)字 節(jié)時(shí)按照接口數(shù)據(jù)類型、報(bào)文類型、設(shè)備類型、設(shè)備編號(hào)依次解包,然后根據(jù)第三步中配置 的字節(jié)屬性,取出所有字節(jié),按照配置將帶有屬性值的不同對(duì)象,分發(fā)給不同的模塊,進(jìn)行 相應(yīng)的顯示和處理;第七步.打包過程,在第五步中,系統(tǒng)其它模塊會(huì)調(diào)用IO組件進(jìn)行指令的輸出,線程收 到要打包的數(shù)據(jù)時(shí),按照字節(jié)對(duì)照轉(zhuǎn)換屬性值,加入報(bào)文頭,調(diào)用管道接口,通過對(duì)后備模 式和連接狀態(tài)的判斷,確保報(bào)文發(fā)送成功。詳述如下
第一,如功能框圖1所示,ATS系統(tǒng)功能模塊本地操作員工作站、自動(dòng)列車監(jiān)督、時(shí)刻 表處理器需要與外界的聯(lián)鎖、中央列車監(jiān)控系統(tǒng)和ΑΤΡ/ΑΤ0系統(tǒng)交互,他們將調(diào)用共同的 組件10,IO負(fù)責(zé)與進(jìn)程數(shù)據(jù)接口個(gè)組件交互,交互內(nèi)容為報(bào)文。因此在本地操作員工作站、 自動(dòng)列車監(jiān)督、時(shí)刻表處理器的模塊中需要分別引用IO組件,因不同模塊需要通過IO交互 的對(duì)象不相同,比如,自動(dòng)列車監(jiān)督交互的目標(biāo)組件是ΑΤΡ/ΑΤ0系統(tǒng)而不包括中央時(shí)刻表 處理器,這就需要在IO的管道配置中設(shè)置,根據(jù)IO與進(jìn)程數(shù)據(jù)接口規(guī)定好的管道名稱來確 定上述所需的交互對(duì)象和內(nèi)容。第二,XML形式的參數(shù)設(shè)置包括進(jìn)程數(shù)據(jù)接口處理碼,用于判斷報(bào)文的類型;外 部報(bào)文類型編號(hào);內(nèi)部報(bào)文類型編號(hào);內(nèi)部組件編號(hào);內(nèi)部機(jī)器編號(hào);本機(jī)編號(hào);操作指令 功能號(hào);軌道、道岔、信號(hào)機(jī)、站臺(tái)軌、計(jì)軸、車站、進(jìn)路、指示器、操作區(qū)域、控制區(qū)域、列車狀 態(tài)、列車位置等元素的屬性值與數(shù)據(jù)庫的屬性值對(duì)應(yīng)之后,再按照系統(tǒng)內(nèi)部其它模塊的需 求重新劃分,建立統(tǒng)一的對(duì)應(yīng)關(guān)系,比如道岔的ATP空閑屬性,對(duì)應(yīng)了本地操作員工作站模 塊的需要,又對(duì)應(yīng)了數(shù)據(jù)庫中道岔參數(shù)的第9個(gè)參數(shù);特殊的可能發(fā)生變化的狀態(tài)位在報(bào) 文中的位置參數(shù),比如聯(lián)鎖數(shù)據(jù)有效性參數(shù)位可能不確定在報(bào)文中的位置,也可以在參數(shù) 中配置,以備隨時(shí)修改。數(shù)據(jù)庫形式的參數(shù)主要是元素所有屬性與其在報(bào)文中所處位置的對(duì)應(yīng)關(guān)系,比 如某軌道的占用出清狀態(tài)位于軌道類型報(bào)文的第30個(gè)字節(jié)的第5個(gè)BIT起數(shù)2位,共有4 個(gè)狀態(tài)值0、1、2、3,如果將來屬性值需要擴(kuò)充,只需要修改數(shù)據(jù)庫該位的配置即可。第三,從部分信號(hào)元素屬性圖2可以看出,每個(gè)信號(hào)元素包含多種屬性,上層應(yīng)用 如何實(shí)時(shí)地得知這些屬性的變化?就需要解包模塊,對(duì)于系統(tǒng)來講,解包的復(fù)雜性體現(xiàn)在 每個(gè)字節(jié)中的每一位、某幾位以及不同位的組合所代表的意義,系統(tǒng)中一般有200個(gè)左右 的元素類型,每個(gè)元素類型有50個(gè)左右的狀態(tài),IO在解包時(shí)利用高效的算法、事件代理機(jī) 制及時(shí)地為系統(tǒng)中的本地操作員工作站信號(hào)元素的最新狀態(tài),事件、故障等信息;為列車排 路計(jì)算機(jī)提供列車編號(hào)、位置、速度等信息;為時(shí)刻表處理系統(tǒng)提供與中央列車自動(dòng)監(jiān)控系 統(tǒng)的時(shí)刻表同步等信息。需要時(shí)在內(nèi)存中存儲(chǔ)相應(yīng)的狀態(tài)數(shù)據(jù),對(duì)狀態(tài)變化做出判斷,將改 變的屬性通知相應(yīng)模塊,比如提供給控制對(duì)象模塊的逢變屬性值;或者是系統(tǒng)的連接狀態(tài) 發(fā)生變化時(shí)將內(nèi)存中的數(shù)據(jù)通知相應(yīng)模塊,比如在機(jī)器連接由斷到通時(shí),緩存在此期間接 收到的連接報(bào)警信息。第四,內(nèi)部系統(tǒng)在收到IO的狀態(tài)數(shù)據(jù)后,作相應(yīng)處理之后,或者是操作員工作站 接收到操作員的操作命令后,會(huì)以函數(shù)接口的形式調(diào)用IO組件進(jìn)行指令的輸出,例如排列 進(jìn)路、轉(zhuǎn)換道岔、發(fā)送列車車次號(hào)、停站和站間運(yùn)行時(shí)間等等,IO將先完成數(shù)據(jù)的打包工作, 是上述解包工作的逆向操作,在發(fā)送數(shù)據(jù)前需要做一系列判斷,首先,要判斷系統(tǒng)當(dāng)前的運(yùn) 行模式,如果是后備模式,部分報(bào)文如列車車次號(hào)和自動(dòng)進(jìn)路設(shè)置將被發(fā)送,否則該是數(shù)據(jù) 將被屏蔽;其次,在已確定調(diào)用管道接口發(fā)送數(shù)據(jù)時(shí),需要判斷連接狀態(tài),如果發(fā)送報(bào)文無 回應(yīng),則表明發(fā)送不成功,直到管道連上時(shí)發(fā)送該條報(bào)文。如圖3所示。
第五,后備模式管理,系統(tǒng)維護(hù)各個(gè)操作臺(tái)的控制狀態(tài),信息來自聯(lián)鎖的控制狀態(tài) 報(bào)文,根據(jù)可配置的操作臺(tái)編號(hào)判斷是否已交出控制,如果全部狀態(tài)已交出,責(zé)本地可以接 收控制,將模式修改為后備模式。連接狀態(tài)管理跟隨模塊初始化啟動(dòng),客戶端建立心跳檢測(cè) 機(jī)制,如果心跳發(fā)送不成功,則及時(shí)的重新與服務(wù)器建立連接,保證通道的正常工作。服務(wù) 器端的檢測(cè)依賴于進(jìn)程數(shù)據(jù)接口的通道狀態(tài)報(bào)文,如果收到通道斷開的通知,則有可能導(dǎo) 致斷開后短期內(nèi)未收到聯(lián)鎖傳輸?shù)膱?bào)文,此時(shí)IO將發(fā)送加載請(qǐng)求,將所有數(shù)據(jù)的最新狀態(tài) 傳輸一遍,以保持最新的元素狀態(tài)。第六,內(nèi)部數(shù)據(jù)傳輸策略,為了保證IO與內(nèi)部其它模塊之間傳輸數(shù)據(jù)的準(zhǔn)確性, IO將維護(hù)與內(nèi)部其他模塊之間的連接狀態(tài),連接狀態(tài)的判斷涉及一對(duì)一、一對(duì)多、多對(duì)一、 多對(duì)多的連接判斷算法,如發(fā)生通斷,則及時(shí)通知相應(yīng)模塊,終止模塊之間依賴于連接的操 作,斷掉之后的重新連接與管理由本系統(tǒng)的網(wǎng)絡(luò)模塊負(fù)責(zé)。提供給其它模塊的報(bào)文通知策 略,前面提到報(bào)文收到之后首先到緩沖隊(duì)列之中,然后由初始化時(shí)啟動(dòng)的讀寫線程,在隊(duì)列 不為空時(shí),循環(huán)讀取隊(duì)列元素,觸發(fā)事件、代理機(jī)制,通知相應(yīng)模塊來處理該數(shù)據(jù)。第七,為提高系統(tǒng)運(yùn)行的效率,部分從聯(lián)鎖接收的數(shù)據(jù)是各個(gè)模塊都需要做處理 的,這部分工作IO沒有通知到上層,而是自己直接做了處理,這些數(shù)據(jù)包括時(shí)間更新報(bào) 文,所有裝有IO的計(jì)算機(jī)都將被更新時(shí)間,以保持與聯(lián)鎖的時(shí)鐘同步。另外應(yīng)答信息和提 醒信息也具有這樣的特點(diǎn)。本發(fā)明未涉及部分均與現(xiàn)有技術(shù)相同或可采用現(xiàn)有技術(shù)加以實(shí)現(xiàn)。
權(quán)利要求
1.一種基于命名管道通信的列車自動(dòng)監(jiān)控系統(tǒng)輸入輸出組件的實(shí)現(xiàn)方法,其特征是它 包括以下步驟第一步.管道配置,根據(jù)需要借助輸入輸出組件進(jìn)行輸入輸出的模塊不同,在其機(jī)器 上配置相應(yīng)的輸入輸出組件的配置文件,完成管道配置,生成所需的輸入輸出組件模塊;所 配置管道應(yīng)與進(jìn)程數(shù)據(jù)接口一端的設(shè)置相對(duì)應(yīng);第二步.對(duì)報(bào)文解包、打包過程中需要的報(bào)文類型、聯(lián)鎖信號(hào)元素屬性位置、外部、內(nèi)部 元素編號(hào)、系統(tǒng)內(nèi)各機(jī)器和組件編號(hào)參數(shù)進(jìn)行設(shè)置;第三步.設(shè)置元素屬性與報(bào)文數(shù)據(jù)位置對(duì)應(yīng)數(shù)據(jù)庫,將狀態(tài)報(bào)文字節(jié)中不同的字節(jié)位 代表的含義存入數(shù)據(jù)庫,并在配置文件中對(duì)不同的模塊配置所需屬性;第四步.輸入輸出組件模塊被宿主模塊調(diào)用前先進(jìn)行初始化;初始化時(shí)將首先啟動(dòng) 管道通道建立過程,在客戶端未連接到服務(wù)器端時(shí)采用線程循環(huán)請(qǐng)求機(jī)制,直到通道建立 為止;在服務(wù)端采用等待機(jī)制,在通信建立之后相應(yīng)線程則停止工作,以減少系統(tǒng)開銷;在 管道中建立心跳機(jī)制,以判斷最新的通信狀態(tài),在斷開連接后及時(shí)報(bào)警,并重新啟動(dòng)連接線 程;在管道接收數(shù)據(jù)與打包解包之間采取消息隊(duì)列機(jī)制,建立緩存,以防止報(bào)文處理過程中 后續(xù)報(bào)文丟包;第五步.初始化還包括啟動(dòng)緩存隊(duì)列讀取行為,在隊(duì)列不為空時(shí)循環(huán)處理數(shù)據(jù),在管 道中收到的報(bào)文將被管道處理程序放入隊(duì)列,進(jìn)而觸發(fā)上述處理線程;同理,在列車自動(dòng)監(jiān) 控系統(tǒng)有操作指令下發(fā)給聯(lián)鎖時(shí),也會(huì)將數(shù)據(jù)放入隊(duì)列,觸發(fā)相應(yīng)處理;兩種觸發(fā)條件分別 進(jìn)入輸入輸出組件模塊的解包和打包工作中;第六步.解包過程,在收到要解包的報(bào)文時(shí),程序?qū)⑾热サ魣?bào)文頭,在讀取數(shù)據(jù)字節(jié)時(shí) 按照接口數(shù)據(jù)類型、報(bào)文類型、設(shè)備類型、設(shè)備編號(hào)依次解包,然后根據(jù)第三步中配置的字 節(jié)屬性,取出所有字節(jié),按照配置將帶有屬性值的不同對(duì)象,分發(fā)給不同的模塊,進(jìn)行相應(yīng) 的顯示和處理;第七步.打包過程,在第五步中,系統(tǒng)其它模塊會(huì)調(diào)用輸入輸出組件模塊進(jìn)行指令的 輸出,線程收到要打包的數(shù)據(jù)時(shí),按照字節(jié)對(duì)照轉(zhuǎn)換屬性值,加入報(bào)文頭,調(diào)用管道接口,通 過對(duì)后備模式和連接狀態(tài)的判斷,確保報(bào)文發(fā)送成功。
2.根據(jù)權(quán)利要求1所述的方法,其特征是所述的管道和報(bào)文參數(shù)配置的靈活性,管道 配置包括管道名稱、管道方向、所屬聯(lián)鎖區(qū)域和關(guān)聯(lián)管道屬性;報(bào)文參數(shù)配置包括數(shù)據(jù)類 型、報(bào)文類型、設(shè)備類型、設(shè)備編號(hào)等配置。
3.根據(jù)權(quán)利要求1所述的方法,其特征是線程循環(huán)請(qǐng)求機(jī)制動(dòng)態(tài)建立連接,心跳機(jī)制 維持連接狀態(tài),消息隊(duì)列機(jī)制避免保溫丟失,事件觸發(fā)機(jī)制防止循環(huán)調(diào)用,保證實(shí)時(shí)、可靠 的通信。
全文摘要
一種基于命名管道通信的列車自動(dòng)監(jiān)控系統(tǒng)輸入輸出組件的實(shí)現(xiàn)方法,其特征是它包括第一步、管道配置,根據(jù)需要借助輸入輸出組件進(jìn)行輸入輸出的模塊不同,在其機(jī)器上配置相應(yīng)的輸入輸出組件的配置文件,完成管道配置,生成所需的輸入輸出組件模塊;所配置管道應(yīng)與進(jìn)程數(shù)據(jù)接口一端的設(shè)置相對(duì)應(yīng);第二步、對(duì)報(bào)文解包、打包過程中需要的參數(shù)進(jìn)行設(shè)置;第三步、設(shè)置元素屬性與報(bào)文數(shù)據(jù)位置對(duì)應(yīng)數(shù)據(jù)庫,將狀態(tài)報(bào)文字節(jié)中不同的字節(jié)位代表的含義存入數(shù)據(jù)庫;第四步、輸入輸出組件模塊被宿主模塊調(diào)用前先進(jìn)行初始化;在收到要解包的報(bào)文時(shí),程序?qū)⑾热サ魣?bào)文頭,在讀取數(shù)據(jù)字節(jié)時(shí)按照接口數(shù)據(jù)類型、報(bào)文類型、設(shè)備類型、設(shè)備編號(hào)依次解包。本發(fā)明具有處理速度快;占用資源較少;通道連接狀態(tài)穩(wěn)定等性能;可配置、可擴(kuò)展性強(qiáng)的優(yōu)點(diǎn)。
文檔編號(hào)B61L27/04GK102064962SQ20101057396
公開日2011年5月18日 申請(qǐng)日期2010年12月6日 優(yōu)先權(quán)日2010年12月6日
發(fā)明者李復(fù)才 申請(qǐng)人:南京恩瑞特實(shí)業(yè)有限公司