動環(huán)監(jiān)控系統(tǒng)中B接口的實現
作者 陳圓1 粟欣2 1.重慶郵電大學 通信與信息工程學院(重慶 400065)2.清華大學 無線與移動通信技術研究中心(北京 100084)
本文引用地址:http://www.ex-cimer.com/article/201707/362275.htm陳圓(1991-),男,碩士,研究方向:無線專網;粟欣,男,研究員,研究方向:移動通信、寬帶無線接入。
摘要:基站動力環(huán)境(動環(huán))監(jiān)控系統(tǒng)中的B接口協(xié)議,規(guī)范了監(jiān)控中心與現場監(jiān)控單元互聯的數據傳輸方式。文章在研究B接口報文協(xié)議的基礎上,設計了一種使用 gSOAP工具的Web Service框架。在Web Service框架下,文章給出了用于基站動環(huán)監(jiān)控系統(tǒng)中B接口報文協(xié)議的編程實現過程和測試方法。測試結果表明,使用gSOAP工具能夠簡化B接口報文協(xié)議實現的方式,符合監(jiān)控中心與現場監(jiān)控單元通信規(guī)范。
引言
目前基站動環(huán)監(jiān)控系統(tǒng)的架構分為三層:接入層、傳輸層和業(yè)務層[1-4]。接入層包含現場監(jiān)控單元(Field Supervision Unit, FSU)和監(jiān)控對象(Supervision Object, SO),SO指的是被監(jiān)控的電源、空調等設備及環(huán)境量等。傳輸層包含傳輸節(jié)點設備和傳輸網絡設備等。業(yè)務層包含集中監(jiān)控中心(Supervision Center, SC)。
為規(guī)范基站動環(huán)監(jiān)控系統(tǒng)的建設標準,《中國鐵塔動環(huán)監(jiān)控系統(tǒng)統(tǒng)一互聯B接口技術規(guī)范》明確了動環(huán)監(jiān)控系統(tǒng)互聯B接口互聯規(guī)范、B接口定義和報文協(xié)議[5]。FSU主要的功能是與基站監(jiān)控現場的對象連接,監(jiān)控設備的運行狀態(tài)、控制設備的運行,采集現場的環(huán)境參數。采集到數據之后,將數據傳送到SC。當出現監(jiān)控異常時,FSU產生告警事件并上報到SC,SC處理告警后反饋控制命令至FSU,FSU通過控制命令控制智能設備。圖1表示了SC與FSU之間的B接口報文協(xié)議定義報文類型和數據流方向。
本文介紹了B接口報文協(xié)議的內容,包括報文原則、WSDL定義、基本報文格式的定義;然后在研究B接口報文協(xié)議的基礎上,引出一種實現B接口報文協(xié)議的開源工具gSOAP,描述了它的原理和使用方法;接著設計了一種基于 gSOAP開源工具的Web Service框架[6-7];最后在提出的框架下,本文給出了用于基站動環(huán)監(jiān)控系統(tǒng)中B接口報文協(xié)議的編程實現過程和測試方法。測試結果表明,使用gSOAP工具能夠簡化B接口報文協(xié)議實現的方式,符合監(jiān)控中心與現場監(jiān)控單元通信規(guī)范。
1 B接口報文協(xié)議
B接口報文協(xié)議定義了報文的原則,即SC與FSU之間的接口是基于Web Service技術的,消息協(xié)議采用擴展標記語言(eXtensible Markup Language, XML)格式。Web Service是為支持通過網絡的可互操作的機器到機器交互的軟件系統(tǒng),可以使用基于HTTP的簡單對象接入協(xié)議 (Simple Object Access Protocol, SOAP)進行描述[6]。另外,B接口報文協(xié)議中提供了SC和FSU的網絡服務描述語言(Web Services Description Language, WSDL)文件:SCService.wsdl和FSUService.wsdl。這兩個文件主要是用來描述SC和FSU的Web服務交互的消息格式、數據類型、操作、協(xié)議綁定和服務地址。
B接口是基于Web Service技術的,所以采用XML格式,B接口基本的報文格式定義如表1所示?;镜膱笪母袷焦灿袃煞N類型,分別是請求報文和響應報文。每種類型的報文都包含1個一級節(jié)點和2個二級節(jié)點,例如請求報文,一級節(jié)點是Request,二級節(jié)點PK_Type包含請求報文的類型,二級節(jié)點Info包含請求報文的詳細內容。同樣,響應報文的一級節(jié)點是Response,二級節(jié)點PK_Type包含響應報文的類型,二級節(jié)點Info包含響應報文的詳細內容。
2 接口報文協(xié)議實現
2.1 gSOAP
目前Web Service主要通過基于C/C++和JAVA兩種編程語言來實現,使用提供的工具包來定制和發(fā)布Web Service。利用gSOAP自動編碼工具實現Web Service應用程序接口,可以簡化實現客戶端和服務器端的編碼工作。gSOAP是以HTTP協(xié)議為基礎的通信協(xié)議,以XML文件形式請求遠程服務,再以XML文件的形式返回執(zhí)行結果。Web Service中的任何一項服務都必須實現一系列遵守SOAP協(xié)議的遠程過程調用函數,以公開Web上的服務供遠程端調用,這是完全自動完成的。gSOAP服務函數接口定義是用一個標準C/C++頭文件說明的,服務也可以用WSDL文檔定義。WSDL文檔與gSOAP中的WSDL輸入被預處理以生成一個頭文件,這個頭文件包括服務函數的簽名和其他額外的數據類型聲明。頭文件由gSOAP編譯器編譯后,生成遠程調用服務的框架和數據類型序列化代碼,這些代碼編譯后能鏈接到服務應用程序,在數據分組網上作為Web Service。
gSOAP工具箱提供兩個重要的工具:wsdl2h和soapcpp2。gSOAP的工作流程如圖2所示,詳細地說明了客戶端和服務端代碼生成過程的兩個步驟:WSDL文件作為wsdl2h的輸入,產生接口文件;將接口文件與導入的協(xié)議聲明和自定義序列化程序一起輸入到soapcpp2工具。soapcpp2的默認選項是輸出soapClient.cpp和soapServer.cpp,基于這兩個文件分別編寫客戶端和服務器的代碼。
2.2 基于Web Service的B接口程序框架
B接口協(xié)議規(guī)范中說明了SC和FSU接入雙方的要求。當SC輪詢FSU獲取數據:溫濕度、電壓、電流、電量、頻率、開關狀態(tài)等時,FSU為服務端,SC為客戶端。當FSU主動上報設備事件數據:告警、狀態(tài)切換等時,FSU為客戶端,SC為服務端。因此,SC和FSU都需要提供Web Service的客戶端和服務端功能。如圖3所示,本文提出一種基于Web Service的B接口程序框架。SC端的fsuSvcClient與FSU端的fsuSvcServer互聯,完成SC輪詢及FSU獲取數據的功能,定義為FSUService。FSU端的scSvcClient與SC端的scSvcServer互聯,完成FSU主動上報設備事件數據的功能,定義為SCService。fsuSvcClient和 fsuSvcServer作為一個FSUService的客戶端和服務端,scSvcClient與scSvcServer作為一個SCService的客戶端和服務端。這兩個Web Service是相互獨立運行的。
2.3 B接口報文協(xié)議實現
下面將使用gSOAP工具包來實現基站動環(huán)監(jiān)控系統(tǒng)中的B接口報文協(xié)議。B接口報文協(xié)議中提供了SC和FSU的WSDL文件:SCService.wsdl和FSUService.wsdl。下面以實現SC端和FSU端的SCService為例,FSUService同理。首先,在Linux終端上通過使用gSOAP開發(fā)包中wsdl2h工具編譯SCService.wsdl文件,其命令行為:
wsdl2h -o SCService.h SCService.wsdl
這樣就是生成構建Web服務客戶端和服務端所需的接口文件SCService.h。
接著使用soapcpp2生成C++文件形式的SOAP框架,具體命令行為:
soapcpp2 SCService.h
命令運行完成后會得到soapServer.cpp和soapClient.cpp。soapServer.cpp中主要是soap_serve_ns1_invoke()函數的定義,soapClient.cpp中則是soap_call_ns1_invoke()函數的定義。這兩個函數形成了一對遠程調用的方法,即在客戶端中調用了soap_call_ns1_invoke()函數,把數據發(fā)送至服務端。那么服務端中則會執(zhí)行soap_serve_ns1_invoke()函數,接收由客戶端發(fā)送過來的數據,完成數據處理后,把結果返回給soap_serve_ns1_invoke()函數返回值中。這樣客戶端和服務端就完成了一次請求/響應的通信過程。需要指出的是,SCService.wsdl文件中描述了客戶端和服務端ns1_invoke函數。
接下來就是在客戶端中待發(fā)送XML數據生成和服務端接收到XML數據后的解析處理和返回給客戶端的響應XML數據生成。XML數據的生成和解析使用的是TinyXML2庫來實現的。XML數據的生成與解析不作為B接口報文協(xié)議的實現展開描述。
3 測試與分析
以SCService中的用戶注冊登陸過程來說明一下B接口報文協(xié)議的測試方法。如圖4所示,在Linux環(huán)境下,使用左側的終端代表客戶端,右側的終端代表服務端。首先在服務端中運行scSvcServer服務,8080為端口參數,然后在客戶端中運行scSvcClient,101為用戶注冊登陸類型參數。客戶端把準備好的LOGIN數據以XML文件的形式發(fā)送至服務端,例如終端顯示[LOGIN]FSU->SC。服務端處理LOGIN數據,顯示設備注冊成功后,生成LOGIN_ACK XML文件數據返回給客戶端,例如終端顯示的[LOGIN_ACK]SC->FSU。
從終端顯示的請求報文和響應報文的內容可以看出,客戶端與服務端交互的XML數據是符合B接口基本的報文格式定義的。每種類型的報文都包含1個一級節(jié)點和2個二級節(jié)點,如果是請求報文,則一級節(jié)點是Request,二級節(jié)點PK_Type包含請求報文的類型,二級節(jié)點Info包含請求報文的詳細內容。同樣,響應報文的一級節(jié)點是Response,二級節(jié)點PK_Type包含響應報文的類型,二級節(jié)點Info包含響應報文的詳細內容。
4 結論
本文設計的一種基于gSOAP開源工具的Web Service框架,用于基站動環(huán)監(jiān)控系統(tǒng)中B接口報文協(xié)議的編程實現,能夠減少編程實現的編碼工作量。測試結果表明,使用gSOAP工具能夠簡化B接口報文協(xié)議實現的方式,符合監(jiān)控中心與現場監(jiān)控單元通信規(guī)范。但是,B接口協(xié)議中還包含了數據庫協(xié)議等規(guī)范說明,需要在目前的設計上完善B接口的功能。
參考文獻:
[1]崔恒源,黎福海,姚雪芬.移動通信基站動力環(huán)境監(jiān)控系統(tǒng)設計及實現[J].計算機測量與控制,2009,17(10): 1955-1957.
[2]高翠群.動力環(huán)境監(jiān)控系統(tǒng)的消息傳輸協(xié)議設計研究[J].軟件工程師, 2010(7):53-54.
[3]何世健.電信機房遠程監(jiān)控系統(tǒng)的設計與軟件實現[D].西南交通大學,2013.
[4]黃凱漩.基于B/S模式遠程監(jiān)控系統(tǒng)的研究與實現[D].南京大學,2011.
[5]C TOWER.中國鐵塔動環(huán)監(jiān)控系統(tǒng)統(tǒng)一互聯B接口技術規(guī)范(試行)V1.0[S].2014.
[6]ENGELEN R A V,GALLIVAN K A.The gSOAP Toolkit for Web Services and Peer-to-Peer Computing Networks; proceedings of the Ieee/acm International Symposium on CLUSTER Computing and the Grid, F, 2002[C].
[7]VAN ENGELEN R, GUPTA G, PANT S.Developing Web services for C and C++[J].IEEE Internet Computing,2003,7(2):53-61.
本文來源于《電子產品世界》2017年第8期第49頁,歡迎您寫論文時引用,并注明出處。
評論