劉 易,盧 軍
(武漢郵電科學研究院 湖北 武漢430074)
基于ARM11的遠程溫濕度實時監控系統設計
劉 易,盧 軍
(武漢郵電科學研究院 湖北 武漢430074)
隨著動力環境監控系統的不斷發展,遠程終端設備數據的采集變得格外重要,而ARM嵌入式產品在性能、成本和功耗上更具優勢。利用ARM11和Linux嵌入式平臺采集智能化終端設備數據,通過搭建嵌入式WEB服務器將數據以因特網形式進行遠距離傳輸。針對智能化RS485型溫濕度傳感器,對其進行Modbus協議解析并提取數據,利用循環冗余校驗方法提高了數據接收的可靠性,并采用AJAX實時刷新技術實現數據在網頁上局部動態的更新。局域網內,客戶端通過頁面中按鈕實現數據以1秒更新顯示,通過設定相應門限來觸動報警以期達到遠程實時監控效果。
遠程終端設備;溫濕度傳感器;Modbus;AJAX實時刷新;RS485
隨著智能系統的不斷發展,機房動力環境的監控越來越重要[1]。為保證機房的正常運行,提高其工作效率,節約人力成本,監控機房的動力環境就顯得尤為必要。結合當前機房監控的趨勢,利用易于編程、可移植性好、可操作性強、價格低廉的Linux操作系統結合低功耗高可靠的ARM嵌入式技術和遠程終端Modbus技術,最終能夠實現遠程對數據進行遙信、遙控和遙調[1]。
ARM處理器在經歷了包括ARM7、ARM9等多個發展歷程后,ARM11已成為成熟的嵌入式應用,也越來越多地向更高端的應用產品發展。ARM11在便攜式和無線應用上,提供了超高性能,并且使成本和功耗減到最小。ARM11的微架構特性保證系統性能可以從基本的350~500 MHz范圍擴展到1 GHz以上。其微架構的高效率表現,根據不同的應用來調節時鐘頻率和電源電壓,從而在性能和功耗之間達到最佳。
本系統在軟件和硬件上采用模塊化和層次化的設計,增添電源電路模塊和RS485轉TTL模塊,使得系統在硬件上更加靈活。利用ARM11平臺Linux3.0.1內核系統,移植并搭建相應嵌入式Web服務器BOA,并用Ajax技術對相應網頁進行局部數據刷新,最終將數據通過以太網遠程進行傳輸到達客戶端,在相應頁面上選擇按鈕實現對遠程終端設備進行控制。
系統結構主要分為兩個部分,第一部分是前端數據的采集,主要是將水浸、煙霧、溫濕度等傳感器的數據進行采集;第二部分是將采集到的數據通過Internet遠距離傳送并控制。系統框架結構如圖1所示。

圖1 溫濕度實時監控系統組成結構圖
核心板采用Linux 3.0.1嵌入式操作系統,通過串口接入智能型溫濕度傳感器,利用RS485相關驅動程序來對傳感器進行數據的接收和發送。在數據傳輸方面,遠程通過有線以太網傳輸,能夠在客戶端通過網頁進行訪問,也可通過GSM無線傳輸,將相應的數據傳送到遠端手機上。
在采集到數據后,可以對相關數據進行分類存儲,同時通過移植嵌入式Web服務器,并通過CGI(Common Gateway Interface)完成靜態頁面與服務器之間的動態交互。
由于板載硬件電路部分RS485所接為TTL電平,與485型傳感器電平不一致,需要進行相應的轉換才能夠正常通訊。因此在ARM11板上擴展設計TTL轉RS-485模塊,保證主板物理接口即電平特性和軟件驅動與溫濕度傳感器之間能夠進行有效的數據交互。根據RS485高擴展性的特性,可設置多個節點以接入多個相關設備,實現全方位多類型數據采集。作為工控設備的485型溫濕度傳感器,為保證傳感器能夠正常運行,需提供10~30 V之間的電壓[2],因此設計了12 V的電源電路模塊。

圖2 擴展485型傳感器連接圖
多個485設備接入主機框架如圖2所示,其中485總線上可接入多個相關設備,理論上可接入128個設備[3]。在沒有中繼器的RS485-Modbus系統中,最多允許接入32臺設備[4-5]。
在接入485型溫濕度傳感器前,需要了解該設備工作原理及數據的傳輸形式。通過設備用戶手冊了解,其采用Modbus-RTU通訊規約,采用2線制數據收發。
設備接入監控主機需要設置相應的參數,如表1所示,當設備使用RTU模式在Modbus串行鏈路通信,所有鏈路上設備傳輸模式和串行口參數必須相同[5-6]。

