国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

計(jì)算機(jī)聯(lián)鎖仿真系統(tǒng)通信模塊的研究與實(shí)現(xiàn)

2011-05-08 08:43:54梁豆豆范多旺陳光武
關(guān)鍵詞:模擬機(jī)線程道岔

梁豆豆, 范多旺,陳光武

(蘭州交通大學(xué) 光電技術(shù)與智能控制教育部重點(diǎn)實(shí)驗(yàn)室,蘭州 730070 )

車站聯(lián)鎖控制系統(tǒng)是鐵路運(yùn)輸領(lǐng)域的重要控制系統(tǒng),目前隨著計(jì)算機(jī)聯(lián)鎖技術(shù)的日趨完善,計(jì)算機(jī)聯(lián)鎖控制成為聯(lián)鎖控制的主要形式,實(shí)現(xiàn)高可靠的通信模塊進(jìn)行聯(lián)鎖系統(tǒng)內(nèi)部的數(shù)據(jù)傳輸,具有很強(qiáng)的實(shí)際意義。目前套接字(Socket)為開發(fā)網(wǎng)絡(luò)應(yīng)用程序非常有效快捷的工具,可以很方便訪問TCP/IP。本設(shè)計(jì)就使用Socket來實(shí)現(xiàn)計(jì)算機(jī)聯(lián)鎖仿真系統(tǒng)的通信模塊。

1 計(jì)算機(jī)聯(lián)鎖系統(tǒng)結(jié)構(gòu)

計(jì)算機(jī)聯(lián)鎖系統(tǒng)結(jié)構(gòu)如圖1,本設(shè)計(jì)中分別由監(jiān)控機(jī)、聯(lián)鎖機(jī)、模擬機(jī)(模擬實(shí)現(xiàn)監(jiān)控層和室外設(shè)備層)實(shí)現(xiàn)。

監(jiān)控機(jī)發(fā)送操作控制命令給聯(lián)鎖機(jī),并接收來自聯(lián)鎖機(jī)的命令執(zhí)行結(jié)果及站場中各信號(hào)設(shè)備的狀態(tài)表示信息,將其顯示到屏幕上。

聯(lián)鎖機(jī)負(fù)責(zé)接收監(jiān)控機(jī)的操作控制命令,根據(jù)來自模擬機(jī)的現(xiàn)場設(shè)備實(shí)時(shí)狀態(tài)進(jìn)行聯(lián)鎖邏輯運(yùn)算,并將運(yùn)算的結(jié)果發(fā)送到監(jiān)控機(jī)和模擬機(jī)。

模擬機(jī)接收來自聯(lián)鎖機(jī)的控制命令,改變信號(hào)設(shè)備狀態(tài),實(shí)時(shí)顯示現(xiàn)場設(shè)備狀態(tài),并且模擬現(xiàn)場信號(hào)設(shè)備的故障狀態(tài)。

2 客戶機(jī)/服務(wù)器模式及套接字

2.1 客戶機(jī)/服務(wù)器(C/S)模式

在TCP/IP網(wǎng)絡(luò)應(yīng)用中,通信的兩個(gè)進(jìn)程間相互作用的主要模式是C/S模式,即客戶機(jī)向服務(wù)器提出請(qǐng)求,服務(wù)器接收到請(qǐng)求后提供相應(yīng)的服務(wù)。

C/S模式在操作過程中采取主動(dòng)請(qǐng)求的方式。服務(wù)器方要先啟動(dòng)并根據(jù)請(qǐng)求提供相應(yīng)的服務(wù):

(1) 打開一個(gè)通信通道并告知本地主機(jī)在某一地址和端口上接收客戶請(qǐng)求。(2) 等待客戶請(qǐng)求到達(dá)該端口。(3) 接收到服務(wù)請(qǐng)求,處理該請(qǐng)求并發(fā)送應(yīng)答信號(hào)。服務(wù)完成后關(guān)閉與客戶端的通信鏈路,并終止。(4) 返回第二步,等待另一客戶請(qǐng)求。(5) 關(guān)閉服務(wù)器。

圖1 計(jì)算機(jī)聯(lián)鎖系統(tǒng)結(jié)構(gòu)

客戶端:

(1) 打開一個(gè)通信通道,并連接到服務(wù)器所在的主機(jī)特定端口。(2) 向服務(wù)器發(fā)送服務(wù)請(qǐng)求報(bào)文,等待并接收應(yīng)答;繼續(xù)提出請(qǐng)求。(3) 請(qǐng)求結(jié)束后關(guān)閉通信通道并終止。

