文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2015.07.009
中文引用格式: 于洪波,劉鴻飛,方麗英,等. 基于Web服務(wù)的物聯(lián)接入系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2015,41(7):33-36,43.
英文引用格式: Yu Hongbo,Liu Hongfei,F(xiàn)ang Liying,et al. Design of Internet of Things access system based on Web services[J].Application of Electronic Technique,2015,41(7):33-36,43.
0 引言
多元感知設(shè)備隨傳感器技術(shù)的發(fā)展逐漸推動物聯(lián)網(wǎng)(Internet of Things,IoT)產(chǎn)業(yè)的發(fā)展,并已正式被列為國家五大新興戰(zhàn)略產(chǎn)業(yè)之一。物聯(lián)網(wǎng)是嵌入式系統(tǒng)、網(wǎng)絡(luò)和控制系統(tǒng)的集成,由計算系統(tǒng)和執(zhí)行器的嵌入式系統(tǒng)等異構(gòu)系統(tǒng)組成。隨著非標(biāo)準(zhǔn)化感知設(shè)備在物聯(lián)網(wǎng)應(yīng)用中的大規(guī)模接入,多元通信協(xié)議、異構(gòu)設(shè)備信息、復(fù)雜節(jié)點(diǎn)管理等異構(gòu)問題成為物聯(lián)網(wǎng)應(yīng)用中的挑戰(zhàn),應(yīng)用開發(fā)者不僅需要關(guān)注用戶的需求業(yè)務(wù),也需要以模型化方式處理底層的基礎(chǔ)化數(shù)據(jù)[1-2]。國內(nèi)外對這種碎片化異構(gòu)接入問題的研究主要側(cè)重于針對具體的物聯(lián)網(wǎng)相關(guān)技術(shù)來進(jìn)行底層數(shù)據(jù)采集與融合,如采用中間件技術(shù)利用融合器消除針對ZigBee和RFID的異構(gòu)接入問題[3]。但是目前針對平臺化業(yè)務(wù)擴(kuò)展以及融合互聯(lián)網(wǎng)業(yè)務(wù)的物聯(lián)接入系統(tǒng)的相關(guān)研究較少,也沒有統(tǒng)一的碎片化異構(gòu)處理模型。本文提出一種基于Web服務(wù)的物聯(lián)接入系統(tǒng)的設(shè)計模式,該系統(tǒng)在物聯(lián)網(wǎng)技術(shù)的客戶端服務(wù)器(Client/Server,C/S)架構(gòu)的基礎(chǔ)上,將單一化基礎(chǔ)操作業(yè)務(wù)進(jìn)行面向服務(wù)架構(gòu)(Service-Oriented Architecture,SOA)建模,再利用Web技術(shù)進(jìn)行模型化服務(wù)的實現(xiàn)。整個系統(tǒng)封裝整套感知設(shè)備物聯(lián)接入流程與基礎(chǔ)數(shù)據(jù)處理,實現(xiàn)應(yīng)用業(yè)務(wù)與感知設(shè)備之間的無縫交互。
1 物聯(lián)接入系統(tǒng)模型
物聯(lián)網(wǎng)系統(tǒng)為三層架構(gòu),包括感知層、網(wǎng)絡(luò)層和應(yīng)用層[4],本文基于Intel ATOM處理器和Fedora操作系統(tǒng),以SOA模式,將程序運(yùn)行流程建模為若干接入服務(wù)模型。物聯(lián)接入系統(tǒng)將上下位機(jī)封裝在同一系統(tǒng)內(nèi)部,將三層架構(gòu)業(yè)務(wù)貫通,通過USB、RS485等硬件接口及其協(xié)議直接獲取感知層的物理實體數(shù)據(jù),通過核心處理模塊完成碎片化異構(gòu)數(shù)據(jù)的解析,通過Web應(yīng)用接口聯(lián)通具體信息化業(yè)務(wù)。
1.1 面向服務(wù)模型
傳統(tǒng)物聯(lián)網(wǎng)的接入系統(tǒng)針對單一業(yè)務(wù)的一種或一類設(shè)備進(jìn)行針對性較強(qiáng)的閉環(huán)控制,底層控制業(yè)務(wù)細(xì)節(jié)描述較多,耦合度較高,不利于擴(kuò)展應(yīng)用。SOA架構(gòu)的引入可以將程序流程抽象為服務(wù)模型,并實現(xiàn)物聯(lián)網(wǎng)業(yè)務(wù)松耦合,將具體的閉環(huán)控制流程轉(zhuǎn)換為粗粒度服務(wù)邏輯,便于服務(wù)模型以組件形式進(jìn)行代碼實現(xiàn)與部署[5]。引入SOA的物聯(lián)接入系統(tǒng)模型如圖1所示,模型擴(kuò)寬單一業(yè)務(wù)的閉環(huán)控制系統(tǒng)為一種直接基于Web端服務(wù)配置的接入設(shè)備管控平臺,在實際物聯(lián)接入系統(tǒng)中將通過HTTP協(xié)議請求的人機(jī)交互界面稱為上位機(jī),并作為服務(wù)提供者;將通過操控線程實際管理接入設(shè)備的接入控制器稱為下位機(jī),并作為服務(wù)消費(fèi)者。二者之間的交互業(yè)務(wù)為封裝在消息管道中的一系列服務(wù),該服務(wù)通過服務(wù)代理進(jìn)行規(guī)約,來面向不同的基礎(chǔ)操作。服務(wù)代理以文本和數(shù)據(jù)表的形式存儲在數(shù)據(jù)庫服務(wù)器中,通過此種文件類協(xié)議對服務(wù)進(jìn)行分發(fā)和約束。在服務(wù)提供者、服務(wù)消費(fèi)者和服務(wù)代理之間的SOA模型構(gòu)建完成后,上位機(jī)可直接通過訂閱發(fā)布模式,統(tǒng)一下發(fā)需求指令,消息管道中的各類服務(wù)在協(xié)同完成操控接入設(shè)備任務(wù)后,將所需返回的統(tǒng)一化數(shù)據(jù)進(jìn)行反饋,完成這個接入基礎(chǔ)化操作流程。接入設(shè)備的碎片化異構(gòu)問題通過各類服務(wù)按照代理規(guī)約的處理協(xié)議進(jìn)行消除。
1.2 硬件結(jié)構(gòu)模型
物聯(lián)接入系統(tǒng)核心處理模塊采用Intel公司ATOM芯片作為核心處理器(CPU),1 GB同步隨機(jī)存儲器(DDR SDRAM),8 GB固態(tài)硬盤(SSD);外圍設(shè)備提供串行數(shù)據(jù)收發(fā)的USB接口,支持界面開發(fā)調(diào)試的VGA接口;網(wǎng)絡(luò)設(shè)備內(nèi)置網(wǎng)卡,并提供WLAN模塊和Ethernet以太網(wǎng)口。CPU采用雙發(fā)射復(fù)雜指令集(CISC),可處理規(guī)模較為龐大的工程。系統(tǒng)移植Fedora Linux操作系統(tǒng),該操作系統(tǒng)安全性能高,目錄結(jié)構(gòu)精簡,并且適合多平臺開發(fā)操作。系統(tǒng)硬件結(jié)構(gòu)模型如圖2所示。控制臺、中央處理單元以及RS485總線接口和USB接口均集成在以ATOM中央處理單元為核心的植入Fedora操作系統(tǒng)的嵌入式控制設(shè)備上??刂婆_與中央處理單元雖然在同一硬件系統(tǒng)之中,但是中央處理單元偏重于描述嵌入式系統(tǒng)對基礎(chǔ)信號與數(shù)據(jù)的基于CISC的運(yùn)算處理,而控制臺側(cè)重于描述在可視化界面下通過瀏覽器的人機(jī)交互接口以及SOA模型關(guān)于服務(wù)在消息管道中的交互流程。由于Web服務(wù)可擴(kuò)展性良好,因此可以通過HTTP協(xié)議從遠(yuǎn)程PC端或其他嵌入式終端對本系統(tǒng)進(jìn)行訪問。對于底層感知設(shè)備,支持RS485的總線型感知設(shè)備直接與RS485總線接口相連接,根據(jù)RS485通信幀格式進(jìn)行交互;支持ZigBee協(xié)議的感知設(shè)備可與ZigBee終端進(jìn)行綁定,若干ZigBee終端借由通過協(xié)議棧構(gòu)建的自組網(wǎng)絡(luò)將無線感知設(shè)備的數(shù)據(jù)統(tǒng)一匯總到ZigBee協(xié)調(diào)器,并通過協(xié)調(diào)器的USB接口傳輸?shù)奖鞠到y(tǒng)。
2 物聯(lián)接入系統(tǒng)設(shè)計
根據(jù)Web服務(wù)的物聯(lián)接入系統(tǒng)模型,分別設(shè)計SOA模型與系統(tǒng)上位機(jī)、下位機(jī)及其交互過程的結(jié)構(gòu)流程。設(shè)計基于RS485和ZigBee協(xié)議的接入流程,完成整體系統(tǒng)的軟硬件對接工作。
2.1 SOA模型的組件設(shè)計
如圖3所示,Web服務(wù)根據(jù)具體應(yīng)用需求抽象為消息形式,通過統(tǒng)一化發(fā)布模式在SOA模型組件中下發(fā),持久化在數(shù)據(jù)庫內(nèi)的配置數(shù)據(jù)以交互協(xié)議的身份對下發(fā)的消息進(jìn)行規(guī)約,規(guī)約過程通過修改原始信息幀格式以及添加狀態(tài)碼等方式,將統(tǒng)一的消息分割為相互獨(dú)立的服務(wù),實現(xiàn)業(yè)務(wù)解耦過程。獨(dú)立服務(wù)中嵌入執(zhí)行器描述性指令,在下發(fā)指令時向線程池申請線程,并通過多線程并發(fā)方式將指令信息以各種執(zhí)行器的執(zhí)行模式下發(fā)到控制器??刂破髦苯优c感知層物聯(lián)接口相連,可將各執(zhí)行過程中的數(shù)據(jù)以串行輸出的形式寫入到實際設(shè)備中,完成對應(yīng)用的實際設(shè)備的管理。設(shè)備的接入與數(shù)據(jù)回饋過程與之流程相反,因而通過SOA模型組件可以實現(xiàn)具體應(yīng)用于實際設(shè)備接入管理過程中的數(shù)據(jù)透傳。
2.2 系統(tǒng)軟件設(shè)計
根據(jù)物聯(lián)接入系統(tǒng)模型的劃分,按照上位機(jī)、下位機(jī)和消息管道分別進(jìn)行軟件設(shè)計。
2.2.1 上位機(jī)軟件設(shè)計
上位機(jī)采用Java語言進(jìn)行設(shè)計,結(jié)合J2EE框架實現(xiàn)Web服務(wù)管理前后臺,通過Tomcat輕量級服務(wù)器發(fā)布,可通過瀏覽器直接訪問。上位機(jī)軟件流程如圖4所示,主要實現(xiàn)Web服務(wù)的動態(tài)配置以及接入管理數(shù)據(jù)的消息流形式下發(fā),其間不僅要監(jiān)聽本地的配置響應(yīng),還偵聽遠(yuǎn)程訪問中的基于HTTP協(xié)議的請求數(shù)據(jù)流。此外,上位機(jī)也實時接收下位機(jī)上傳的物聯(lián)接入數(shù)據(jù),實現(xiàn)更上層的具體應(yīng)用的業(yè)務(wù)邏輯支持及可視化數(shù)據(jù)展示等功能。
2.2.2 下位機(jī)軟件設(shè)計
下位機(jī)采用C++語言進(jìn)行設(shè)計,通過Linux操作系統(tǒng)下的多線程庫pthread進(jìn)行類庫支持,通過GCC標(biāo)準(zhǔn)編譯器進(jìn)行源碼編譯,最后通過與附加文件的連接,直接在嵌入式系統(tǒng)中生成可執(zhí)行文件。下位機(jī)軟件流程如圖5所示,主要通過偵聽消息通道獲取上位機(jī)下發(fā)的操作流消息。如表1所示,根據(jù)配置數(shù)據(jù)庫約定的協(xié)議規(guī)則解析拆分消息為控制字?jǐn)?shù)據(jù),標(biāo)定服務(wù)類型的數(shù)據(jù)直接持久化在ROM中,并掃描存儲注冊設(shè)備的文件信息,如存在合法接入的設(shè)備,則將控制字中實際用于操作設(shè)備的字節(jié)進(jìn)行分發(fā)。
2.2.3 消息管道軟件設(shè)計
消息管道遵循管道過濾器設(shè)計模式[6],以松耦合框架技術(shù),融合消息過濾機(jī)制實現(xiàn)。消息管道將數(shù)據(jù)以過濾器鏈形式上傳下發(fā)。消息管道如圖6所示,將程序初始化完畢即與上位機(jī)對接并輪詢掃描配置文件中的系統(tǒng)內(nèi)通信協(xié)議,并據(jù)此以規(guī)則分配服務(wù),該分配過程通過框架維護(hù)的獨(dú)立代碼類實現(xiàn)。服務(wù)過濾器以組件形式集成于框架之中,并與相關(guān)代碼類動態(tài)組合,按不同服務(wù)封裝為不同執(zhí)行的描述信息。過濾器采用多層結(jié)構(gòu),分別負(fù)責(zé)數(shù)據(jù)編解碼、數(shù)據(jù)讀寫、數(shù)據(jù)安全認(rèn)證、數(shù)據(jù)套接字傳輸。通過過濾器鏈的服務(wù)各自排隊申請線程池中的資源,得到資源的服務(wù)即刻向下觸發(fā)服務(wù),該過程通過多線程調(diào)度,可并發(fā)執(zhí)行。
2.3 系統(tǒng)實現(xiàn)
根據(jù)基于Web服務(wù)的SOA模型以及物聯(lián)接入系統(tǒng)的設(shè)計流程,在嵌入式環(huán)境下的操作系統(tǒng)中,利用Java Web技術(shù)實現(xiàn)上位機(jī)與消息管道功能,利用C++與多線程技術(shù)實現(xiàn)下位機(jī)功能。系統(tǒng)對接完畢后,感知層實際設(shè)備接入部分,分別利用Z-Stack協(xié)議棧實現(xiàn)ZigBee星型自組網(wǎng),利用ModBus協(xié)議下的差分信號開關(guān)端子實現(xiàn)RS485接口。通過硬件接口利用無線和有線方式收集各類感知設(shè)備的接入信息。實測表明,本系統(tǒng)可正確實現(xiàn)從Web界面到感知設(shè)備之間所有管控操作流程,將感知層、網(wǎng)絡(luò)層、應(yīng)用層之間的基礎(chǔ)性操作以服務(wù)方式有效封裝。
3 結(jié)論
本文提出了一種基于Web服務(wù)的SOA模型,并將該模型的建模思想利用嵌入式編程和Web編程技術(shù)通過松耦合類模式實現(xiàn),各服務(wù)間通過軟件接口進(jìn)行動態(tài)對接。用戶可根據(jù)具體應(yīng)用需求在Web端進(jìn)行服務(wù)流程以及系統(tǒng)內(nèi)通信協(xié)議的配置,之后利用系統(tǒng)的處理流程直接按需操控感知層的接入設(shè)備并觸發(fā)具體的需求,對基礎(chǔ)接入流程中的各類碎片化信息異構(gòu)進(jìn)行了有效消除。本系統(tǒng)實現(xiàn)用戶-業(yè)務(wù)-實體之間的三元域交互,在物聯(lián)網(wǎng)應(yīng)用場景下有一定的通用性和擴(kuò)展性。
參考文獻(xiàn)
[1] Wen Yingyou,Li Zhi.A service-integrated sensor network middleware applied to industrial solutions of IoT related[J].Telecommunication Systems,2013,53(1):61-68.
[2] 沈蘇彬,范曲立,宗平,等.物聯(lián)網(wǎng)的體系結(jié)構(gòu)與相關(guān)技術(shù)研究[J].南京郵電大學(xué)學(xué)報(自然科學(xué)版),2009,29(6):1-11.
[3] 李杰.物聯(lián)網(wǎng)中無線傳感器節(jié)點(diǎn)和RFID數(shù)據(jù)融合的方法[J].電子設(shè)計工程,2011,19(7):103-106.
[4] Fan Chunxiao,Wen Zhigang,Wang Fan,et al.A middleware of Internet of Things(IoT) based on ZigBee and RFID[C].IET International Conference on Communication Technology and Application,ICCTA,2011:605-609.
[5] Li Peng,Dong Junping,Wen Junhao,et al.A SOA-based servcie discovery framework in Internet of Things[J].Journal of Convergence Information Technology,2011,6(9):310-315.
[6] 邵華鋼,程勁,王輝,等.面向物聯(lián)網(wǎng)的系統(tǒng)及其中間件設(shè)計[J].計算機(jī)工程,2010,36(17):84-86.