楊曉東,楊東穎,孫永奎,曹 源
(1.中車青島四方機車車輛股份有限公司 科技發(fā)展部,青島 266111;2.北京交通大學(xué) 電子信息工程學(xué)院,北京 100044;3.北京交通大學(xué) 軌道交通運行控制系統(tǒng)國家工程研究中心,北京 100044)
為滿足人們出行快速、便捷的需求,保證安全性和運輸效率的同時,提高對于多種系統(tǒng)運行平臺的兼容性,針對下一代列控系統(tǒng)的研究已經(jīng)展開[1]。作為道岔、信號機等信號設(shè)備的執(zhí)行單元,列控目標(biāo)控制器(OC,Object Controller)是列控系統(tǒng)研究工作的關(guān)鍵部分。
OC是室外信號設(shè)備的執(zhí)行單元,由分散的電子接口模塊組成,是連接上層計算機與室外信號設(shè)備的一個橋梁,是保障列車安全高效行車的關(guān)鍵信號基礎(chǔ)設(shè)備。在軌道交通領(lǐng)域,站場一般存在多個信號設(shè)備,需要多個OC相互協(xié)調(diào),保證其與上層計算機安全實時通信[2]。
在文獻[3]中,雖然研究與探討了OC相關(guān)關(guān)鍵性問題,并進行研究與設(shè)計,但是對于多個OC的安全通信總線方面的問題,還未有相關(guān)研究。OC呈分布式特點,存在通信實時性以及通信效率等問題,并且其對通信要求高可靠、高安全,但目前存在的通信總線無法解決這些關(guān)鍵性問題?;诜植际教攸c,研究多OC的安全通信總線及其通信機制問題具有實際價值。多OC的最終目的就是為了實現(xiàn)對多個信號設(shè)備的安全可靠控制,在這種控制中,通過基于分布式的OC通信總線,使數(shù)據(jù)包能夠?qū)崟r并準(zhǔn)確地從源節(jié)點送至目的節(jié)點,保障信號設(shè)備與上層安全計算機的安全可靠通信。
在下一代列控系統(tǒng)中,OC是信號機、道岔等信號設(shè)備的執(zhí)行單元,設(shè)置在信號設(shè)備附近,沿軌旁呈分布式結(jié)構(gòu)。
OC實時采集信號設(shè)備的狀態(tài)信息,并通過安全計算機傳遞到聯(lián)鎖計算機,通過計算處理將進路辦理命令通過安全計算機傳遞給布置在軌旁的OC,控制信號機、道岔的轉(zhuǎn)換和開放[3]。
總線結(jié)構(gòu)應(yīng)當(dāng)確保在節(jié)點掉電和節(jié)點故障的情況下不會影響總線控制器與其他節(jié)點之間的通信[4],本文采用總線型拓?fù)浣Y(jié)構(gòu)。由于總線用于固定的OC內(nèi),具有固定的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和設(shè)備地址,且拓?fù)浣Y(jié)構(gòu)為總線型,采用共享方式傳輸總線數(shù)據(jù),列車總線必須有且只有一個主OC控制網(wǎng)絡(luò)數(shù)據(jù)通信和介質(zhì)分配??紤]到總線網(wǎng)絡(luò)的可靠性,總線上可有多個冗余主OC,但在總線輪回周期時間內(nèi),只能有一個主OC是控制網(wǎng)絡(luò)的數(shù)據(jù)通信和介質(zhì)分配,其他備用的主OC在總線中完成從設(shè)備的功能。總線管理器之間采用令牌算法進行切換管理總線。OC與列車通信網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1所示。
圖1 OC與列車通信網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
通信總線采用時間觸發(fā)[5-7]的方式,主OC將每一個輪回時間劃分為固定的時間片,即基本周期。為了保證通信的實時性,一個周期的時間要求盡量短,并且能夠支持發(fā)送緊急數(shù)據(jù)。
本文制定了線路冗余以及主設(shè)備冗余兩種冗余方案以達到容錯的目的。
(1)OC同步發(fā)送出相同的數(shù)據(jù)在兩條路線上,但是它只從其中的一條線路上接收數(shù)據(jù),同時監(jiān)視另一條線路。這兩條線路在一定的情況下可以進行切換。
(2)主設(shè)備的冗余描述了從幾個總線管理器中選擇一個作為主設(shè)備在輪回周期內(nèi)對總線的控制。系統(tǒng)在初始化時根據(jù)主權(quán)轉(zhuǎn)移協(xié)議采用一個總線管理器作為主設(shè)備,其余處于備用主設(shè)備狀態(tài)。每個總線管理器內(nèi)都包含一個總線配置的數(shù)據(jù)結(jié)構(gòu),總線配置由一個實現(xiàn)索引來確定,同時該總線配置的數(shù)據(jù)結(jié)構(gòu)是以令牌的傳遞來排序。
根據(jù)OC的通信需求,可將時間觸發(fā)總線的結(jié)構(gòu)分為OC管理層、驅(qū)動層、鏈路層、物理層4個分層模型,如圖2所示。OC管理層將邏輯控制單元的應(yīng)用數(shù)據(jù)封裝成幀,實現(xiàn)按幀透明傳輸;驅(qū)動層將邏輯處理單元的數(shù)據(jù)通過不同的通信實現(xiàn)方式傳輸給總線;數(shù)據(jù)鏈路層主要負(fù)責(zé)將鏈路層數(shù)據(jù)幀正確傳輸給對應(yīng)的總線對象,包括時間觸發(fā)機制、組幀和解幀、字符轉(zhuǎn)義、差錯控制;物理層負(fù)責(zé)實際數(shù)據(jù)傳輸,根據(jù)實際物理引線,通過操作時鐘線和數(shù)據(jù)線實現(xiàn)數(shù)據(jù)收發(fā)。
圖2 OC分層結(jié)構(gòu)
為實現(xiàn)OC管理層能對總線進行統(tǒng)一操作,需要設(shè)計一個OC應(yīng)用協(xié)議(OCAP,Object Controller Application Protocol)。OC管理層待服務(wù)用戶需要總線通信服務(wù)時,利用OC應(yīng)用協(xié)議組OCAP數(shù)據(jù)幀后,再由驅(qū)動層將數(shù)據(jù)傳輸給總線鏈路層。總線控制單元根據(jù)目的地址將數(shù)據(jù)幀傳輸?shù)綄?yīng)的節(jié)點,并交付給OC管理層,完成一次數(shù)據(jù)通信。
OC管理層協(xié)議實現(xiàn)了總線上設(shè)備之間的通信透明傳輸。OC傳輸?shù)臄?shù)據(jù)具有非固定長度的短報文的特性,因此OCAP數(shù)據(jù)段適宜采用變長方式,以及短報文方案設(shè)計(256 byte),整體定義如表1所示。
表1 OCAP格式
字段解釋:
(1)幀序號(16 bit):分組序號,按1遞增,無分組默認(rèn)為0x01;
(2) 目的地址(16 bit):目標(biāo)地址,識別目的接收方;根據(jù)OC的數(shù)量選擇8 bit,留有余量;
(3) 源地址(16 bit):數(shù)據(jù)發(fā)送者的地址;
(4) 周期號(16 bit):用于識別進行的周期數(shù);
(5) 類型信息(8 bit):用于識別協(xié)議信息所表達類型;
(6) 應(yīng)用屬性(8 bit):表示所屬應(yīng)用數(shù)據(jù)屬性,如是否攜帶數(shù)據(jù)等。其他位預(yù)留,第1位表示當(dāng)前應(yīng)用類型是否有應(yīng)用數(shù)據(jù),1是,0否;
(7) 幀長度(8 bit):數(shù)據(jù)長度,不包括兩字節(jié)的校驗和;
(8) 數(shù)據(jù)段(變長):將要發(fā)送的數(shù)據(jù),大小在0~230 Byte;
(9) 校驗和(16 bit):使用校驗和對要數(shù)據(jù)進行校驗。
鏈路層實現(xiàn)時間觸發(fā)通信總線核心部分,包括時間觸發(fā)機制管理、主從控制邏輯、時鐘同步、差錯控制、調(diào)度等。
鏈路安全通信協(xié)議滿足時間觸發(fā)總線設(shè)計需求的鏈路層通信協(xié)議,用于完成通信總線通信設(shè)備之間數(shù)據(jù)安全可靠通信。設(shè)計的數(shù)據(jù)鏈路安全協(xié)議幀格式如表2所示。
協(xié)議字段說明:
(1) 起始位(8 bit):幀0x02,表示該幀開始標(biāo)識;
表2 鏈路層協(xié)議格式
(2) 幀長度(8 bit):表示該數(shù)據(jù)段長度;
(3) 目的地址(8 bit):表示該幀是屬于哪個通信對象;
(4) 應(yīng)答序號(8 bit):應(yīng)答已接受到的幀的序號,用于差錯重傳;
(5) 幀序號(8 bit):標(biāo)識數(shù)據(jù)幀唯一性;
(6) 控制信息(8 bit):攜帶一些屬性信息;
(7) 源地址(8 bit):表示該數(shù)據(jù)幀發(fā)送對象;
(8) 時間戳(16 bit):用于時鐘同步的計時時間;
(9) 數(shù)據(jù)段:長度變長,需要傳輸?shù)纳蠈訑?shù)據(jù);
(10) 校驗碼(16 bit):檢驗碼采用CRC-CCITT標(biāo)準(zhǔn)碼,多項式表示0x11021;
(11) 幀尾(8 bit):幀尾0x03,表示該幀結(jié)束。
采用局部時鐘和全局時鐘相結(jié)合方式,在主控節(jié)點的發(fā)送周期內(nèi),各從節(jié)點同步于主控節(jié)點;在從節(jié)點的發(fā)送周期內(nèi),各個節(jié)點以自身時鐘為基準(zhǔn)。本文在總線上實現(xiàn)從節(jié)點時鐘同步于主節(jié)點時鐘。在微周期的同步時隙內(nèi),主節(jié)點向總線廣播帶有主節(jié)點時間戳的同步信息,并且?guī)в性诖宋⒅芷趦?nèi)傳輸?shù)膹墓?jié)點的ID信息,所有的從節(jié)點(OC)被動接受這些同步信息。其中,在此微周期內(nèi)傳輸?shù)膹墓?jié)點,接收到主節(jié)點發(fā)送的同步時鐘報文后,發(fā)送同步反饋報文給主節(jié)點;主節(jié)點收到從節(jié)點的同步反饋報文后,計算內(nèi)總線網(wǎng)絡(luò)延時delay,并將delay值發(fā)送給從節(jié)點;從節(jié)點收到delay值后,通過delay值校正時鐘,然后通過delaynew=[delaylast×(n–1)+delay]/n得到新的delay值,并保存新的delay值。而其它從節(jié)點,根據(jù)之前保存的delay值,調(diào)整局部時鐘,使之同步于主時鐘。
delay值的計算如式(1)[8]:
式中,t1為主節(jié)點發(fā)送同步報文中的時間戳(s);t2為從節(jié)點接收同步時鐘報文時的時鐘讀數(shù)(s); t3為從節(jié)點發(fā)送同步反饋報文中的時間戳(s);t4為主節(jié)點接收到同步反饋報文時的時鐘讀數(shù)(s)。
從節(jié)點時鐘t從調(diào)整算式如式(2):
式中:t主為主控節(jié)點發(fā)送的同步報文的時間,即時間戳的值(s); delay為之前所計算的內(nèi)總線網(wǎng)絡(luò)延遲時間(s)。
算法的同步精度主要取決于網(wǎng)絡(luò)延時的準(zhǔn)確度,同步精度用∑(delay–delay)2/n表示。
圖3是上述算法的主從節(jié)點同步示意圖,其中,t1~t4包含在tc內(nèi)。
圖3 主從節(jié)點時鐘同步
同步初始化,主要是實現(xiàn)各個節(jié)點第一次時鐘同步,并統(tǒng)一協(xié)商確定主控節(jié)點的ID?;诒疚牡脑O(shè)計模式,通信板是主控節(jié)點,因此上電時各個節(jié)點統(tǒng)一認(rèn)為通信板為主控節(jié)點,協(xié)商一致后進入正常通信階段。
總線節(jié)點時鐘同步采用主從廣播式。在每個時間片里額外劃分出一段同步等待時間ts,如果某個節(jié)點身份確定為主控節(jié)點時,該節(jié)點的時鐘升為全局時鐘,并將自己時鐘信息廣播給全部的節(jié)點。根據(jù)主控節(jié)點反饋,使得從節(jié)點能采用時鐘補償方式修正時鐘偏差。在時間[t–ts, t+ts]內(nèi),從節(jié)點只要收到主節(jié)點的同步信息則認(rèn)為時間片計時結(jié)束,立即進入下一個時間片計時,同步過程如圖4所示。
圖4 節(jié)點時鐘同步策略
顯然ts取值大小會影響通信數(shù)據(jù)正確性。理論上ts越大,可容忍的時鐘誤差就越大,但通信效率就越低。該參數(shù)主要受各節(jié)點晶振誤差的影響。該時間段在0.3%~0.6%之間能有效地保證各節(jié)點同步,且能容忍丟失兩個節(jié)點情況下同步追蹤。
本文的調(diào)度算法采用基于時間片輪轉(zhuǎn)的調(diào)度機制[9-10],周期性的劃分時間片,建立一張信息調(diào)度表,使數(shù)據(jù)的傳輸都在確定的時間內(nèi)進行。
狀態(tài)信息調(diào)度表的生成主要根據(jù)編號的順序。在初始化階段,為總線中的節(jié)點分配編號,用于排列通信的順序,稱之為相對地址。同時,每個節(jié)點有一個固定的絕對地址,保證可以識別出每個節(jié)點。初始化階段,每個節(jié)點向主控節(jié)點報告自己的絕對地址,主控節(jié)點分配給每個節(jié)點一個相對地址??偩€采用半雙工的方式,同一時刻只允許一個節(jié)點發(fā)送數(shù)據(jù),在設(shè)備剛上電時,多個節(jié)點同時要獲取相對地址,這就需要采用競爭的方式選出一個節(jié)點在總線上與主控節(jié)點進行通信。本文采用二進制指數(shù)退避算法作為競爭機制[11-12]。
然而,使用單純的時間片輪轉(zhuǎn)的調(diào)度算法,總線的靈活性很低。在每個周期中,通信節(jié)點發(fā)送數(shù)據(jù)只在自己的時隙內(nèi),存在緊急事件得不到及時處理的情況。為了滿足更高的應(yīng)變要求,需要增加一種更加靈活的調(diào)度機制。
在時間片輪轉(zhuǎn)的基礎(chǔ)上,用每個時間片的剩余時間來實現(xiàn)隨機事件的傳輸。為了滿足事件信息的發(fā)送,在每個微周期通信完成后,時隙內(nèi)的剩余時間用來查找是否有隨機事件發(fā)生。同時,為了滿足節(jié)點的增加或者退出(熱插拔)的需要,也要預(yù)留一定的時間來處理。
每個微周期時間分為兩部分:(1)正常的狀態(tài)信息發(fā)送,根據(jù)調(diào)度表發(fā)送狀態(tài)信息;(2)事件信息的傳輸或檢測是否有節(jié)點退出或加入,隨機事件信息的傳輸比查找節(jié)點退出或加入的優(yōu)先級高。時隙的分配情況如圖5所示。
在收到事件信息時,將其放入消息隊列。在8 bit標(biāo)志位中,第1 bit代表信息類型,在事件信息隊列中的幀,這位永遠(yuǎn)是1。接下來的7 bit是事件ID。事件ID即可以描述一個事件,事件信息在存入隊列時,采用靜態(tài)優(yōu)先級進行排序。事件信息的ID就代表它的靜態(tài)優(yōu)先級??膳渲檬录蘒D與優(yōu)先級大小的關(guān)系。
圖5 時隙分配情況
要實現(xiàn)熱插拔,即在通信節(jié)點數(shù)量可變的條件下實現(xiàn)時間觸發(fā),合理劃分時間片。在時間片數(shù)量的設(shè)置上,根據(jù)初始化檢測到的節(jié)點的數(shù)量進行時間片劃分;檢測到新加入節(jié)點或是節(jié)點退出的情況,根據(jù)節(jié)點數(shù)量實時更新時間片數(shù)量的劃分。對于查找節(jié)點的退出或是加入,若是在時間片剩余時間內(nèi)不能完成,只要時間片完成,則停止執(zhí)行這項任務(wù),留給下個時間片進行處理。
在系統(tǒng)初始化階段,首先生成時間觸發(fā)調(diào)度表。初始化流程圖如圖6所示。
圖6 調(diào)度初始化流程圖
在系統(tǒng)初始化完成后,正式周期開始。在兩節(jié)點完成同步后,進入到正常通信階段。一個時間片內(nèi),一個節(jié)點發(fā)送和另一個節(jié)點接收數(shù)據(jù)。周期調(diào)度流程圖如圖7所示。
圖7 周期性調(diào)度流程圖
測試基于實驗室已有的硬件以及平臺,根據(jù)實驗室實際情況,安全計算機部分采用實驗室現(xiàn)有設(shè)備,利用PC104模擬通信板,以3個OC為例組成硬件實驗平臺。
安全計算機與通信板之間通過以太網(wǎng)連接通信,為了獲取安全計算機與通信板之間的通信時延,測試以太網(wǎng)的通信平均延遲如圖8所示。
由圖8可知,基于以太網(wǎng)的往返通信延遲在2 ms左右。將安全計算機到通信板之間的通信時延與安全計算機到OC的通信時延分離統(tǒng)計,使得通信子系統(tǒng)的時延分析方法可在不同的網(wǎng)絡(luò)通信實現(xiàn)方案中都適用。
圖8 以太網(wǎng)通信平均時延
分布式OC通信總線中,通信板是連接安全計算機與OC的重要設(shè)備,其決定了安全計算機與多個OC之間的性能。因此需要在通信板連接不同數(shù)量OC的情況下,測試安全計算機到OC的通信延遲。為了測試安全計算機與分布式OC數(shù)量之間的通信延遲關(guān)系,通過在安全計算機端分別與1個、2個、3個OC進行通信測試,獲得的通信時延數(shù)據(jù),利用MATLAB工具整理成繪圖,如圖9、圖10和圖11所示。
圖9 1個OC時通信時延
圖10 2個OC時通信時延
由圖9可知,安全計算機到分布式OC的平均時延在15 ms左右,由3.1的分析可知,以太網(wǎng)時延在2 ms左右,因此,總線的時延在13 ms左右。本文設(shè)計的調(diào)度算法是在連續(xù)2個總線調(diào)度周期內(nèi)完成信息傳輸,視為信息傳輸成功,總線調(diào)度周期是12 ms。13 ms小于24 ms,說明總線在2個調(diào)度周期內(nèi)能完成一次數(shù)據(jù)的收發(fā),表明實際測試結(jié)果符合預(yù)期設(shè)計。同時,圖10、圖11分別代表的是安全計算機跟2個和3個OC通信,而其通信時延相對于只有1個OC的情況而言,只是略有增加(15.1 ms<16.3 ms<17.2 ms<24 ms),說明在總線的一個調(diào)度周期內(nèi),當(dāng)同時在線通信的OC數(shù)量增加時,安全計算機與OC總通信時延的增加主要受安全計算機與通信板之間通信時延的影響。
圖11 3個OC時通信時延
分布式OC與安全計算機之間通過以太網(wǎng)和時間觸發(fā)總線建立通信。時間觸發(fā)通信總線基于時間片輪轉(zhuǎn)調(diào)度,本文設(shè)計的通信總線的每個調(diào)度周期為12 ms,總線上的節(jié)點都能完成一次數(shù)據(jù)收發(fā)。為了驗證該時間規(guī)劃策略在OC連續(xù)發(fā)送多次的通信延遲變化,在安全計算機端連續(xù)多次發(fā)送數(shù)據(jù),測試結(jié)果如圖12所示。
由圖12可知,安全計算機與分布式OC的通信時延,與總線時間調(diào)度周期(本文設(shè)計為12 ms)成正比關(guān)系。由于總線調(diào)度周期內(nèi)(12 ms),每個OC只能進行一次數(shù)據(jù)收發(fā),因此當(dāng)1個OC執(zhí)行n次通信事件時,約在(n×12)ms內(nèi)完成。也說明總線時間調(diào)度周期將直接制約分布式OC通信子系統(tǒng)的通信性能。
圖12 連續(xù)發(fā)送的次數(shù)與通信時延關(guān)系
目標(biāo)控制器作為下一代列車運行控制系統(tǒng)的地面設(shè)備,承擔(dān)著監(jiān)控基礎(chǔ)信號設(shè)備的任務(wù),其安全、可靠、實時的通信對列車行車安全起著重要的作用。本文基于目標(biāo)控制器分布式的特點,設(shè)計了一種基于時間觸發(fā)的通信總線,并對其進行驗證測試,測試結(jié)果表明,能夠滿足通信實時性需求。
[1]郭 進,張亞東,王長海,等. 我國下一代列車控制系統(tǒng)的展望與思考[J]. 鐵道運輸與經(jīng)濟,2016,38(6):23-28.
[2]郭虹利. 列控安全計算機通信控制器的設(shè)計與實現(xiàn)[D]. 北京:北京交通大學(xué), 2015.
[3]胡 瑞. 列控系統(tǒng)地面目標(biāo)控制器的設(shè)計與實現(xiàn)[D]. 北京:北京交通大學(xué),2016.
[4]關(guān) 越. 航空發(fā)動機分布式控制系統(tǒng)通信總線研究[D]. 南京: 南京航空航天大學(xué),2013.
[5]關(guān) 越,潘慕絢. 基于DSP的航空發(fā)動機分布式控制TTCAN總線的節(jié)點設(shè)計[J]. 航空發(fā)動機,2013,39(4):61-66.
[6]Kopetz H, Bauer G. The time-triggered architecture[J].Proceedings of the IEEE, 2003, 91(1): 112-126.
[7]何浩洋,穆建成,馬連川,等. 改進FlexRay總線的設(shè)計與實現(xiàn)[J]. 鐵路計算機應(yīng)用,2013,22(4):55-57.
[8]劉忠東. 全路信息系統(tǒng)時鐘同步的實現(xiàn)[J]. 鐵路計算機應(yīng)用,2004,13(8):3-6.
[9]肖建明,張向利. 一種改進的時間片輪轉(zhuǎn)調(diào)度算法[J]. 計算機應(yīng)用,2005,25(S1):447-448.
[10]陳勁松,程新明,魏 忠. 時間片輪轉(zhuǎn)算法在單片機程序設(shè)計中的應(yīng)用[J]. 電子技術(shù)應(yīng)用,2003,29(3):18-20.
[11]Zhu Y H, Tian X Z, Zheng J. Performance Analysis of the Binary Exponential Backoff Algorithm for IEEE 802.11 Based Mobile Ad Hoc Networks[C]//IEEE International Conference on Communications. IEEE, 2011:1-6.
[12]Pantazi A, Antonakopoulos T. Equilibrium point analysis of the binary exponential backoffalgorithm[J]. Computer Communications, 2001, 24(18):1759-1768.