劉海杰
(河北省特種設備監督檢驗研究院唐山分院,河北 唐山 063000)
當前,物聯網ZigBee技術的應用越來越廣泛。物聯網技術在工業現場的應用,可建立物與物、物與人的網絡連接,實現泛在感知,支持機器自動識別,提升自動化監控水平和效率。筆者設計了一種基于物聯網的工業現場監控系統,通過組建無線傳感器網絡采集工廠運行中設備及環境所產生的信號,并傳遞給本工位的智能交互終端,交互終端具有本地監控的功能,且可作為網絡服務器供遠程用戶訪問,為工作人員進行現場管控提供快捷、便利的多重交互方式。
基于物聯網的工業現場監控系統大致分為三部分。一是無線傳感器網絡部分,主要應用ZigBee技術和ZigBee協議棧進行開發[1],實現組網、數據采集和傳輸。二是本地端部分,即應用C語言和界面開發工具GTK+在嵌入式開發板上實現本地客戶端的開發。本地端主要實現ZigBee采集數據的處理和顯示,以及通過攝像頭實現對工廠環境的監控。三是網絡端的開發,應用網絡開發的前端技術、HTML超文本標記、JavaScript腳本及服務器端的CGI開發,實現服務器與客戶端瀏覽器的數據交互,實現在客戶端瀏覽器上顯示環境監測數據及對工廠內部設備的管理,完成對工業現場的實時監控。整個系統的原理框圖如圖1所示。

圖1 系統的原理框圖
基于ZigBee協議的無線傳感器網絡由終端節點和協調節點組成[2]。其中協調節點應用ZigBee無線通信協議組建及管理網絡。
系統采用模塊化的結構設計,每個ZigBee終端節點均包括無線數傳模塊和控制接口部分[3]。無線數傳模塊主要負責ZigBee信號的無線收發,實現基于ZigBee網絡與協調節點的數據通信。不同類型終端節點的無線數傳模塊電路相同,而接口電路卻有差別。本系統的接口電路主要用于驅動溫濕度傳感器、紅外傳感器、煙霧傳感器、振動傳感器、液位傳感器以及繼電器控制模塊,用于感知工廠設備及環境信息。由于各終端節點布放位置不同,故其攜帶不同的傳感器,各節點協同工作。終端節點1的溫濕度傳感器和紅外人體傳感器HC-SR501的數據引腳分別連接CC2530的P0_4和P0_7;終端節點2的振動傳感器SW-18010P的DO引腳和液位傳感器的D引腳分別連接CC2530的P0_6和P0_7;終端節點3的CC2530 P0_6引腳連接煙霧傳感器和P0_5引腳用于繼電器控制。
協調器是整個ZigBee網絡的中心,負責傳感器網絡的建立、管理以及來自終端節點數據的匯集與處理。本設計針對管控系統硬件要求具有易開發、低功耗、低成本的特點,因此協調節點和終端節點均采用CC2530射頻芯片作為ZigBee芯片。CC2530采用無線SOC(System On Chip)設計,系統所需的一般電路都已集成在芯片內部,只需簡單外圍電路即可實現信號收發功能[4]。
在本系統中,協調器通過串口與智能交互終端相連,并通過串口通信與交互終端進行數據的收發,主要是向客戶端發送終端節點上傳來的數據信息,并接收來自交互終端的控制信號。協調器節點結構圖如圖2所示。

圖2 協調器節點結構圖
2.3.1 協調器節點軟件設計
協調器節點的主要功能是組建網絡和維護網絡,對節點進行綁定,進行數據的接收,將收到的數據發送給上位機,工作流程如圖3所示。

圖3 協調器節點工作流程
2.3.2 終端節點的軟件設計
終端節點需定時采集工廠環境及設備數據并發送到協調器節點,其工作流程如圖4所示。其步驟是節點初始化,嘗試加入網絡,進入網絡后等待中斷指令,當Sensor收到外部中斷指令時,等待Sensor數據轉換后進行數據發送,發送完數據后Sensor進入休眠狀態,等待下一次的中斷請求。