2.2 套接字

套接字是一個(gè)通訊標(biāo)示,由一個(gè)短整數(shù)表示,實(shí)際上是一個(gè)句柄,代表網(wǎng)絡(luò)協(xié)議中的一組數(shù)據(jù),該數(shù)據(jù)包含了通信雙方的IP地址和當(dāng)前連接狀態(tài)等信息,由協(xié)議、地址、端口來描述并唯一確定。

套接字的類型有流式套接字,數(shù)據(jù)報(bào)式套接字,原始套接字。流式套接字實(shí)際上是基于TCP協(xié)議實(shí)現(xiàn)的,它提供面向連接、可靠的數(shù)據(jù)傳輸服務(wù),數(shù)據(jù)無差錯(cuò)、無重復(fù)的發(fā)送,且按發(fā)送順序接收。本設(shè)計(jì)使用流式套接字實(shí)現(xiàn)。

3 聯(lián)鎖系統(tǒng)傳輸?shù)臄?shù)據(jù)

計(jì)算機(jī)聯(lián)鎖系統(tǒng)各組成部分之間的數(shù)據(jù)傳輸內(nèi)容如圖2所示。

圖2 數(shù)據(jù)傳輸示意圖

(1)按鈕控制命令包括:列車按鈕、調(diào)車按鈕、道岔按鈕、閉塞按鈕以及功能按鈕。其中功能按鈕包括上(下)行引導(dǎo)總鎖閉按鈕、總定位按鈕、總反位按鈕、單鎖按鈕、單解按鈕、封鎖按鈕、封解按鈕、進(jìn)路故障解鎖按鈕、區(qū)段故障解鎖按鈕、關(guān)信號(hào)按鈕、總?cè)∠粹o、總?cè)私獍粹o。

(2)信號(hào)設(shè)備狀態(tài)信息包括:信號(hào)機(jī)、道岔、區(qū)段、進(jìn)路的狀態(tài)信息。具體如下:

a.信號(hào)機(jī):信號(hào)顯示、燈絲狀態(tài);b.道岔:定位、反位、四開、擠岔、封鎖、單鎖;c.區(qū)段:占用狀態(tài)。d.進(jìn)路:鎖閉狀態(tài)。

(3)設(shè)備控制命令包括:道岔轉(zhuǎn)換命令、道岔單鎖命令、道岔單解命令、道岔封鎖命令、道岔封解命令、信號(hào)顯示改變命令。

(4)信號(hào)設(shè)備狀態(tài)信息包括:信號(hào)機(jī)、道岔、區(qū)段狀態(tài)信息,與(2)中的相同。

4 Socket通信方式及實(shí)現(xiàn)

在C/S通信模式中,聯(lián)鎖機(jī)作為聯(lián)鎖系統(tǒng)的核心控制監(jiān)控機(jī)、模擬機(jī)的數(shù)據(jù)傳輸,所以聯(lián)鎖機(jī)為客戶端,監(jiān)控機(jī)和模擬機(jī)為服務(wù)器端。

4.1 系統(tǒng)通信要求

聯(lián)鎖仿真系統(tǒng)通信要求具體如下:

(1)監(jiān)控機(jī):能即時(shí)發(fā)送按鈕控制命令,同時(shí)能即時(shí)接收聯(lián)鎖機(jī)發(fā)送的現(xiàn)場設(shè)備狀態(tài)信息。

(2)聯(lián)鎖機(jī):能夠即時(shí)接收監(jiān)控機(jī)發(fā)送的按鈕控制命令和模擬機(jī)發(fā)送的現(xiàn)場設(shè)備狀態(tài)信息,定時(shí)向監(jiān)控機(jī)發(fā)送設(shè)備狀態(tài)信息,且定時(shí)向模擬機(jī)發(fā)送設(shè)備控制命令。

(3)模擬機(jī):即時(shí)接收來自聯(lián)鎖機(jī)的設(shè)備控制命令,并定時(shí)向聯(lián)鎖機(jī)發(fā)送設(shè)備狀態(tài)信息。

(4)整個(gè)系統(tǒng)通信周期小于300 ms。

4.2 通信實(shí)現(xiàn)方式

4.2.1 監(jiān)控機(jī)顯示界面

