本文摘要:摘要:為了使物聯網網關連接多個串口設備且能夠并行處理來自串口的數據,設計了一個支持多路串口設備連接、在線配置串口參數的物聯網網關。網關部署在RaspberryPi開源硬件平臺。軟件基于開源的Kura框架,使用OSGi插件技術進行開發,功能模塊將來自不同串口的
摘要:為了使物聯網網關連接多個串口設備且能夠并行處理來自串口的數據,設計了一個支持多路串口設備連接、在線配置串口參數的物聯網網關。網關部署在RaspberryPi開源硬件平臺。軟件基于開源的Kura框架,使用OSGi插件技術進行開發,功能模塊將來自不同串口的數據按照不同的主題以消息的形式發送到云端,模塊之間使用事件通信,網關與云端采用MQTT技術實現數據通信,Kura實現了串口的可視化配置。實際應用表明,該系統可以穩定、可靠地工作,達到了設計要求。
關鍵詞:串口通信;MQTT;OSGi;Kura
0引言
在早期的設備中,大多使用串口與控制器進行通信,而控制器對串口設備數據的讀取,一般采用輪詢的方式,在對實時性要求比較高的場合,這種方式無法有效地滿足系統要求[1 ̄3],串口參數一旦配置完成,無法對其進行動態配置。物聯網技術的發展,要求對設備進行統一的管理和控制,控制器不僅能快速獲取設備數據,還要求通過網絡與云平臺通信。由于串口控制器功能比較單一,如果需要連接外網,還要配置通信模塊,且編程復雜,系統的靈活性和可擴展性也不能滿足實際使用的要求。針對這些問題,本文提出一種動態可配置串口物聯網網關。網關上運行可配置、可插拔的OSGi(OpenServicesGatewayinitiative)插件,插件實現多個串口設備的數據采集和通信功能。
由于OSGi插件具有動態和并行的特性,與網關相連的串口設備可以獨立、并行地與網關進行數據通信。網關運行通信模塊,對通信數據遵循消息隊列遙測傳輸協議(MessageQueuingTelemetryTransport,MQTT)協議進行格式轉換,并將來自不同串口設備的數據封裝成消息的形式,發布到不同的主題上。
1Kura平臺及插件機制
Kura是Eclipse基金會發布的物聯網項目,用于構建IoT(InternetofThings)網關框架。
Kura由基本服務、遠程連接服務、網絡配置、用戶管理界面等模塊組成。它支持基于事件的消息通信機制,可以在不同組件之間通過事件進行通信。Kura可在樹莓派等多種硬件平臺上部署。Kura使用OSGi技術實現模塊設計和管理。OSGi基于構件的軟件設計方法和面向服務的模塊化設計思想,定義了一個開放、統一的體系結構[4]。OSGi采用層次結構,其中OSGi內核框架、bundle(插件)和服務是其核心要素。插件是OSGi框架下模塊化設計的主要體現。在形式上,插件就是一個Jar文件,OSGi所有基本服務和功能模塊,都是通過插件實現的。插件之間實現物理隔離,系統運行期可以遠程安裝、啟動、升級和卸載,實現軟件熱插拔、多版本控制。利用插件的動態模塊化、面向服務架構等特性[5],用戶可以很方便地創建自己的功能插件,并集成到系統中實現網關功能,可根據需要對功能模塊擴展[6 ̄7]。
2MQTT協議
MQTT是一種基于TCP/IP的議通信協議,為低帶寬、不穩定網絡環境中的物聯網應用提供可靠的網絡服務[8]。由于其在網絡連接、可靠性、靈活性及成本等方面突出的優點,目前已經被國際標準化組織采用,成為物聯網行業的一個標準。MQTT協議使用發布/訂閱消息模式,提供一對多的消息分發服務。MQTT協議由客戶端和代理服務器兩部分組成,代理服務器主要完成消息路由功能,它連接了多個客戶端,客戶端是消息的發布者和接收者。
3系統設計及實現
3.1硬件結構
網關采用開源硬件樹莓派3B。樹莓派集成四個USB接口和WiFi模塊,可以直接通過USB接口與底層設備連接,若連接設備數量較多,也可以使用USB ̄hub對串口擴展。樹莓派使用WiFi與MQTT消息代理服務器連接。將串口獲取的數據上傳到云端,實現設備端到云端的數據傳送。由于網關與底層設備通過標準的USB串口連接,同時與云端的通信也是基于WiFi技術實現,這時網關的硬件連接基于標準化的接口,系統擴展和連接都很方便,具有更強的適應性。
3.2軟件設計
3.2.1軟件整體框架
軟件設計基于Kura框架,采用符合OSGi4標準規范的模塊化設計,用Java語言編程實現[9]。每一個bundle可以獨立進行開發和部署。插件根據需要調用OSGi和Kura提供的基礎服務。插件需要實現的主要功能是與串口設備的連接和與云端服務器的通信,這兩部分功能分別由串口bundle和通信bundle具體實現。其次,還需要實現插件的動態配置和可視化管理以及插件之間的通信。
(1)串口bundle。串口bundle實現與多路串口設備連接,并根據串口設備的不同動態配置串口通信數據格式、波特率等參數,串口bundle還要支持設備的熱插拔和在線升級。(2)通信bundle。根據數據來源不同,通信bundle按照不同的主題將數據以消息的形式發送到MQTT代理服務器。
(3)插件的可視化管理。bundle需要實現Con ̄figurableComponent接口,調用Kura框架提供的可配置服務,配置參數來自XML文件。(4)網關連接的串口可動態設置。網關支持多串口設備同時連接到一個網關,每一個串口的參數信息可以動態改變,包括串口名稱、波特率等。且要求在串口設備工作時動態完成不同設備之間的切換,即實現所謂的熱插拔。(5)串口bundle與通信bundle之間的通信。插件之間的通信采用基于事件的實時通信。串口bundle將實時獲取的數據以事件的方式發送給通信bundle。
3.2.2系統設計及實現
(1)串口bundle串口bundle需要與底層串口設備連接,由于不同設備的波特率及數據格式各異,在設計插件時,必須將串口bundle設計成可動態可配置的。串口bundle的功能實現,需要調用OSGi容器和Kura框架提供的一些功能插件。串口bundle主要依賴連接服務和事件管理服務。同時,它也提供可配置服務,供Web管理程序使用。串口bundle啟動時,引用一個連接服務的實例,建立與串口設備的邏輯連接。隨后讀取串口配置文件,串口配置參數作為插件的元數據,以XML文件的形式保存,串口bundle根據這些參數設置串口的工作模式。
為實現串口數據收發,在串口bundle中啟動一個新線程用來監聽串口,接收來自串口設備的數據,這些數據被封裝成事件,每一個事件與一個主題相關聯,對于通信bundle來說,這個主題也是區分不同串口bundle的一個主要依據。借助于事件管理服務,由OSGi容器負責事件的路由分發。由于插件繼承了可配置接口,可對外發布Con ̄figurableComponent服務,當插件激活后,插件的運行狀態出現在Web管理界面,通過可視化界面可以對串口插件的參數進行動態配置。同時,插件的生命周期也可以在這里統一管理。
(2)通信bundle
通信bundle基于Kura內置的MQTTservice,根據連接MQTT代理服務器的不同可以在可視化界面中配置MQTT服務代理的參數。通信bundle接收來自串口bundle的事件。通過解析事件的主題,提取出來自串口bundle的數據,并根據事件主題,建立相應的消息主題。
(3)插件間通信
插件之間的通信使用事件實現,這是一種松耦合的通信方式,最大限度地減少了插件之間的依賴性。OSGi提供了事件管理服務,具體實現時,插件需要應用OSGi框架內置的事件管理服務。管理服務采用發布/訂閱模型。事件發布者將要傳輸的數據封裝成事件的形式,并以特定的主題向外發布。由OSGi框架對事件進行管理,將事件向所有訂閱該主題的訂閱者發布。訂閱者實現事件監聽接口,接收特定主題,對事件進行解析,獲得發布者發送的數據。
4系統測試
4.1測試環境
網關硬件使用開源硬件平臺RaspberryPi,運行Linux操作系統。Kura框架采用4.1版本,測試時同時連接了四個USB串口設備,每臺設備工作在不同的波特率下。為實現遠程配置,使用PC在局域網內與網關連接,登錄Web服務器進入管理界面對插件進行可視化管理。使用WMQTT ̄utility客戶端訂閱云端數據。
4.2功能測試
通信bundle根據串口數據的來源不同將數據發布到不同的主題上,可以選擇不同的MQTT代理服務器將消息發布到局域網或云端。這里測試了兩種不同的代理服務器設置,分別是Kura內置的ApacheActiveMQArtemis代理服務器和Eclipse提供的MQTT測試代理服務器。測試結果表明,在兩種不同的網絡環境中,插件都能夠很好地工作。
5結論
本文設計并開發了一種動態可配置多路串口的網關,網關軟硬件都基于開源項目,具有可擴展性強、開發快捷、使用靈活等特點。解決了網關與早期設備的聯網問題,在快速網關原型設計中具有一定的實用價值。系統的插件設計方法,也為未來網關兼容更多的底層設備和通信協議提供了一種有效的方法。
參考文獻
[1]胥飛燕,鄭華容,周宦銀,等.基于FPGA的多串口控制器的設計與實現[J].物聯網技術,2017,7(10):31 ̄32.
[2]王春媚.多串口并行通信數據傳輸系統設計[J].現代電子技術,2017,40(4):86 ̄90
[3]孫廣明,唐建.基于高可靠CPCI接口的4通道串口設計[J].電子設計工程,2017,25(23):90 ̄93.
[4]佘俊,鐘保強,高鵬.基于OSGi的SOA應用架構搭建模塊化的企業應用平臺研究與實現[J].自動化與儀器儀表,2016,6:156 ̄157.
通信方向論文投稿刊物:《現代電子技術》(半月刊)分為“通信與信息技術”和“計算機與電子器件”兩個版本。值此創刊30周年之際,《現代電子技術》堅持“重質量,有特色,守信譽”的辦刊方針基礎上,大力提高本刊的學術水平和質量,為推進科技進步,為信息產業及電子行業發展做出更多貢獻。
轉載請注明來自發表學術論文網:http://www.zpfmc.com/dzlw/21985.html