圖4 終端節點的工作流程
2.3.3 程序設計
整個程序的設計考慮了以下三個部分:第一,網絡節點對傳感器的驅動;第二,傳感數據的采集;第三,終端節點和協調器節點間的數據傳輸。
程序的設計以數據傳輸為主線,系統中數據分為上行數據和下行數據。上行數據主要用于實時數據和報警信息的采集,而下行數據則是針對報警信息而發送的控制指令。SampleApp_Init()初始化函數主要對終端節點的外部設備進行一些初始化操作,如對連接傳感器的接口做輸入輸出的配置。
(1)上行數據的發送。上行數據(繼電器節點除外)用SampleApp_Send_P2P_Message()函數打包傳輸,并在函數中調用數據采集函數,然后將數據保存到全局變量里,并調用AF_DataRequest()函數將數據發送到協調器。
(2)上行數據的接收。當終端節點發送數據后,協調器節點將接收到該數據,并調用處理消息的函數SampleApp_MessageMSGCB(),其中對應簇ID為SAMPLEAPP_PERIODIC_CLUSTERID,然后對數據進行處理,并將接收到的數據通過HalUARTWrite()函數串口傳到交互終端。
(3)下行數據的發送。當按下協調器的S1按鍵時產生中斷信號,用SampleApp_SendPeriodicMessage()這個函數處理中斷信息。通過AF_DataRequest()函數,將命令發給繼電器終端節點。
(4)下行數據的接收。下行數據主要由協調器控制繼電器,通過終端處理函數SampleApp_HandleKeys()來控制繼電器的功能。
以工位為單元使用智能交互終端,以Arm(S5PV210)嵌入式開發板作為開發平臺,在Linux系統中進行本地端與網絡服務器端的開發,采用觸摸屏提供交互式操作,本地端負責感知數據的處理、顯示。網絡服務器端實現物聯網網關的功能,負責ZigBee網絡與Internet網絡的連接,響應遠程客戶端的數據請求,同時通過串口通信實現對ZigBee網絡的監控。
本地端的開發目的是使管理者在交互終端上對工廠環境進行監控。本地端的設計基于嵌入式Linux操作系統,用C語言和GTK+工具進行開發。
在Linux操作系統下,任何設備都被看作是文件描述符。當ZigBee網絡的協調器通過串口連接到本地端時,在本地端的操作系統下會出現串口描述符/dev/ttyUSB0。通過串口的描述符,讀取ZigBee的數據和進行數據分析,并用界面的操作工具GTK+進行顯示,且可利用攝像頭進行視頻監控。
考慮到本地端的局限性,因此借用互聯網的方式來獲取工廠現場的設備及環境數據,以實現對工廠內部環境的管控。
通過在開發板上嵌入一個支持CGI腳本的Web服務器,生成動態頁面,用戶在任何地方都可以通過瀏覽器對系統設備進行監控。選擇專門為嵌入式設備設計的Boa服務器作為嵌入式Web服務器,Boa是一個單進程的HTTP服務器,完成一個用戶請求后,才響應另一個用戶的請求,無法并發響應;它支持CGI,能為CGI連接開啟新的進程。Boa服務器的體系結構如圖5所示。通過移植Boa服務器,編寫HTML頁面并結合CGI技術,用戶通過Internet就可以訪問和控制嵌入式設備,從而實現對工業現場的監控。

圖5 Boa服務器的結構圖
遠程客戶端采用HTML+JavaScript技術進行客戶端網頁的編寫,實現遠程用戶對現場數據的監測和管理。客戶端頁面主要分為設備控制、現場環境、視頻監控三部分。圖6為系統在實驗階段對室內環境的數據采集結果,包括溫度、濕度、煙霧、紅外入侵等信息。

圖6 室內環境數據采集結果顯示界面
本系統實現了基于物聯網的工業現場監控,通過底層傳感器網絡進行設備及環境信息的采集,并傳輸至交互終端進行本地監控及供遠程用戶訪問。經測試,系統可穩定地進行上下行數據傳輸,具有實時性好、可擴展性強的特點,在現場管控領域有較好的應用前景。