文/周小錄 劉毅 劉貴平 向南
遠(yuǎn)程數(shù)據(jù)采集功能是跨流域水電站群大壩安全集控系統(tǒng)的基礎(chǔ),主要負(fù)責(zé)連接各水電站大壩的現(xiàn)場(chǎng)NDA測(cè)控模塊,查詢模塊及傳感器工作狀態(tài)、設(shè)置數(shù)據(jù)采集周期、取數(shù)、清空模塊、選點(diǎn)測(cè)量等,實(shí)現(xiàn)基于遠(yuǎn)程集控的數(shù)據(jù)采集和測(cè)量控制功能。
由于國(guó)內(nèi)大壩監(jiān)測(cè)自動(dòng)化系統(tǒng)尚無統(tǒng)一的標(biāo)準(zhǔn)協(xié)議,不同電站、不同廠家的大壩監(jiān)測(cè)自動(dòng)化系統(tǒng)自成體系,如何對(duì)異構(gòu)系統(tǒng)進(jìn)行無縫集成,納入統(tǒng)一的跨流域水電站群大壩安全集控系統(tǒng)中,實(shí)現(xiàn)集中管理、遠(yuǎn)程測(cè)控,成為首先要解決的技術(shù)問題。為此,我們研究開發(fā)了一套通用遠(yuǎn)程采集協(xié)議,集控系統(tǒng)通過該協(xié)議與各水電站監(jiān)測(cè)自動(dòng)化系統(tǒng)通信,傳遞指令,收取數(shù)據(jù)。
大壩安全集控系統(tǒng)中心站監(jiān)測(cè)計(jì)算機(jī)為客戶端,各電廠分站監(jiān)測(cè)自動(dòng)化系統(tǒng)監(jiān)測(cè)計(jì)算機(jī)為服務(wù)端,雙方采用通用標(biāo)準(zhǔn)協(xié)議進(jìn)行數(shù)據(jù)通信,中心向分站發(fā)送命令,分站解碼后交由本地測(cè)控系統(tǒng)執(zhí)行命令,將執(zhí)行結(jié)果反饋至中心站,從而實(shí)現(xiàn)遠(yuǎn)程控制測(cè)量。遠(yuǎn)程采集交互流程如圖1所示。
客戶端向第三方采集單元發(fā)送采集命令前,先向服務(wù)端發(fā)送Socket連接請(qǐng)求,服務(wù)端偵聽到新連接后,會(huì)立即啟動(dòng)合法性驗(yàn)證,服務(wù)端驗(yàn)證結(jié)果成功客戶端可進(jìn)行注冊(cè)操作,否則服務(wù)端斷開連接。
客戶端創(chuàng)建合法連接后,考慮到多客戶端操作時(shí)的并發(fā)安全,在發(fā)送正式通用采集命令之前需要先注冊(cè)到服務(wù)端,只有注冊(cè)成功的客戶端才能夠發(fā)送通用采集命令包。
注冊(cè)成功后,服務(wù)端處于等待客戶端發(fā)送通用采集命令包的狀態(tài)。
表1:消息包一覽表
以測(cè)點(diǎn)選測(cè)命令為例,客戶端創(chuàng)建并發(fā)送CmdSelPMea通用采集命令包到服務(wù)端,服務(wù)端從命令包中解析出包含的采集單元等參數(shù),在服務(wù)端執(zhí)行完成后,將結(jié)果包發(fā)送回客戶端,客戶端根據(jù)協(xié)議解析結(jié)果內(nèi)容后自行處理。
當(dāng)客戶端沒有采集命令需要處理后,需要向服務(wù)端發(fā)出CmdStopUse注銷命令包,以釋放對(duì)服務(wù)端的獨(dú)占,服務(wù)端將再一次處于空閑狀態(tài),等待處理其它合法客戶端連接的注冊(cè)請(qǐng)求。
大壩安全集控系統(tǒng)需要實(shí)現(xiàn)的遠(yuǎn)程測(cè)控功能主要包括現(xiàn)場(chǎng)設(shè)備狀態(tài)查詢功能、現(xiàn)場(chǎng)設(shè)備控制功能、水工建筑物監(jiān)測(cè)數(shù)據(jù)采集功能。功能劃分如圖2所示。其中現(xiàn)場(chǎng)設(shè)備狀態(tài)查詢主要包括測(cè)量模塊時(shí)鐘查詢、各模塊下測(cè)量通道集合查詢、數(shù)據(jù)采集周期查詢、模塊中已有測(cè)次查詢;現(xiàn)場(chǎng)設(shè)備控制主要包括時(shí)鐘同步、設(shè)置數(shù)據(jù)采集周期、設(shè)置通道集合、模塊狀態(tài)自檢、清空模塊中已有測(cè)值等功能;遠(yuǎn)程數(shù)據(jù)采集主要包括測(cè)點(diǎn)單檢、選擇一批測(cè)點(diǎn)測(cè)量并返回測(cè)值、取定時(shí)測(cè)量值等。
由于各采集信息系統(tǒng)之間開發(fā)所使用的平臺(tái)存較大差異,因此遠(yuǎn)程采集服務(wù)采用基于傳輸控制協(xié)議 (TCP)的 Socket通訊來完成。
通??刂泼詈头祷?cái)?shù)據(jù)大都采用二進(jìn)制編碼方式(如電力系統(tǒng)中常采用104協(xié)議進(jìn)行編碼),但這些編碼在表達(dá)一些純數(shù)字比較方便,在大壩監(jiān)測(cè)遠(yuǎn)程采集中,各開發(fā)商含有一些很難標(biāo)準(zhǔn)化的信息,比如測(cè)點(diǎn)單檢結(jié)果、測(cè)量裝置自檢信息、系統(tǒng)中出現(xiàn)的錯(cuò)誤,很難把這些信息標(biāo)準(zhǔn)化為標(biāo)量值,另外還有測(cè)點(diǎn)設(shè)計(jì)代號(hào)、測(cè)量裝置名稱和測(cè)點(diǎn)配置信息中還存在漢字的情況,二進(jìn)制編碼很難處理這種信息。
通用遠(yuǎn)程采集協(xié)議采用XML進(jìn)行數(shù)據(jù)描述,它采用字符串形式編寫,是一種簡(jiǎn)單、與平臺(tái)無關(guān)并被廣泛采用的標(biāo)準(zhǔn),便于其他系統(tǒng)開發(fā)和使用,同時(shí)由于XML能表達(dá)任何類型的數(shù)據(jù),非常易于在將來進(jìn)行擴(kuò)展和修改。
考慮到信息中可能包含漢字(比如測(cè)點(diǎn)設(shè)計(jì)代號(hào)、采集裝置狀態(tài)和故障原因等)編碼需要使用unicode,另外考慮Windows 操作系統(tǒng)中MSXML組件默認(rèn)按UTF-8來編碼,所以字符編碼統(tǒng)一采用UTF-8。
發(fā)送方編碼時(shí)將一組 UTF-8 字符串轉(zhuǎn)換為一個(gè)字節(jié)序列,接收方解碼時(shí)是將一個(gè)編碼字節(jié)序列還原為 UTF-8 字符串,并根據(jù)協(xié)議消息包的XML架構(gòu)解析出相應(yīng)的消息。
圖1:遠(yuǎn)程采集交互流程框架
圖2:遠(yuǎn)程控制采集功能示意圖
系統(tǒng)中的客戶端和服務(wù)端是通過消息包的交互來實(shí)現(xiàn)遠(yuǎn)采集程控制的,協(xié)議中的消息包的格式需要由XML架構(gòu)來規(guī)范。通用遠(yuǎn)程采集協(xié)議中主要消息包如表1所示。
該架構(gòu)嚴(yán)格定義了各消息包的信息標(biāo)準(zhǔn),發(fā)送和接收方根據(jù)該架構(gòu)對(duì)消息包進(jìn)行編碼、解碼,保證雙方對(duì)消息包的正確理解。
下面給出了消息包實(shí)例。
通用遠(yuǎn)程采集協(xié)議研究開發(fā)完成后,基于該協(xié)議,開發(fā)了跨流域水電站群大壩安全集控系統(tǒng)的遠(yuǎn)程采集軟件,各監(jiān)測(cè)自動(dòng)化系統(tǒng)廠家也按照協(xié)議標(biāo)準(zhǔn)開發(fā)了對(duì)應(yīng)的遠(yuǎn)程采集服務(wù)接口。經(jīng)過測(cè)試,實(shí)現(xiàn)了預(yù)想的功能,共12個(gè)水電站的大壩監(jiān)測(cè)自動(dòng)化系統(tǒng)全部接入大壩安全集控系統(tǒng),進(jìn)行集中控制。在長(zhǎng)沙中心站實(shí)現(xiàn)了遠(yuǎn)程測(cè)量和設(shè)備狀態(tài)監(jiān)控。
圖3:遠(yuǎn)程數(shù)據(jù)采集實(shí)際應(yīng)用示意圖
“通用遠(yuǎn)程采集協(xié)議”是一種開放式協(xié)議,通過協(xié)議可無縫集成第三方廠家的大壩監(jiān)測(cè)自動(dòng)化系統(tǒng)。協(xié)議中的數(shù)據(jù)采用xml編解碼技術(shù),解決了國(guó)內(nèi)大壩監(jiān)測(cè)自動(dòng)化系統(tǒng)的采集控制信息難以統(tǒng)一描述的困擾,為大壩監(jiān)測(cè)自動(dòng)化采集系統(tǒng)異構(gòu)控制提供了兼容的、低實(shí)現(xiàn)成本的解決方案,為流域大壩安全監(jiān)測(cè)綜合遠(yuǎn)程控制系統(tǒng)開發(fā)提供了一個(gè)可以借鑒的先例。