監(jiān)控機(jī)顯示界面用VC++實(shí)現(xiàn),考慮到通信模塊與界面顯示模塊之間的兼容以及監(jiān)控機(jī)的通信要求,用MFC中的CAsyncSocket類來實(shí)現(xiàn),CA-syncSocket類對(duì)Windows Socket API進(jìn)行了簡單的封裝,可以在較深層次上控制通信過程。聯(lián)鎖機(jī)在Win32控制臺(tái)下用C語言實(shí)現(xiàn),所以通信部分用Windows Socket API函數(shù)來實(shí)現(xiàn),為保證聯(lián)鎖程序的實(shí)時(shí)運(yùn)行和數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性,使用多線程技術(shù)來實(shí)現(xiàn),其中讀和寫分別為單獨(dú)的線程。編程時(shí)序圖如圖3。

4.2.2 監(jiān)控機(jī)具體的實(shí)現(xiàn)過程

(1)初始化套接字AfxSocketInit()。

(2)調(diào)用Create函數(shù)創(chuàng)建ClisteningSocket內(nèi)嵌的SOCKET句柄,ClisteningSocket.Create(),并開始偵聽端口ClisteningSocket.Listen()。

(3)當(dāng)有聯(lián)鎖機(jī)連接請(qǐng)求時(shí),觸發(fā)CListening-Socket 類OnAccept()函數(shù),在OnAccept()函數(shù)中調(diào)用Accept()函數(shù)接收連接,同時(shí)返回CClient-Socket內(nèi)嵌的SOCKET句柄。

圖3 編程時(shí)序圖

(4)當(dāng)有數(shù)據(jù)被接收時(shí),觸發(fā)CClientSocket類OnReceive()函數(shù),在OnReceive()中調(diào)用Receive()函數(shù)讀取數(shù)據(jù)。

(5) 在按鈕響應(yīng)函數(shù)中用CClientSocket.Send()發(fā)送數(shù)據(jù)。

4.2.3 聯(lián)鎖機(jī)具體的實(shí)現(xiàn)過程

(1) 加載套接字庫。(2) 創(chuàng)建套接字Socket()。(3) 向監(jiān)控機(jī)發(fā)起連接請(qǐng)求 Connect()。(4)發(fā)送數(shù)據(jù)Send(),接收數(shù)據(jù)Receive()。

聯(lián)鎖機(jī)采用多線程來實(shí)現(xiàn),存在多個(gè)線程對(duì)同一資源的讀寫問題,例如對(duì)于設(shè)備狀態(tài)信息,聯(lián)鎖機(jī)進(jìn)行聯(lián)鎖運(yùn)算的過程中會(huì)改變這些狀態(tài),同時(shí)要讀取來自模擬機(jī)的現(xiàn)場信息,還要向監(jiān)控機(jī)發(fā)送狀態(tài)信息,有可能會(huì)出現(xiàn)非同步的結(jié)果。這就涉及到線程同步的問題,線程同步的方法有很多,最常用的有互斥、臨界區(qū)、信號(hào)量、事件等。

4.2.4 線程同步方法

(1)互斥就是一個(gè)線程對(duì)共享資源進(jìn)行訪問時(shí)排斥其他的線程,互斥對(duì)象建立之后,程序運(yùn)行時(shí)只有擁有互斥對(duì)象的線程有訪問共享資源的權(quán)利,如果線程對(duì)共享資源訪問結(jié)束,則釋放互斥對(duì)象,好讓其他線程擁有對(duì)共享資源的訪問權(quán)利。

(2)臨界區(qū)和互斥類似,臨界區(qū)是一段以獨(dú)占方式訪問共享資源的代碼段,只要進(jìn)入臨界區(qū)的線程沒有離開,其他試圖進(jìn)入臨界區(qū)的線程將被掛起而進(jìn)入到等待狀態(tài),并一直持續(xù)到進(jìn)入臨界區(qū)的線程離開。

(3)信號(hào)量允許多個(gè)線程在同一時(shí)刻訪問同一種資源,但是需要限制在同一時(shí)刻訪問此資源的最大線程數(shù)目,超過這個(gè)最大數(shù)的線程將不允許訪問此資源,如果將最大線程數(shù)設(shè)為一,那么跟前面的用法類似。

(4)事件內(nèi)核通過通知操作的方式來保持線程的同步。

(5)聯(lián)鎖機(jī)與模擬機(jī)之間的通信與前者相似。

5 數(shù)據(jù)傳輸?shù)目煽啃?/h2>

