陳海歡
(西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,成都 611756)
互聯(lián)互通是當(dāng)前城市軌道交通的發(fā)展方向,對(duì)提高運(yùn)輸效率、改善乘車(chē)環(huán)境、縮短出行時(shí)間起著重要的作用。但因各信號(hào)廠家采用的信號(hào)系統(tǒng)總體架構(gòu)、通信協(xié)議、接口標(biāo)準(zhǔn)存在一定差異,需要制定統(tǒng)一的標(biāo)準(zhǔn)和接口規(guī)范,以實(shí)現(xiàn)車(chē)輛及不同地域地面設(shè)備互通互換,進(jìn)而實(shí)現(xiàn)列車(chē)跨線(xiàn)聯(lián)通聯(lián)運(yùn),達(dá)到網(wǎng)絡(luò)化運(yùn)營(yíng)目的。OPC UA是OPC基金會(huì)為過(guò)程自動(dòng)化及其它領(lǐng)域數(shù)據(jù)通信提供的新標(biāo)準(zhǔn),旨在為企業(yè)制造模型創(chuàng)建統(tǒng)一對(duì)象和架構(gòu)定義[1],在工業(yè)制造領(lǐng)域有著大量應(yīng)用?,F(xiàn)階段,國(guó)內(nèi)對(duì)信號(hào)系統(tǒng)互聯(lián)互通研究與實(shí)施還處于起步階段,對(duì)OPC UA在城軌信號(hào)系統(tǒng)互聯(lián)互通中的應(yīng)用研究極少,本文對(duì)其在城市軌道交通信號(hào)系統(tǒng)互聯(lián)互通中的應(yīng)用展開(kāi)研究。
OPC(OLE for Process Control)通信標(biāo)準(zhǔn)的核心是互通性和標(biāo)準(zhǔn)化?;谖④浀腃OM/DCOM技術(shù),采用服務(wù)器/客戶(hù)端模式,定義了一些用于數(shù)據(jù)訪問(wèn)、事件和報(bào)警處理、歷史數(shù)據(jù)訪問(wèn)的接口[2],在控制級(jí)別很好地解決了硬件設(shè)備間互通性的問(wèn)題。但隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,傳統(tǒng)OPC技術(shù)不夠靈活、平臺(tái)局限性等問(wèn)題逐步突顯,OPC基金會(huì)提出了最新的數(shù)據(jù)通信統(tǒng)一方法——OPC統(tǒng)一架構(gòu)(OPC UA,OPC Unified Architecture)。
OPC UA集成現(xiàn)有的OPC規(guī)范,包括OPC實(shí)時(shí)數(shù)據(jù)訪問(wèn)規(guī)范OPC DA、OPC報(bào)警事件訪問(wèn)規(guī)范OPC A&E、OPC歷史數(shù)據(jù)訪問(wèn)規(guī)范OPC HAD、命令、復(fù)雜數(shù)據(jù)和對(duì)象類(lèi)型等,采用統(tǒng)一的地址空間和服務(wù)模型,使得同一系統(tǒng)能被統(tǒng)一訪問(wèn);通過(guò)經(jīng)管理員開(kāi)放的端口進(jìn)行通信,提升傳輸性能;支持多種消息編碼格式和多種傳輸協(xié)議[3],如TCP和HTTP協(xié)議;自糾正特性提高其可靠性,標(biāo)準(zhǔn)冗余模型也使得來(lái)自不同廠商的軟件應(yīng)用可以同時(shí)被采納并彼此兼容;底層通信通過(guò)加密算法,保證消息完整性;跨平臺(tái)技術(shù)使得數(shù)據(jù)能靈活交換。
典型的城市軌道交通信號(hào)系統(tǒng)由列車(chē)自動(dòng)監(jiān)控(ATS)、聯(lián)鎖、區(qū)域控制器(ZC)、車(chē)載列車(chē)自動(dòng)防護(hù)/列車(chē)自動(dòng)運(yùn)行(ATP/ATO)以及數(shù)據(jù)通信系統(tǒng)(DCS,Data Communication System)等組成。ATS主要實(shí)現(xiàn)線(xiàn)路監(jiān)督、列車(chē)調(diào)度、時(shí)刻表管理等監(jiān)督管理功能;聯(lián)鎖負(fù)責(zé)線(xiàn)路設(shè)備(例如,信號(hào)機(jī)、區(qū)段、道岔、屏蔽門(mén)、防淹門(mén)、緊急停車(chē)按鈕等)狀態(tài)的采集及依據(jù)需要對(duì)軌旁設(shè)備進(jìn)行控制;ZC主要完成列車(chē)的跟蹤、移動(dòng)授權(quán)計(jì)算等;車(chē)載ATP/ATO實(shí)現(xiàn)對(duì)列車(chē)的控制,防止列車(chē)超速、冒進(jìn)、倒溜、未停準(zhǔn)等非安全因素。它們之間通過(guò)DCS連接起來(lái),實(shí)現(xiàn)相互之間的信息傳遞及控制。體系架構(gòu)如圖1所示[4],簡(jiǎn)化后得到如圖2所示的系統(tǒng)框架。
圖1 互聯(lián)互通信號(hào)系統(tǒng)總體架構(gòu)示意圖
圖2 互聯(lián)互通信號(hào)系統(tǒng)簡(jiǎn)化架構(gòu)示意圖
車(chē)站ATS通過(guò)gateway實(shí)現(xiàn)與相關(guān)設(shè)備(如ZC、本地控制器(LC,Local Controller)、車(chē)載控制器(CC,Carborne Controller))之間的信息交互。
通過(guò)以上分析可知,gateway作為信息交互的主要設(shè)備,是實(shí)現(xiàn)城市軌道交通信號(hào)系統(tǒng)互聯(lián)互通的關(guān)鍵。但因各家信號(hào)公司采取的通信協(xié)議存在一定的差異,因此,需將它們進(jìn)行轉(zhuǎn)換才能相互訪問(wèn),gateway正好能解決這個(gè)問(wèn)題??尚械慕鉀Q方案是:建立滿(mǎn)足OPC UA協(xié)議的UA Server,gateway通過(guò)TCP異步通信,作為server發(fā)送信息給UA Server,同時(shí),外部廠商應(yīng)是全滿(mǎn)足OPC UA的客戶(hù)端,通過(guò)訪問(wèn)UA Server即可實(shí)現(xiàn)信息互傳。其架構(gòu)如圖3所示。
圖3 采用OPC UA的信號(hào)系統(tǒng)架構(gòu)示意圖
ATS主要功能包括列車(chē)運(yùn)行情況的集中監(jiān)視、自動(dòng)排列進(jìn)路、自動(dòng)列車(chē)運(yùn)行調(diào)整、自動(dòng)生成時(shí)刻表、自動(dòng)記錄列車(chē)運(yùn)行軌跡、自動(dòng)進(jìn)行運(yùn)行數(shù)據(jù)統(tǒng)計(jì)及報(bào)表生成、自動(dòng)檢測(cè)設(shè)備運(yùn)行狀態(tài)等,輔助調(diào)度人員對(duì)全線(xiàn)列車(chē)進(jìn)行管理。
對(duì)于ATS子系統(tǒng)的監(jiān)測(cè)內(nèi)容,通過(guò)TCP方式傳遞給UA Server,此時(shí),可將ATS子系統(tǒng)當(dāng)作是server進(jìn)行處理,而UA Server此時(shí)當(dāng)作是client進(jìn)行處理。ATS監(jiān)控的內(nèi)容主要包括有:聯(lián)鎖信息、信號(hào)機(jī)信息、區(qū)段信息、道岔信息、屏蔽門(mén)信息、站間閉塞信息、緊急停車(chē)按鈕狀態(tài)信息、命令信息等。對(duì)于消息傳遞實(shí)體,定義消息類(lèi)CMessageEntity。
class CMessageEntity
{
Public CTrackState TrackState;//軌道占用
狀態(tài)
Public CRouteState RouteState;//進(jìn)路狀態(tài)
Public CVehicleState VehicleState;//列車(chē)
運(yùn)行狀態(tài)
Public CSignalState SignalState; //信號(hào)機(jī)
狀態(tài)
Public CTurnoutState TurnoutState; //道岔
狀態(tài)
Public CPlatformDoorState PlatformDoor-
Sate;//屏蔽門(mén)狀態(tài)
Public CTrainIdentificationNum Train-
Identi-ficationNum;//列車(chē)識(shí)別號(hào)
public CIsDeflected IsDeflected;//是否與實(shí)
際偏離
public CDegradationProcessing Degra
dation-Processing;//降級(jí)處理信息
public CToPassengerInfo ToPassenger-
Info;//給旅客提供的信息
}
其中,CTrackState、CRouteState、CVehicleState、CSignalState、CTurnoutState、CPlatformDoorState、CTrainIdentificationNum、CIsDeflected、CDegradationProcessing、CToPassen-gerInfo均為在外部定義的類(lèi),包含各自的信息,例如,ID、顏色、位置、狀態(tài)等信息,CTrainIdentificationNum(列車(chē)識(shí)別號(hào))中應(yīng)包含列車(chē)服務(wù)號(hào)、列車(chē)目的地號(hào)、列車(chē)車(chē)體號(hào)等信息。
class CTrainIdentificationNum
{
public long serviceNum { get; set; }//列車(chē)服
務(wù)號(hào)
public long destinationNum { get; set; }//列
車(chē)目的地號(hào)
public long trainBodyNum { get; set; }//列
車(chē)車(chē)體號(hào)
}
消息傳遞到UA Server后,滿(mǎn)足OPC UA的client可以對(duì)其進(jìn)行訪問(wèn)。此時(shí),UA Server作為滿(mǎn)足OPC UA協(xié)議的服務(wù)器,而滿(mǎn)足OPC UA的外部廠商作為客戶(hù)端對(duì)其進(jìn)行訪問(wèn)、接入控制和安全校驗(yàn)等操作。
基于.NET Framework 4.5.2,在VS 2015平臺(tái)上,采用C#編程語(yǔ)言,對(duì)OPC UA客戶(hù)端訪問(wèn)OPC UA服務(wù)器過(guò)程進(jìn)行模擬測(cè)試研究。
OPC UA客戶(hù)端與服務(wù)器之間的通信應(yīng)滿(mǎn)足較高的安全等級(jí),以保證信息可靠傳遞,從而確保機(jī)車(chē)車(chē)輛能安全可靠運(yùn)行。在實(shí)施過(guò)程中,需要添加證書(shū),確保信息來(lái)自可靠服務(wù)器并且在網(wǎng)絡(luò)傳輸過(guò)程中未被截取或偷聽(tīng)。
利用VS2015中X.509證書(shū)制作工具,在“VS2015開(kāi)發(fā)人員命令提示”中輸入“makecert -r -pe -n“CN=MyServer” -ss My -sky exchange”,制作一個(gè)“CN=MyServer”的服務(wù)器證書(shū),利用IE證書(shū)導(dǎo)出工具,導(dǎo)出證書(shū)文件“certificate.cer”,并添加給客戶(hù)端。采用socket實(shí)現(xiàn)客戶(hù)端與服務(wù)器通信,利用SSL實(shí)現(xiàn)客戶(hù)端對(duì)服務(wù)器單向認(rèn)證,以字節(jié)流的方式實(shí)現(xiàn)信息交互。
客戶(hù)端通過(guò)Client Hello消息將其支持的(SSL,Secure Sockets Layer,安全套接層)版本、加密算法、密鑰交換算法、MAC算法等信息發(fā)送給SSL服務(wù)器;服務(wù)器后通過(guò)Server Hello消息通知客戶(hù)端;同時(shí),服務(wù)器將攜帶自己的公鑰信息的數(shù)字證書(shū)通過(guò)Certificate消息發(fā)送給客戶(hù)端;后發(fā)送Server Hello Done消息,通知客戶(hù)端版本和加密套件協(xié)商結(jié)束,開(kāi)始進(jìn)行密鑰交換;客戶(hù)端驗(yàn)證證書(shū)合法后,利用證書(shū)中的公鑰加密SSL客戶(hù)端隨機(jī)生成的premaster secret,通過(guò)Client Key Exchange消息發(fā)送給服務(wù)器;客戶(hù)端再發(fā)送Change Cipher Spec消息,通知服務(wù)器后續(xù)報(bào)文將以協(xié)商好的密鑰和加密套件進(jìn)行加密;客戶(hù)端計(jì)算已交互握手信息的Hash值,利用協(xié)商好的密鑰和加密套件進(jìn)行加密,通過(guò)Finished消息發(fā)送給服務(wù)器,服務(wù)器同樣對(duì)交互的握手信息進(jìn)行Hash值計(jì)算,并與客戶(hù)端傳過(guò)來(lái)的Hash值進(jìn)行比較,若二者相同,則證明密鑰和加密套件協(xié)商成功;同樣,服務(wù)器發(fā)送Change Cipher Spec消息,通知客戶(hù)端后續(xù)報(bào)文將采用協(xié)商好的密鑰和加密套件進(jìn)行加密;服務(wù)器再將交互的握手信息的Hash值,利用協(xié)商好的密鑰和加密套件進(jìn)行處理,并通過(guò)Finished消息傳遞給客戶(hù)端,客戶(hù)端將其與自身計(jì)算結(jié)果進(jìn)行比較,若二者相同,則證明密鑰和加密套件協(xié)商成功,雙方能進(jìn)行正常安全通信[5]。其消息傳遞過(guò)程如圖4所示。
圖4 只認(rèn)證服務(wù)器的SSL握手過(guò)程
仿真表明,滿(mǎn)足OPC UA的客戶(hù)端和服務(wù)器能穩(wěn)定連接并實(shí)現(xiàn)信息互傳,服務(wù)器端仿真結(jié)果如圖5所示。顯示結(jié)果包含有SSlStream的批量加密算法、算法強(qiáng)度、身份驗(yàn)證代碼(MAC)算法、密鑰交換算法等信息。
圖5 server端仿真結(jié)果
客戶(hù)端能穩(wěn)定連接服務(wù)器并接收從服務(wù)器傳遞來(lái)的消息,仿真結(jié)果如圖6所示。
圖6 客戶(hù)端仿真結(jié)果
信息互傳是實(shí)現(xiàn)城市軌道交通信號(hào)系統(tǒng)互聯(lián)互通的基礎(chǔ),以保證在設(shè)備互換、跨線(xiàn)運(yùn)行過(guò)程中,車(chē)輛能可靠運(yùn)行。OPC UA在滿(mǎn)足可靠通信和身份驗(yàn)證的前提下,將所需傳遞的信息以TCP方式在客戶(hù)端和服務(wù)器之間進(jìn)行交互,表現(xiàn)良好。本次仿真客戶(hù)端和服務(wù)器均在Windows平臺(tái)上進(jìn)行部署,并且在之前的測(cè)試中,OPC UA在Linux和Windows通信中同樣表現(xiàn)良好,證明了OPC UA在城市軌道交通信號(hào)系統(tǒng)互聯(lián)互通中能有較好的應(yīng)用。