多個Zigbee監測網絡遠程監控的實現
基于IEEE802.15.4標準的Zigbee傳感器網絡技術是一種短距離、低速率無線網絡技術。其低功耗、易部署等特性,使它在無線監控、工業自動化、家居智能化等領域成了應用研究的熱點。
結合IP網絡技術,可方便地實現對Zigbee監測網絡的遠程監控。通常的實現方式是在兩種異質網絡的結合點(網關節點)上實現一個嵌入式的WebServer。對于多個Zigbee監測網絡,這種實現方式在集中監管上存在一定的困難。
本文給出了利用IBM的Websphere消息中間件技術,對多個Zigbee監測網絡進行遠程集中管理的實現方法。
2.IBM中間件
IBM的WebSphere消息中間件產品,根據功能、應用對象的不同有不同的版本。WebSphere Connection Server Micro Edition,稱為微型消息代理,主要用于嵌入式的應用,使用MQTT通信協議。
MQTT是IBM開發,在2001年發布的一個開放、輕型的消息傳輸協議,專門用于遠程傳感應用等低帶寬的網絡通信,并支持發布/訂閱消息傳遞模式。
消息中間件系統的基本元素是客戶端、消息和消息代理。在發布/訂閱消息傳遞模式中,發布者和訂閱者是客戶端,通過連接到消息代理在網絡中傳遞數據。發布者向消息代理發送特定主題的消息,訂閱者向消息代理訂閱特定主題的消息,發布者和訂閱者之間的連接由消息代理管理。當消息代理收到發布提供的消息后,由它向訂閱者傳遞所訂閱的消息。
3.實現原理
采用中間件技術后,整個系統結構由兩層結構變成了三層結構,如圖1所示。
圖1系統結構
底層為多個Zigbee監測網絡,負責監測數據的采集。每個Zigbee監測網絡有一個網關節點和若干的數據采集節點。監測網絡采用星型結構,網關節點作為每個監測網絡的基站。網關節點具有雙重功能,一是充當網絡協調器的角色,負責網絡的自動建立和維護、數據匯集;二是作為監測網絡與中間層交互的接口,與中間層的消息代理傳遞消息。
中間層為消息代理,完成消息的路由功能。分別接收管理應用、網關節點發來的消息,然后進行轉發,使管理應用與監測網絡的網關間實現數據交互。
上層為管理應用,作為人機接口,實時顯示各個Zigbee監測網絡的監測數據;接收用戶的各種設置參數和控制命令。
網關節點與管理應用間的數據傳遞是雙向的,即網關節點接收到數據采集節點發來的監測數據后,預處理后形成消息發給消息代理,由消息代理轉給管理應用;管理應用收到用戶的設置參數或控制命令后,形成消息傳遞給消息代理,再由消息代理發給網關節點。所以,它們即是消息的提供者,也是消息的使用者。
發布/訂閱模型允許多個消息提供者向同一主題發布消息。因此,多個Zigbee監測網絡通過其網關節點分別連接到消息代理,向同一主題發布有關監測數據的消息。管理應用通過訂閱同一個主題,就能獲得所有監測網絡的監測數據。
另外,發布/訂閱模型還允許多個消息使用者訂閱同一個主題,消息代理會向不同的訂閱者廣播。因此,不同網關節點訂閱同一主題后,管理應用只需向消息代理發送一條控制命令,多個監測網絡的網關節點就能收到同一條控制命令。
4. 具體實現
4.1. 與消息代理間的消息傳遞
通過MQTT協議實現管理應用、監測網絡中網關節點與中間層消息代理間的數據傳輸。
首先需要對中間層的消息代理進行配置,主要包括:創建連接工廠、創建主題、創建激活規范等。
在消息代理上需要創建兩個主題,一個用于傳遞監測數據,一個用于傳遞控制命令。不同監測網絡的網關節點向監測數據主題提供消息,管理應用訂閱監測數據主題。管理應用向控制命令主題提供消息,不同的網關節點訂閱控制命令主題。
網關節點、管理應用作為客戶端,還需要編寫專門的消息收、發送模塊。雖然它們運行平臺不同,網關節點運行于嵌入式設備的Linux環境,管理應用運行于臺式機的Windows環境,但它們實現的步驟和原理是一樣的。用MQTT庫實現消息的發布和訂閱模塊,主要包括以下幾個部分。
一、連接 MQTT
1) 生成連接字符串:指定消息代理主機的IP地址和MQTT分配的端口號,端口號缺省值為 1883;
2) 設置連接屬性,包括客戶機的標識、訂閱類型、發送活動消息的間隔時間;
3) 創建 MQTT 客戶機對象。
二、向代理發布信息
直接使用MQTT 提供的API函數publish,需要提供主題、消息、服務質量等參數。
三、向代理訂閱消息
訂閱是由 MQTT 對象處理的,要求有兩個數組參數。分別是訂閱主題數組、服務質量數組。這兩個數組是“索引關聯的”。
主題數組是一個字符串對象數組,主題按層次結構排列,并且通過“/”字符分隔。
服務質量數組是一個整數類型的數組。服務質量的值可以為 0、1 和 2,根據具體的應用設置。通常將服務質量的值置為2,使消息僅傳遞一次,以減少傳輸開銷。
四、接收來自代理的消息
要使應用能接收到訂閱的消息,必須創建一個回調處理函數,并且在MQTT客戶端注冊。
用MqttSimpleCallback 接口創建簡單接口的對象,并實現connectionLost 和 publishArrived兩個方法。
當與代理的連接意外終止時,就調用 connectionLost 方法。如果出現這種情況,則此方法試圖重新連接到代理。如果 connectionLost 方法無法重新連接,則會拋出異常來通知客戶機重新連接失敗。
publishArrived 方法通知系統訂閱主題的消息已到達客戶端。
4.2. 與數據采集節點間的數據傳遞
網關節點作為Zigbee監測網絡與IP網絡的連接點,除了要與上一層的消息代理進行數據傳遞,還要與Zigbee監測網絡中的數據采集節點間進行數據傳遞,獲得原始的監測數據和向數據采集節點傳遞設置參數。
4.2.1. 網關節點的硬件結構
網關節點的硬件結構如圖2所示。主要分成兩大部分:系統運行的硬件平臺和IEEE802.15.4無線通信模塊。
圖2 網關節點的硬件結構
CPU選用AMD的 Au1550。它是一款多功能、高性能、低功耗、高集成度的網絡安全處理器。
無線通信模塊采用飛思卡爾的MC13192。它實現了IEEE802.15.4物理層的數據傳輸,可以自動完成數據的校驗和封裝。
Au1550與MC13192通過3線SPI接口、一個片選線和一個中斷請求線相連,完成數據傳輸和控制。
4.2.2. 網關節點的軟件設計
圖3 網關節點軟件系統的結構
根據網關節點的功能,軟件系統主要完成兩個功能,一是負責網絡的建立和維護、匯集監測網絡中的監測數據、向數據采集節點發送設置參數。這一部分為實時部分,由內核模塊實現,運行于內核態;二是與遠程的消息代理之間的消息傳遞、原始監測數據的預處理。這部分為非實時部分運行于用戶空間。
當MC13192接收到IEEE802.15.4物理層的數據后,產生中斷請求觸發數據處理任務讀取,校驗正確后寫入FIFO中,用戶空間的應用程序則定時讀取FIFO中的數據,然后將原始數據形成文本格式的消息發送給消息代理。
當用戶空間的應用程序收到消息代理發來的控制消息后,轉換成控制命令字寫入FIFO中,內核模塊中FIFO讀取任務則定時讀取FIFO的控制命令,形成MAC層的幀格式,通過SPI傳遞給MC13192。
一、Au1550與MC13192間的數據傳輸
MC13192與Au1550之間通過SPI進行數據傳輸。將SPI的通信模式設為主從方式,Au1550為主機,MC13192為從設備。數據的傳輸完全由主機Au1550通過片選信號控制完成。
SPI數據幀由幀頭和數據組成。幀頭為8位,第一位為讀寫標志位,R/W=1表示讀操作(從到主),R/W=0表示寫操作(主到從)。低六位表示MC13192中寄存器的地址。
MC13192設置成包傳輸模式,它就會將接收到的主機數據暫存到發送RAM中,當接收完成后再以包的形式發送出去。同樣,收到IEEE802.15.4數據幀后,存儲到接收RAM中,確定數據幀的長度、進行校驗和和鏈路質量的計算,數據校驗正確后向主機發出中斷請求,請求主機將數據讀走。
二、實時任務與非實時應用間的數據傳輸
實時任務與非實時應用間采用FIFO
相關閱讀:
- ...· Efinix® 全力驅動AI邊緣計算,成功推出Trion™ T20 FPGA樣品, 同時將產品擴展到二十萬邏輯單元的T200 FPGA
- ...· 英飛凌亮相進博會,引領智慧新生活
- ...· 三電產品開發及測試研討會北汽新能源專場成功舉行
- ...· Manz亞智科技跨入半導體領域 為面板級扇出型封裝提供化學濕制程、涂布及激光應用等生產設備解決方案
- ...· 中電瑞華BITRODE動力電池測試系統順利交付北汽新能源
- ...· 中電瑞華FTF系列電池測試系統中標北京新能源汽車股份有限公司
- ...· 中電瑞華大功率高壓能源反饋式負載系統成功交付中電熊貓
- ...· 中電瑞華國際在電動汽車及關鍵部件測評研討會上演繹先進測評技術