孫永生,高曉菲,梅瑜華,劉德勇
(浙江眾合科技股份有限公司,杭州 310051)
?
重載鐵路調(diào)度優(yōu)化系統(tǒng)內(nèi)部通信關(guān)鍵問題及算法研究
孫永生,高曉菲,梅瑜華,劉德勇
(浙江眾合科技股份有限公司,杭州310051)
摘要:為研究重載鐵路調(diào)度優(yōu)化系統(tǒng)內(nèi)部通信的關(guān)鍵問題,對(duì)調(diào)度優(yōu)化系統(tǒng)內(nèi)部通信結(jié)構(gòu)和特點(diǎn)進(jìn)行分析,得出影響通信的關(guān)鍵問題,通過對(duì)這些問題進(jìn)行分析和建模,建立UDP和TCP相結(jié)合的總線式通信機(jī)制,從而保證系統(tǒng)內(nèi)部通信的可靠性,滿足調(diào)度優(yōu)化系統(tǒng)內(nèi)部通信的要求。
關(guān)鍵詞:重載鐵路;調(diào)度優(yōu)化系統(tǒng);通信;消息總線
調(diào)度優(yōu)化系統(tǒng)的研制是國(guó)家科技支撐計(jì)劃項(xiàng)目“軸重30噸以上煤炭運(yùn)輸重載鐵路關(guān)鍵技術(shù)與核心裝備研制”中的重要課題。對(duì)外通過LTE-R網(wǎng)絡(luò)與車載設(shè)備進(jìn)行實(shí)時(shí)、連續(xù)的通信[1-3],可以實(shí)時(shí)獲得在線的每一列車的信息,而系統(tǒng)內(nèi)部的通信影響著系統(tǒng)的正常運(yùn)行,需要高度的可靠性。
同時(shí),為減少開發(fā)的工作量,充分利用已有的成熟技術(shù),提高系統(tǒng)的可用性,必須選用一種成熟的通信協(xié)議作為傳輸層,從而使通信的應(yīng)用層專注于功能和內(nèi)部接口的完整[4]。目前非常成熟且應(yīng)用廣泛的傳輸層協(xié)議主要有TCP和UDP。
TCP是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,提供排序、重傳等機(jī)制,能可靠的保證信息傳輸[5]。利用TCP協(xié)議開發(fā)調(diào)度優(yōu)化系統(tǒng)內(nèi)部通信,可以在建立應(yīng)用層消息傳遞和識(shí)別的同時(shí),提高通信模塊的可用性。
UDP是一種面向無連接的傳輸層協(xié)議,它主要用于不要求分組順序到達(dá)的傳輸中,分組傳輸順序的檢查與排序由應(yīng)用層完成,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù)。
調(diào)度優(yōu)化系統(tǒng)內(nèi)部通信模塊是軟件意義上的消息總線架構(gòu)[5],它部署于系統(tǒng)的各個(gè)設(shè)備上,其他功能模塊之間的通信均通過消息總線來實(shí)現(xiàn)。這種總線式的設(shè)計(jì)能將各種信息格式化,有利于統(tǒng)一接口,并具有良好的擴(kuò)展性;其他各功能模塊均可通過消息總線通信,增強(qiáng)了通信的靈活性[6]。
調(diào)度優(yōu)化系統(tǒng)專網(wǎng)專用,除了與其他系統(tǒng)進(jìn)行必要的接口外,不與公用網(wǎng)絡(luò)、其他無關(guān)網(wǎng)絡(luò)進(jìn)行連接,以確保通信的安全性及系統(tǒng)的可靠性和可用性[7]。
2.1傳輸層設(shè)計(jì)
調(diào)度優(yōu)化系統(tǒng)各設(shè)備之間的網(wǎng)絡(luò)通信通過以太網(wǎng)絡(luò)接口來實(shí)現(xiàn),內(nèi)部接口的通信協(xié)議采用標(biāo)準(zhǔn)的TCP/IP協(xié)議棧。調(diào)度優(yōu)化系統(tǒng)內(nèi)部通信的層次模型如圖1所示。
圖1 調(diào)度優(yōu)化系統(tǒng)內(nèi)部通信層次模型
各設(shè)備互連時(shí)并不會(huì)關(guān)心消息的順序,宜采用UDP協(xié)議;建立連接后,要嚴(yán)格按照順序收發(fā)消息,并采取防止漏傳等措施,故采用TCP協(xié)議。
總體上講,調(diào)度優(yōu)化系統(tǒng)內(nèi)部通信的傳輸層采用UDP與TCP相結(jié)合的方式,既能有效實(shí)現(xiàn)設(shè)備和應(yīng)用程序的互連,又能利用成熟的排序、重傳機(jī)制,達(dá)到通信可靠、穩(wěn)定的目的。
2.2通信架構(gòu)及關(guān)鍵問題
調(diào)度優(yōu)化系統(tǒng)內(nèi)部通信結(jié)構(gòu)如圖2所示,通信模塊不對(duì)消息進(jìn)行任何加工處理,只作為消息轉(zhuǎn)發(fā)的通道[7],同時(shí)依靠TCP協(xié)議的防超時(shí)及重傳機(jī)制,保證消息的可靠傳遞。
圖2 調(diào)度優(yōu)化系統(tǒng)設(shè)備通信連接模型
該通信方式采用“廣播+訂閱”的消息傳遞方式[8,9],即各應(yīng)用軟件向消息總線訂閱自己需要接收的消息類型,以此過濾掉不需要的消息;一臺(tái)設(shè)備發(fā)出的消息,網(wǎng)絡(luò)中所有節(jié)點(diǎn)均能收到[10,11]。
在實(shí)現(xiàn)過程中需要解決不同設(shè)備上通信終端的互聯(lián)、消息訂閱、消息的傳遞等問題。另外,由于系統(tǒng)部分設(shè)備采取熱備機(jī)制,還要處理連接狀態(tài)轉(zhuǎn)換、其他功能模塊的熱備同步和主備切換等。
2.3消息總線設(shè)計(jì)
將消息總線模塊劃分為服務(wù)端、客戶端、連接管理3個(gè)組件,3個(gè)組件的關(guān)系如圖3所示。
圖3 消息總線模塊組成
連接管理:提供消息總線連接的管理,包括連接的分配,建立,刪除,連接狀態(tài)的切換;提供消息的封裝,包括信息的格式定義,編解碼及報(bào)文的內(nèi)存分配。
服務(wù)端:監(jiān)聽UDP端口,定時(shí)發(fā)送UDP廣播報(bào)文;監(jiān)聽TCP連接端口。管理消息總線的雙連接切換、消息注冊(cè)、消息轉(zhuǎn)發(fā)功能。
客戶端:提供了供應(yīng)用軟件使用的客戶端,向服務(wù)端發(fā)起TCP連接請(qǐng)求,雙連接的切換,消息注冊(cè),應(yīng)用軟件的熱備切換。
2.4關(guān)鍵問題設(shè)計(jì)
2.4.1消息總線互連
消息總線通過指定UDP端口廣播心跳包來發(fā)現(xiàn)其他設(shè)備上部署的消息總線模塊,建立消息總線連接,從而建立設(shè)備之間的連接。步驟如下:
(1)初始化地址信息,獲得本地所有網(wǎng)卡的IP和其廣播地址;
(2)在所有網(wǎng)卡廣播心跳包;
(3)消息總線模塊收到心跳包,對(duì)所有未建立連接的同網(wǎng)段地址嘗試建立連接;
(4)連接建立,并初始化。
消息總線互連時(shí)序見圖4。
2.4.2消息訂閱
消息總線客戶端應(yīng)用和服務(wù)端之間會(huì)訂閱消息,告訴消息總線服務(wù)端自身需要的消息類型,具體過程如下:
(1)消息總線收到消息注冊(cè)類型消息;
(2)消息總線解析該消息來源;
圖4 消息總線互連
(3)如來源是應(yīng)用程序,連接為應(yīng)用程序-消息總線類型,轉(zhuǎn)(4) ;否則,轉(zhuǎn)(6) ;
(4)本地為該應(yīng)用程序-消息總線連接注冊(cè)消息;
(5)向其他消息總線注冊(cè)該消息類型,轉(zhuǎn)(7) ;
(6)本地為該消息總線-消息總線連接注冊(cè)消息;
(7)注冊(cè)結(jié)束。
消息訂閱流程如圖5所示。
圖5 消息訂閱流程
2.4.3消息傳遞
消息總線接收到消息后,根據(jù)消息的類型和目的地進(jìn)行轉(zhuǎn)發(fā),具體如下:
(1)收到消息;
(2)根據(jù)消息來源,如果是來自應(yīng)用程序,則執(zhí)行(3),否則轉(zhuǎn)(4) ;
(3)分發(fā)到其他消息總線;
(4)分發(fā)到除來源之外的其他訂閱該消息的應(yīng)用程序。
消息傳遞流程如圖6所示。
3.1連接狀態(tài)轉(zhuǎn)換
消息總線的連接分為應(yīng)用程序-消息總線連接、消息總線-消息總線連接。連接狀態(tài)可分為如下幾種。
(1)關(guān)閉:消息總線連接對(duì)象創(chuàng)建,未進(jìn)行連接??蛻舳税l(fā)送握手消息,切換到“發(fā)送連接狀態(tài)握手信息”狀態(tài);服務(wù)端接收握手消息,并發(fā)送握手ACK,切換到“接收連接狀態(tài)握手信息”狀態(tài)。
(2)發(fā)送連接狀態(tài)握手信息:客戶端狀態(tài),連接建立,并且已經(jīng)送出握手消息,接收握手ACK。收到握手ACK后,切換到“OK”狀態(tài)。
(3)接收連接狀態(tài)握手信息:服務(wù)端狀態(tài),收到握手消息,并送出握手ACK。發(fā)送握手ACK后,切換到“OK”狀態(tài)。
(4) OK:正常工作狀態(tài)。
(5) Final:不收發(fā)任何消息。
消息總線連接狀態(tài)轉(zhuǎn)換如圖7所示。
圖6 消息傳遞
圖7 消息總線連接狀態(tài)轉(zhuǎn)換
3.2應(yīng)用程序熱備同步
3.2.1進(jìn)程初始化同步
當(dāng)應(yīng)用程序初始化完成以后,向主進(jìn)程請(qǐng)求同步數(shù)據(jù),主進(jìn)程收到該請(qǐng)求之后,以此發(fā)送同步開始,同步內(nèi)容(多個(gè)報(bào)文),同步結(jié)束報(bào)文。備進(jìn)程接收來自主進(jìn)程發(fā)來的同步消息,并完成同步過程,如圖8所示。
圖8 進(jìn)程初始化同步過程
3.2.2運(yùn)行過程中同步
在程序運(yùn)行過程中,對(duì)輸入數(shù)據(jù)做同步操作。主進(jìn)程收到消息后,通知備進(jìn)程已接收到該消息,并進(jìn)行下一步的處理。在備進(jìn)程收到消息后先把消息放入緩存隊(duì)列中,直到收到主進(jìn)程發(fā)送過來的確認(rèn)消息后,才對(duì)消息進(jìn)行下一步的處理,如圖9所示。
圖9 進(jìn)程運(yùn)行中主備同步
3.2.3失步后同步
在程序運(yùn)行的過程中,有可能發(fā)生失步的情況,即備用進(jìn)程丟失數(shù)據(jù)包,這時(shí)候需要重新同步,使得主備之間的數(shù)據(jù)再次保持一致。
當(dāng)主進(jìn)程接收消息的通知比備進(jìn)程更早接收到該消息的時(shí)候,備進(jìn)程等待該消息到來若干周期,如果在這段時(shí)間之內(nèi)仍然沒有收到該消息,則判斷備進(jìn)程處于失步狀態(tài),請(qǐng)求重新同步數(shù)據(jù)。具體過程如圖10所示。
圖10 失步后主備同步
3.3應(yīng)用程序主備切換
3.3.1搶占切換
當(dāng)高優(yōu)先級(jí)的進(jìn)程在低優(yōu)先級(jí)的進(jìn)程運(yùn)行之后再啟動(dòng),會(huì)發(fā)生主備切換過程,其切換過程如下:
(1)低優(yōu)先級(jí)的進(jìn)程作為主進(jìn)程在運(yùn)行;
(2)高優(yōu)先級(jí)的進(jìn)程開始運(yùn)行,初始化為備進(jìn)程,發(fā)送主進(jìn)程查詢,等待主進(jìn)程響應(yīng);
(3)主進(jìn)程收到主進(jìn)程查詢消息,并返回主進(jìn)程確認(rèn)消息;
(4)高優(yōu)先級(jí)進(jìn)程收到主進(jìn)程確認(rèn)消息,開始請(qǐng)求數(shù)據(jù)同步;
(5)數(shù)據(jù)同步完成;
(6)高優(yōu)先級(jí)進(jìn)程收到來自主進(jìn)程的確認(rèn)消息,比較該消息的優(yōu)先級(jí)低于自己的優(yōu)先級(jí),則切換到主進(jìn)程,并發(fā)送主進(jìn)程確認(rèn)消息;
(7)當(dāng)?shù)蛢?yōu)先級(jí)進(jìn)程收到該主進(jìn)程確認(rèn)消息后,切換到備進(jìn)程。
切換過程遵循“先同步,再切換”的原則,保證數(shù)據(jù)同步,如圖11所示。
3.3.2異常情況切換
網(wǎng)絡(luò)發(fā)生異?;蛑鬟M(jìn)程異常后,同樣會(huì)發(fā)生主備切換(圖12),過程如下:
(1)備進(jìn)程接收主進(jìn)程確認(rèn)消息超時(shí);
(2)開始發(fā)送主進(jìn)程查詢消息,等待主進(jìn)程響應(yīng);
(3)主進(jìn)程無響應(yīng);
(4)備進(jìn)程切換為主進(jìn)程開始運(yùn)行,并發(fā)送主進(jìn)程確認(rèn)消息。
圖11 高優(yōu)先級(jí)進(jìn)程搶占主進(jìn)程
圖12 異常后主備切換過程
3.3.3競(jìng)爭(zhēng)切換
當(dāng)兩個(gè)具有主備關(guān)系的應(yīng)用程序同時(shí)啟動(dòng),會(huì)形成競(jìng)爭(zhēng)關(guān)系,需要通過比較優(yōu)先級(jí)來確定主進(jìn)程。優(yōu)先級(jí)信息存在于主進(jìn)程查詢消息中。具體過程如圖13所示。
圖13 競(jìng)爭(zhēng)切換
通過分析,建立UDP與TCP相結(jié)合的總線式通信,充分利用了UDP和TCP的特點(diǎn),使調(diào)度優(yōu)化系統(tǒng)通信軟件專注于解決業(yè)務(wù)問題,提高了內(nèi)部通信的可用性和可靠性[12]。
通過對(duì)系統(tǒng)內(nèi)部通信特點(diǎn)的分析,對(duì)消息總線的關(guān)鍵問題和算法進(jìn)行建模,滿足了系統(tǒng)業(yè)務(wù)的需求,可以保證消息傳遞、互連、信息同步、主備切換等過程順利進(jìn)行。
參考文獻(xiàn):
[1]孫永生,張友鵬,趙宇坤.移動(dòng)閉塞列車自動(dòng)防護(hù)系統(tǒng)仿真平臺(tái)研究[J].計(jì)算機(jī)仿真,2012,29(9):371-374.
[2]高云波.基于高速鐵路的GSM-R通信無線覆蓋的可靠性分析[J].鐵道標(biāo)準(zhǔn)設(shè)計(jì),2015,59(2):113-117.
[3]孫永生.基于移動(dòng)閉塞理論的城市軌道交通ATP系統(tǒng)研究與仿真[D].蘭州:蘭州交通大學(xué),2012.
[4]潘效玥.基于自律分散的城市軌道交通ATS的設(shè)計(jì)與實(shí)現(xiàn)[D].杭州:浙江大學(xué),2013.
[5]羅雅允,陳永剛,張彩珍.Rijndael算法在CBTC安全通信協(xié)議中的應(yīng)用[J].鐵道標(biāo)準(zhǔn)設(shè)計(jì),2015,59(3):114-118.
[6]陽王東,周勇,王濤,等.一種基于消息總線的交通信息集成模型[J].計(jì)算機(jī)工程,2010,36(14):278-280,284.
[7]黃鯤,王堅(jiān),姚仰光,,等.OCS消息總線的測(cè)試與分析[J].中國(guó)科學(xué)技術(shù)大學(xué)學(xué)報(bào),2007,37(6):662-669.
[8]周根火,陳辛怡,陸國(guó)政.完善信號(hào)微機(jī)監(jiān)測(cè)系統(tǒng)功能[J].鐵道通信信號(hào),2005,41(11):4-5.
[9]蔡海燕.鐵路通信系統(tǒng)節(jié)能分析[J].鐵道標(biāo)準(zhǔn)設(shè)計(jì),2013,57 (6):147-150.
[10]梅瑜華,甘朝欽,龔龑,等.用戶側(cè)VLAN在光接入網(wǎng)中的應(yīng)用[J].通信技術(shù),2013,46(10):55-57.
[11]梅瑜華,甘朝欽,馬雪嬌.DHCP與Option82在接入網(wǎng)中的實(shí)現(xiàn)[J].通信技術(shù),2013,46(8):58-60.
[12]王安義,孫偉強(qiáng).鐵路TD-LTE專網(wǎng)系統(tǒng)解決方案[J].鐵道標(biāo)準(zhǔn)設(shè)計(jì),2014,58(2):94-97,138.
Research on Key Problems and Algorithms of Internal Communication in Scheduling Optimization System
SUN Yong-sheng,GAO Xiao-fei,MEI Yu-hua,LIU De-yong
(United Science&Technology Co.,Ltd.,Hangzhou 310051,China)
Abstract:To study the key problems in internal communication in scheduling optimization system,the internal communication structure and characteristics of scheduling optimization system are analyzed,and key issues that affect communication are identified.Through analysis and modeling of these problems,the combined bus communication system of UDP and TCP is established,thus,the reliability of the system's internal communication is ensured and internal communications in the scheduling optimization system are fulfilled.
Key words:Heavy haul railway; Scheduling optimization system; Communication; Message bus
作者簡(jiǎn)介:孫永生(1986—),男,工程師,2012年畢業(yè)于蘭州交通大學(xué)交通信息工程及控制專業(yè),工學(xué)碩士,E-mail:sunyongsheng @ unitedmne.com。
基金項(xiàng)目:國(guó)家科技支撐計(jì)劃(2013BAG20B00)
收稿日期:2015-07-14;修回日期:2015-07-28
文章編號(hào):1004-2954(2016) 03-0147-05
中圖分類號(hào):U292.4+2
文獻(xiàn)標(biāo)識(shí)碼:A
DOI:10.13238/j.issn.1004-2954.2016.03.030