表1 設備通訊基本參數
報文中有效數據為8位數據位,兩個4位十六進制符,數據收發通過相同的比特率讀取其中數據。
數據幀結構采用Modbus-RTU通訊規約,開始和結束結構需大于等于4字節時間[5]。作為設備唯一識別的地址碼,1字節理論可接入128個設備[7-8]。功能碼為主機所發指令功能指示,溫濕度傳感器采用0x03功能碼 (讀取寄存器數據)。錯誤校驗采用16位2字節CRC碼,校驗碼低位字節在前高位在后。
主機讀取傳感器數據,需要主機發送相應問詢幀,然后傳感器給出應答數據。如表2所示為主機問詢幀結構,目的是通過主機來讀取傳感器中的數據。主機通過寫數據到傳感器,下面的命令碼是告訴傳感器主機需要讀取0x00和0x01兩個寄存器的數據。

表2 主機問詢幀結構
當主機發送如表2所示的一幀數據后,傳感器會立即發送如表3所示的應答幀。其中,地址碼和功能碼同問詢幀一致,為0x01和0x03。有效字節根據有效數據來計算,因為溫濕度傳感器中需要的是溫度和濕度,所以只有數據一和數據二,1位有效字節碼為0x04,代表4字節數據。校驗碼是16位循環冗余校驗,每8位字符與寄存器中的值異或,通過移位置零等操作,當報文中字節都運算之后得到的最終值即為 CRC[9-10]。

表3 從機應答幀結構表
實驗中在保證溫濕度傳感器與主機設置參數一致的情況下,發送如表2所示的讀寄存器數據命令后,在Linux系統中運行相應的程序,提取出應答幀中4字節數據,然后將其轉換為對應的浮點型十進制數值,最終得到如圖3所示的結果。

圖3 采集溫濕度傳感器數據圖
本實驗在軟件上采用數組的形式,能夠方便提取出對應的數據,然后間隔1秒發送詢問幀,對應地主機接收相應的溫度和濕度值并能直觀地顯示到界面當中。為保證接收的數據準確,提高傳輸可靠性,需要通過在接收到數據時進行CRC的比對。即通過對應答幀當中除校驗碼外的其他數據進行CRC驗算,其驗算值同應答幀校驗碼進行比對,如一致則接收數據正確,否則,重新接收數據。這樣,在出現錯誤信息告警時,能夠很清楚知道系統出現的問題在哪,可提高系統可靠性。
監控主機采集到溫濕度傳感器數據之后,需要將數據通過以太網上傳到遠端,在網頁上輸入相應的服務器IP地址就可進行查看數據。將數據上傳就需要在ARM11平臺上移植嵌入式Web服務器,遠端客戶機通過訪問服務器就可以查看相應的數據。
運行在嵌入式Linux下的Web服務器目前比較流行的是BOA服務器,其設計目標是速度和安全,智能家居的網關大部分也采用該Web服務器作為主要架構[11]。它是一種非常小巧的Web服務器,其可執行代碼非常小只有大約60 kB左右。作為一種單任務的Web服務器,BOA只能依次完成用戶的請求,而不會處理新產生出來的進程。但BOA支持CGI,能夠為CGI程序分出一個進程來執行[12]。
本系統采用BOA服務器,其移植過程需要下載相應的源碼包后,再進行相應的修改編譯執行,復制到相應的目錄下并進行配置,最后運行啟動服務器,在網頁上輸入平臺IP進行查看BOA移植是否成功。由于平臺Linux內核已經帶有BOA服務器,所以未進行移植BOA服務器的操作。
CGI的中文可表示為通用網關接口,其實際上是一個在Web服務器上運行的應用程序,通過客戶端瀏覽器輸入而觸發,提供客戶端HTML頁面的接口[13]。通過這種接口可以讓網絡用戶訪問Web服務器和運行遠程服務器系統所在主機的應用程序,通過相關程序控制相關的硬件,并把外部請求產生的結果轉回給應用程序,再進一步格式化輸出為HTML格式,最終反饋到瀏覽器端。這樣從用戶處接受和返回的方法就完成了客戶端HTML靜態頁面和Web服務器的動態交互。CGI是運行在服務器上的,和其他開發動態頁面的方式不同。要想實現遠程控制某個嵌入式設備,在嵌入式方面首選CGI的方式進行網頁的動態交互。
CGI在系統中與程序和服務器之間的關系如圖4所示,相當于處于客戶和Web服務器之間的一個過渡,通過HTTP協議實現的客戶端與服務端之間的通信。首先客戶端瀏覽器通過HTML表單請求指定生成一個對應的CGI應用程序的URL,然后服務器收到請求并執行指定的CGI應用程序,此時CGI應用程序根據用戶輸入操作做出響應,將產生出來的數據結果處理成為HTML表單形式回送給Web服務器,最后顯示客戶端瀏覽器頁面上。CGI程序的輸出數據的語法格式必須和相應消息的語法格式一致,才能根據操作得到正確的信息。

