(遼寧軌道交通職業學院,遼寧 沈陽 110023)
物聯網應用技術是當下的一個熱點,其應用領域可以分為四大類,分別是用于提高生產效率、保障社會安全、方便日常生活以及服務公共事業。在服務公共事業的領域,在日常環境監測、保護工作中,通過布設物聯網使得環境信息化,能夠建立起環境監測、污染源監控、生態保護和核安全與輻射環境安全等信息系統,有利于實時收集大量準確數據,進行定量和定性的分析,為環境管理工作提供科學決策支持[1]。
大型機房如果沒有溫濕度的實時監控設備,會由于高溫高濕而導致設備故障。工作期間的設備故障會嚴重影響企業正常工作的進行,甚至造成嚴重的財產損失。而24小時不間斷全功率開啟空調又耗電量巨大,因此,大型機房需要配套環境監控系統,以實時監控溫濕度的變化,在溫度過高時調高空調的功率,濕度過高時啟動除濕器,并在實施溫濕度控制后仍然不能達到環境標準時向值班員報警,提醒值班員實施干預。
本系統為BS結構,系統組成結構圖1所示。系統整體上由兩大部分組成,數據采集模塊和遠程監控模塊。數據采集模塊由51單片機和溫濕度傳感器組成,遠程監控模塊由傳感器數據管理程序(以下簡稱“管理程序”)、瀏覽器和移動客戶端(兩者以下簡稱“客戶端”)構成。

圖1 系統結構
根據本系統的設計特點,單片機采用低成本的51單片機。單片機可接多個溫度和濕度傳感器,管理程序通過串口定時輪詢單片機上所連接的溫濕度傳感器的狀態。管理程序與單片機之間的通信采用工業上廣泛應用的Modbus協議,在符合Modbus通信協議的基礎上,本項目做出了一些定制。Modbus通信協議定義了多種功能碼,本項目整體上用到其中的4個,分別是0x02讀離散輸入寄存器、0x04讀輸入寄存器、0x05寫單個線圈寄存器和0x06寫單個保持寄存器。管理程序讀取傳感器狀態時用的是功能碼0x04。
送信。送信的通信格式與Modbus功能碼與0x04的查詢命令一致,即讀輸入寄存器。本項目定制的部分是寄存器地址必須跳躍設置,即0、2、4…或者1、3、5…。這樣設置的目的是既要符合Modbus通信協議又希望返信時能夠攜帶更多的信息。
返信。返信的通信格式也是同Modubs功能碼0x04的返信格式。本項目的定制部分有以下幾處。
(1)字節數:8bit,值固定為4,指定從字節數之后的固定的4個字節。
(2)寄存器地址:8bit(0~255),由于采用異步傳輸,上位機得知道返回的消息是那個寄存器的地址。由于8bit的二進制數最多可以表示256個整數,理論上最多可以連接256個傳感器,但是由于為了在單次通信的時候攜帶更多的信息,每次讀兩個寄存器地址,實際上只有128個地址可用。
(3)設備類型:8bit,1-溫度傳感器,2-濕度傳感器,3-光照傳感器(擴展),4-煙霧傳感器(擴展)。本系統目前只用到了溫濕度傳感器,光照和煙霧傳感器以及其他類型的傳感器可根據今后的使用情況進行擴展。
(4)傳感器讀數:16 bit,浮點數乘以100 后再強制類型轉換成short型。常溫的取值范圍必定在-100℃~100℃以內,溫度值為浮點數,相對濕度以百分數表示,也是浮點數。如果存放溫濕度的值,8bit是不夠的,因此用16bit來存放溫濕度。存放的方法為,將溫濕度的值強制轉換為精度為兩位小數的浮點數,乘以100再強制轉換成整數,存放在16bit里。當管理程序讀取到這16bit值的時候,先強制轉換成浮點數在除以100并保留兩位小數就得到了原始的溫濕度值。
在本系統中,空調采用的是EMERSON公司出品的大型機房Pex空調,該空調配備支持Modbus通信協議的OC485通信卡,管理程序所在服務器通過RS485串口與OC485通信卡相連接。通過定時向OC485通信卡發送查詢指令,管理程序可以實時掌握空調的工作狀態。OC485通信卡的RS485傳輸模式及通信格式可以參考PeX空調OC485卡Modbus通訊協議官方文檔。管理程序與空調的通信用到了功能碼0x02、0x04、0x05和0x06。
遠程監控模塊的主要功能由部署在服務器上的管理程序完成。管理程序啟動后首先連接數據庫,然后開啟一個定時任務,該任務的工作有兩個方面。一方面定時向單片機發送指令讀取其所連接傳感器的狀態,讀取到的傳感器讀數除了保存在內存中供客戶端查詢,還要寫入數據庫中作為溫濕度的歷史數據。這些歷史數據做成曲線可以反映出機房中溫濕度隨季節變換的趨勢,也可以作為溫濕度與機房故障關聯性的分析之用。另一方面該任務定時向空調發出指令讀取空調的狀態并保存在內存中供客戶端顯示并控制空調的運行之用。
這兩方面的工作需要執行的頻率并不相同。通常溫濕度的變化是一個相對緩慢的過程,過于頻繁的采集是沒有意義的,因此對溫濕度數據的讀取可以設定在5分鐘一次。對空調狀態的監控實時性要求比較高,因此可以設定每5秒鐘讀取一次空調的狀態,這兩方面的工作可以放在一個定時任務中執行。客戶端登錄管理程序成功后,兩者之間將建立一個WebSocket連接,管理程序會定時向客戶端推送傳感器和空調的狀態,管理程序的工作流程。
數據存儲部分可采用MySQL。MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB公司開發,目前屬于Oracle 旗下產品。MySQL是最流行的關系型數據庫管理系統之一,在WEB應用方面,MySQL是最好的RDBMS應用軟件。由于其社區版的性能卓越,搭配JSP和Apache可組成良好的開發環境[2]。
管理程序啟動后,按照指定的時間間隔,將采集到的溫濕度信息插入到數據庫中的表history。表history用來存放每天24小時內的傳感器數據,從00:00開始,每隔5分鐘上傳一條,每個個傳感器每天將有288條數據。這些數據可被服務器讀取并顯示成圖表,用來分析數據、天氣、用電量以及機房故障之間的關系。表history需要的字段有:device_id,設備編號,即傳感器或其他設備的編號;device_type,設備類型,表示溫度傳感器,濕度傳感器或其他設備;value,傳感器或其他設備的值;timestamp,讀取到傳感器值的時間戳。
瀏覽器和移動客戶端需要支持WebSocket協議,WebSocket協議可以在客戶端和服務器之間建立全雙工的通信,改善用戶體驗[3]。瀏覽器和移動客戶端成功登錄管理程序后首先從管理程序讀取傳感器的配置信息,并顯示畫面上,然后向服務器發起WebSocket連接,連接建立后,服務器將定時推送傳感器實時信息,畫面上的傳感器信息也隨之更新。
經過測試本解決方案可有效地實時監控機房的溫濕度變化,并可長期穩定運行。如果將光照傳感器,空調,加濕器,照明,窗簾等控制設備也加入,并增加根據溫濕度、光照等智能控制設備的開啟和關閉的功能,則該解決方案也可以用于企業的智能工作環境的搭建。同時,本系統也應用于教學實踐,在服務器開發和移動應用開發相關課程中取得了良好的教學效果。