為保證數(shù)據(jù)傳輸?shù)目煽啃裕捎帽苠e(cuò)和容錯(cuò)相結(jié)合的技術(shù)。避錯(cuò)技術(shù)是采用可靠的器件,抗干擾的通道介質(zhì)以及嚴(yán)格的工藝措施等以減少故障發(fā)生的概率,但不一定能滿足系統(tǒng)的可靠性要求。因此必須結(jié)合容錯(cuò)技術(shù)。容錯(cuò)技術(shù)從傳輸網(wǎng)絡(luò)和傳輸編碼兩方面考慮。傳輸網(wǎng)絡(luò)可采用多路冗余工業(yè)以太網(wǎng)。采用合適的編碼可以達(dá)到一定的檢錯(cuò)和糾錯(cuò)功能,從目前使用的安全系統(tǒng)來看,多采用標(biāo)準(zhǔn)的編碼形式。

在聯(lián)鎖實(shí)時(shí)控制系統(tǒng)中,要求數(shù)據(jù)及時(shí)刷新,因此可利用周期循環(huán)傳輸?shù)奶攸c(diǎn)采取比較或表決方法提高數(shù)據(jù)接收與輸出的安全性。考慮到數(shù)據(jù)信息傳輸與處理的連續(xù)性,聯(lián)鎖數(shù)據(jù)應(yīng)不斷的進(jìn)行存儲(chǔ)與刷新,在存儲(chǔ)的信息中加以時(shí)間標(biāo)志,用新的狀態(tài)碼核心的時(shí)間標(biāo)志覆蓋原存的內(nèi)容. 例如采用2 個(gè)字節(jié)代表一個(gè)數(shù)據(jù)信息,第1字節(jié)為設(shè)備狀態(tài),第2字節(jié)中加入時(shí)間標(biāo)志,在使用時(shí)檢查它的時(shí)間標(biāo)志是否過時(shí),從而提高安全性。

6 結(jié)束語

計(jì)算機(jī)聯(lián)鎖仿真系統(tǒng)采用基于Socket的網(wǎng)絡(luò)通信,能達(dá)到系統(tǒng)通信性能指標(biāo)要求,并且計(jì)算機(jī)聯(lián)鎖仿真系統(tǒng)是一個(gè)可靠性要求很高的系統(tǒng), 運(yùn)用相關(guān)的避錯(cuò)容錯(cuò)技術(shù)和其他相關(guān)技術(shù),保障數(shù)據(jù)信息傳輸中的安全性,對(duì)于整個(gè)系統(tǒng)尤為重要。

[1] 趙志熙 . 計(jì)算機(jī)聯(lián)鎖系統(tǒng)技術(shù)[M]. 北京:中國鐵道出版社,1999.

[2] 孫 鑫,余安萍. VC++深入詳解[M]. 北京: 電子工業(yè)出版社,2006.

[3] 明日科技,宋 坤,劉銳寧,李偉明. Visual C++開發(fā)技術(shù)大全[M]. 北京:人民郵電出版社,2007.

[4] 袁藝芳,徐茂生. 計(jì)算機(jī)聯(lián)鎖系統(tǒng)可靠性研究[J]. 北京交通大學(xué)學(xué)報(bào). 2002,26(3):24-35.

[5] 黃翌虹,張 源,段 東. 計(jì)算機(jī)聯(lián)鎖系統(tǒng)的通信可靠性研究[J]. 北京交通大學(xué)學(xué)報(bào),2004,28(2):58-59.

猜你喜歡
模擬機(jī)線程道岔
中低速磁浮道岔與輪軌道岔的差異
場間銜接道岔的應(yīng)用探討
既有線站改插鋪臨時(shí)道岔電路修改
廈航第五臺(tái)模擬機(jī)正式交付
廈門航空(2017年10期)2018-01-04 05:14:15
應(yīng)用道路模擬機(jī)進(jìn)行整車強(qiáng)化壞路試驗(yàn)研究
淺談linux多線程協(xié)作
腹腔鏡虛擬模擬機(jī)在腹腔鏡技能培訓(xùn)中的作用分析
空客A320模擬機(jī)FD1+2可用性的討論
河南科技(2015年7期)2015-03-11 16:23:13
KJH101-127型氣動(dòng)司控道岔的改造
Linux線程實(shí)現(xiàn)技術(shù)研究
宁德市| 东城区| 喜德县| 马边| 班玛县| 封丘县| 寻甸| 金乡县| 东港市| 安顺市| 沈阳市| 茶陵县| 大化| 信宜市| 红原县| 长顺县| 建水县| 冕宁县| 连州市| 象州县| 惠东县| 南陵县| 昔阳县| 青河县| 寻甸| 越西县| 黄浦区| 吴旗县| 中江县| 永福县| 建昌县| 百色市| 香港 | 栖霞市| 瑞安市| 长宁县| 滦南县| 肃宁县| 辉南县| 丰台区| 错那县|