圖4 CGI系統架構圖
AJAX(Asynchronous Java Script and XML)是異步Java Script和XML,并非縮寫詞,而是由Jesse James Gaiiett創造的名詞,是指一種創建交互式網頁應用的網頁開發技術[14]。其核心是通過使用Java Script對象XMLHttpRequest向服務器發送異步請求。
如果要得到服務器上文件或數據庫中的信息,或者向服務器發出請求,就必須制作一個HTML表單向服務器GET或POST數據,同時用戶需要點擊相關按鈕操作來發送或獲取所需信息,然后等待服務器給出的響應,最后會加載一張新的頁面呈現出結果[15]。針對這樣的情況Web應用程序運行會變得緩慢,且界面呈現也不夠友好。通過利用AJAX技術,可以在不重新加載頁面,采用XMLHttpRequest對象直接獲取服務器傳遞的數據,即局部刷新數據。系統中腳本程序會不斷請求服務器,客戶端瀏覽器在同一個頁面下,將會看到內容按照一定的時間不斷更新變化。
嵌入式Linux系統中編程語言為C語言,所以在有Web服務器的基礎上移植相應的CGIC庫,經過修改、編譯、配置、安裝和測試等一系列操作完成后,然后再編寫HTML網頁。制作一個主頁和溫濕度采集頁面,建立一個Java Scrip腳本文件以實現AJAX異步訪問服務器,編譯運行主程序加載到開發平臺上客戶端瀏覽器就可以進行操作得到相應的顯示。
本系統在同一網段通過另一臺PC (IP為192.168.10.13)上的瀏覽器輸入ARM11嵌入式平臺的IP地址192.168.10.242可進行訪問,在點擊按鈕的同時數據能夠在具體位置顯現出來,并不斷地更新數據,達到實時顯示的目的。
由嵌入式Linux的安全可靠及開源特性,機房中各動力環境變量可通過傳感器利用串行接口和數字模擬口接入到嵌入式平臺中,可較全面監控各設備運行狀態以及下達相應指令。本系統主要集中于前端數據的收集,考慮系統的擴展性和安全可靠性,以期適應各種產品及用途范圍。
[1]周水清.動力設備及環境集中監控系統的研究與設計[D].長沙:中南大學,2012.
[2]魯捷,焦振宇,孟凡文.Protel DXP電路設計基礎教程[M].2版.北京:清華大學出版社,2010.
[3]中華人民共和國通信行業標準.YD/T1363-2014通信局(站)電源、空調及環境集中監控系統[S].2014.10.
[4]中華人民共和國國家標準.GB/T 19582.2-2008基于Modbus協議的工業自動化網絡規范 第2部分:Modbus協議在串行鏈路上的實現指南[S].2008.
[5]Modbus Protocol Specification.Modbus over serial line specification and implementation guide V1.02[EB/OL].(2006-12-20)[2008-02].http://www.modbus.org.
[6]Modbus Protocol Specification.Modbus Application Protocol Specification[EB/OL].2006.12.20)[2008.2].http://www.modbus.org.
[7]張桂,金國強,李 輝.基于ARM 平臺Modbus RTU協議的研究與實現[J].電力科學與工程,2011,27(1):23-27.
[8]王書根,王振松,劉曉云.Modbus協議的RS485總線通訊機的設計及應用 [J].自動化與儀表,2011(5):25-28.
[9]彭偉.嵌入式系統CRC循環冗余校驗算法設計研究[J].南京信息工程大學學報,2012,4(3):258-265
[10]王根義.CRC校驗碼算法的研究與實現[J].電子設計工程,2012(9):38-40.
[11]李峻屹.基于ARM9的嵌入式Web遠程實時溫度監控系統設計[J].電子設計工程,2013(7):131-133.
[12]尚宇,任顯利,宋曉茹.基于ARM11的嵌入式Web監控系統的研究與實現 [J].電子設計工程,2015(3):163-165.
[13]劉美,徐小玲,胡映良.基于S3C6410的智能家居系統設計[J].電子設計工程,2014(12):85-88.
[14]李波,關沫.一種基于ARM的嵌入式Web服務器的研究與實現 [J].計算機技術與發展,2013,23(7):134-137.
[15]蔡鍇曄.基于嵌入式Web服務器的機房監控系統的研制[D].哈爾濱:哈爾濱理工大學,2013.
Base on the ARM11 design remote real-time monitoring of temperature and humidity system
LIU Yi,LU Jun
(Wuhan Research Institute of Posts and Telecommunications,Wuhan 430074,China)
With the development of power and environment monitoring system,remote terminal units data acquisition becomes particularly important,and ARM embedded products have more advantages in performance,cost and power consumption.The use of embedded Linux platform ARM11 and collect intelligence data terminal equipment through embedded WEB server set up the data to the Internet in the form of long-distance transmission.According to the intelligent temperature and humidity sensor RS485,Modbus protocol analysis and data extraction of the improved data reception reliability by using cyclic redundancy check method,and using AJAX technology to achieve real-time data on the web page local dynamic update.In the LAN,the client data via the page button at1second update the display by setting the appropriate alarm thresholds to touch in order to achieve remote real-time monitoring results.
RTU; temperature and humidity sensor; Modbus; AJAX real-time refresh; RS485
TN876.3;TN919.5
A
1674-6236(2017)17-0133-04
2016-07-13稿件編號:201607101
劉 易(1990—),男,湖北公安人,碩士研究生。研究方向:嵌入式動力環境監控系統。