劉 易,盧 軍
(武漢郵電科學(xué)研究院 湖北 武漢430074)
基于ARM11的遠(yuǎn)程溫濕度實時監(jiān)控系統(tǒng)設(shè)計
劉 易,盧 軍
(武漢郵電科學(xué)研究院 湖北 武漢430074)
隨著動力環(huán)境監(jiān)控系統(tǒng)的不斷發(fā)展,遠(yuǎn)程終端設(shè)備數(shù)據(jù)的采集變得格外重要,而ARM嵌入式產(chǎn)品在性能、成本和功耗上更具優(yōu)勢。利用ARM11和Linux嵌入式平臺采集智能化終端設(shè)備數(shù)據(jù),通過搭建嵌入式WEB服務(wù)器將數(shù)據(jù)以因特網(wǎng)形式進(jìn)行遠(yuǎn)距離傳輸。針對智能化RS485型溫濕度傳感器,對其進(jìn)行Modbus協(xié)議解析并提取數(shù)據(jù),利用循環(huán)冗余校驗方法提高了數(shù)據(jù)接收的可靠性,并采用AJAX實時刷新技術(shù)實現(xiàn)數(shù)據(jù)在網(wǎng)頁上局部動態(tài)的更新。局域網(wǎng)內(nèi),客戶端通過頁面中按鈕實現(xiàn)數(shù)據(jù)以1秒更新顯示,通過設(shè)定相應(yīng)門限來觸動報警以期達(dá)到遠(yuǎn)程實時監(jiān)控效果。
遠(yuǎn)程終端設(shè)備;溫濕度傳感器;Modbus;AJAX實時刷新;RS485
隨著智能系統(tǒng)的不斷發(fā)展,機房動力環(huán)境的監(jiān)控越來越重要[1]。為保證機房的正常運行,提高其工作效率,節(jié)約人力成本,監(jiān)控機房的動力環(huán)境就顯得尤為必要。結(jié)合當(dāng)前機房監(jiān)控的趨勢,利用易于編程、可移植性好、可操作性強、價格低廉的Linux操作系統(tǒng)結(jié)合低功耗高可靠的ARM嵌入式技術(shù)和遠(yuǎn)程終端Modbus技術(shù),最終能夠?qū)崿F(xiàn)遠(yuǎn)程對數(shù)據(jù)進(jìn)行遙信、遙控和遙調(diào)[1]。
ARM處理器在經(jīng)歷了包括ARM7、ARM9等多個發(fā)展歷程后,ARM11已成為成熟的嵌入式應(yīng)用,也越來越多地向更高端的應(yīng)用產(chǎn)品發(fā)展。ARM11在便攜式和無線應(yīng)用上,提供了超高性能,并且使成本和功耗減到最小。ARM11的微架構(gòu)特性保證系統(tǒng)性能可以從基本的350~500 MHz范圍擴展到1 GHz以上。其微架構(gòu)的高效率表現(xiàn),根據(jù)不同的應(yīng)用來調(diào)節(jié)時鐘頻率和電源電壓,從而在性能和功耗之間達(dá)到最佳。
本系統(tǒng)在軟件和硬件上采用模塊化和層次化的設(shè)計,增添電源電路模塊和RS485轉(zhuǎn)TTL模塊,使得系統(tǒng)在硬件上更加靈活。利用ARM11平臺Linux3.0.1內(nèi)核系統(tǒng),移植并搭建相應(yīng)嵌入式Web服務(wù)器BOA,并用Ajax技術(shù)對相應(yīng)網(wǎng)頁進(jìn)行局部數(shù)據(jù)刷新,最終將數(shù)據(jù)通過以太網(wǎng)遠(yuǎn)程進(jìn)行傳輸?shù)竭_(dá)客戶端,在相應(yīng)頁面上選擇按鈕實現(xiàn)對遠(yuǎn)程終端設(shè)備進(jìn)行控制。
系統(tǒng)結(jié)構(gòu)主要分為兩個部分,第一部分是前端數(shù)據(jù)的采集,主要是將水浸、煙霧、溫濕度等傳感器的數(shù)據(jù)進(jìn)行采集;第二部分是將采集到的數(shù)據(jù)通過Internet遠(yuǎn)距離傳送并控制。系統(tǒng)框架結(jié)構(gòu)如圖1所示。
圖1 溫濕度實時監(jiān)控系統(tǒng)組成結(jié)構(gòu)圖
核心板采用Linux 3.0.1嵌入式操作系統(tǒng),通過串口接入智能型溫濕度傳感器,利用RS485相關(guān)驅(qū)動程序來對傳感器進(jìn)行數(shù)據(jù)的接收和發(fā)送。在數(shù)據(jù)傳輸方面,遠(yuǎn)程通過有線以太網(wǎng)傳輸,能夠在客戶端通過網(wǎng)頁進(jìn)行訪問,也可通過GSM無線傳輸,將相應(yīng)的數(shù)據(jù)傳送到遠(yuǎn)端手機上。
在采集到數(shù)據(jù)后,可以對相關(guān)數(shù)據(jù)進(jìn)行分類存儲,同時通過移植嵌入式Web服務(wù)器,并通過CGI(Common Gateway Interface)完成靜態(tài)頁面與服務(wù)器之間的動態(tài)交互。
由于板載硬件電路部分RS485所接為TTL電平,與485型傳感器電平不一致,需要進(jìn)行相應(yīng)的轉(zhuǎn)換才能夠正常通訊。因此在ARM11板上擴展設(shè)計TTL轉(zhuǎn)RS-485模塊,保證主板物理接口即電平特性和軟件驅(qū)動與溫濕度傳感器之間能夠進(jìn)行有效的數(shù)據(jù)交互。根據(jù)RS485高擴展性的特性,可設(shè)置多個節(jié)點以接入多個相關(guān)設(shè)備,實現(xiàn)全方位多類型數(shù)據(jù)采集。作為工控設(shè)備的485型溫濕度傳感器,為保證傳感器能夠正常運行,需提供10~30 V之間的電壓[2],因此設(shè)計了12 V的電源電路模塊。
圖2 擴展485型傳感器連接圖
多個485設(shè)備接入主機框架如圖2所示,其中485總線上可接入多個相關(guān)設(shè)備,理論上可接入128個設(shè)備[3]。在沒有中繼器的RS485-Modbus系統(tǒng)中,最多允許接入32臺設(shè)備[4-5]。
在接入485型溫濕度傳感器前,需要了解該設(shè)備工作原理及數(shù)據(jù)的傳輸形式。通過設(shè)備用戶手冊了解,其采用Modbus-RTU通訊規(guī)約,采用2線制數(shù)據(jù)收發(fā)。
設(shè)備接入監(jiān)控主機需要設(shè)置相應(yīng)的參數(shù),如表1所示,當(dāng)設(shè)備使用RTU模式在Modbus串行鏈路通信,所有鏈路上設(shè)備傳輸模式和串行口參數(shù)必須相同[5-6]。
表1 設(shè)備通訊基本參數(shù)
報文中有效數(shù)據(jù)為8位數(shù)據(jù)位,兩個4位十六進(jìn)制符,數(shù)據(jù)收發(fā)通過相同的比特率讀取其中數(shù)據(jù)。
數(shù)據(jù)幀結(jié)構(gòu)采用Modbus-RTU通訊規(guī)約,開始和結(jié)束結(jié)構(gòu)需大于等于4字節(jié)時間[5]。作為設(shè)備唯一識別的地址碼,1字節(jié)理論可接入128個設(shè)備[7-8]。功能碼為主機所發(fā)指令功能指示,溫濕度傳感器采用0x03功能碼 (讀取寄存器數(shù)據(jù))。錯誤校驗采用16位2字節(jié)CRC碼,校驗碼低位字節(jié)在前高位在后。
主機讀取傳感器數(shù)據(jù),需要主機發(fā)送相應(yīng)問詢幀,然后傳感器給出應(yīng)答數(shù)據(jù)。如表2所示為主機問詢幀結(jié)構(gòu),目的是通過主機來讀取傳感器中的數(shù)據(jù)。主機通過寫數(shù)據(jù)到傳感器,下面的命令碼是告訴傳感器主機需要讀取0x00和0x01兩個寄存器的數(shù)據(jù)。
表2 主機問詢幀結(jié)構(gòu)
當(dāng)主機發(fā)送如表2所示的一幀數(shù)據(jù)后,傳感器會立即發(fā)送如表3所示的應(yīng)答幀。其中,地址碼和功能碼同問詢幀一致,為0x01和0x03。有效字節(jié)根據(jù)有效數(shù)據(jù)來計算,因為溫濕度傳感器中需要的是溫度和濕度,所以只有數(shù)據(jù)一和數(shù)據(jù)二,1位有效字節(jié)碼為0x04,代表4字節(jié)數(shù)據(jù)。校驗碼是16位循環(huán)冗余校驗,每8位字符與寄存器中的值異或,通過移位置零等操作,當(dāng)報文中字節(jié)都運算之后得到的最終值即為 CRC[9-10]。
表3 從機應(yīng)答幀結(jié)構(gòu)表
實驗中在保證溫濕度傳感器與主機設(shè)置參數(shù)一致的情況下,發(fā)送如表2所示的讀寄存器數(shù)據(jù)命令后,在Linux系統(tǒng)中運行相應(yīng)的程序,提取出應(yīng)答幀中4字節(jié)數(shù)據(jù),然后將其轉(zhuǎn)換為對應(yīng)的浮點型十進(jìn)制數(shù)值,最終得到如圖3所示的結(jié)果。
圖3 采集溫濕度傳感器數(shù)據(jù)圖
本實驗在軟件上采用數(shù)組的形式,能夠方便提取出對應(yīng)的數(shù)據(jù),然后間隔1秒發(fā)送詢問幀,對應(yīng)地主機接收相應(yīng)的溫度和濕度值并能直觀地顯示到界面當(dāng)中。為保證接收的數(shù)據(jù)準(zhǔn)確,提高傳輸可靠性,需要通過在接收到數(shù)據(jù)時進(jìn)行CRC的比對。即通過對應(yīng)答幀當(dāng)中除校驗碼外的其他數(shù)據(jù)進(jìn)行CRC驗算,其驗算值同應(yīng)答幀校驗碼進(jìn)行比對,如一致則接收數(shù)據(jù)正確,否則,重新接收數(shù)據(jù)。這樣,在出現(xiàn)錯誤信息告警時,能夠很清楚知道系統(tǒng)出現(xiàn)的問題在哪,可提高系統(tǒng)可靠性。
監(jiān)控主機采集到溫濕度傳感器數(shù)據(jù)之后,需要將數(shù)據(jù)通過以太網(wǎng)上傳到遠(yuǎn)端,在網(wǎng)頁上輸入相應(yīng)的服務(wù)器IP地址就可進(jìn)行查看數(shù)據(jù)。將數(shù)據(jù)上傳就需要在ARM11平臺上移植嵌入式Web服務(wù)器,遠(yuǎn)端客戶機通過訪問服務(wù)器就可以查看相應(yīng)的數(shù)據(jù)。
運行在嵌入式Linux下的Web服務(wù)器目前比較流行的是BOA服務(wù)器,其設(shè)計目標(biāo)是速度和安全,智能家居的網(wǎng)關(guān)大部分也采用該Web服務(wù)器作為主要架構(gòu)[11]。它是一種非常小巧的Web服務(wù)器,其可執(zhí)行代碼非常小只有大約60 kB左右。作為一種單任務(wù)的Web服務(wù)器,BOA只能依次完成用戶的請求,而不會處理新產(chǎn)生出來的進(jìn)程。但BOA支持CGI,能夠為CGI程序分出一個進(jìn)程來執(zhí)行[12]。
本系統(tǒng)采用BOA服務(wù)器,其移植過程需要下載相應(yīng)的源碼包后,再進(jìn)行相應(yīng)的修改編譯執(zhí)行,復(fù)制到相應(yīng)的目錄下并進(jìn)行配置,最后運行啟動服務(wù)器,在網(wǎng)頁上輸入平臺IP進(jìn)行查看BOA移植是否成功。由于平臺Linux內(nèi)核已經(jīng)帶有BOA服務(wù)器,所以未進(jìn)行移植BOA服務(wù)器的操作。
CGI的中文可表示為通用網(wǎng)關(guān)接口,其實際上是一個在Web服務(wù)器上運行的應(yīng)用程序,通過客戶端瀏覽器輸入而觸發(fā),提供客戶端HTML頁面的接口[13]。通過這種接口可以讓網(wǎng)絡(luò)用戶訪問Web服務(wù)器和運行遠(yuǎn)程服務(wù)器系統(tǒng)所在主機的應(yīng)用程序,通過相關(guān)程序控制相關(guān)的硬件,并把外部請求產(chǎn)生的結(jié)果轉(zhuǎn)回給應(yīng)用程序,再進(jìn)一步格式化輸出為HTML格式,最終反饋到瀏覽器端。這樣從用戶處接受和返回的方法就完成了客戶端HTML靜態(tài)頁面和Web服務(wù)器的動態(tài)交互。CGI是運行在服務(wù)器上的,和其他開發(fā)動態(tài)頁面的方式不同。要想實現(xiàn)遠(yuǎn)程控制某個嵌入式設(shè)備,在嵌入式方面首選CGI的方式進(jìn)行網(wǎng)頁的動態(tài)交互。
CGI在系統(tǒng)中與程序和服務(wù)器之間的關(guān)系如圖4所示,相當(dāng)于處于客戶和Web服務(wù)器之間的一個過渡,通過HTTP協(xié)議實現(xiàn)的客戶端與服務(wù)端之間的通信。首先客戶端瀏覽器通過HTML表單請求指定生成一個對應(yīng)的CGI應(yīng)用程序的URL,然后服務(wù)器收到請求并執(zhí)行指定的CGI應(yīng)用程序,此時CGI應(yīng)用程序根據(jù)用戶輸入操作做出響應(yīng),將產(chǎn)生出來的數(shù)據(jù)結(jié)果處理成為HTML表單形式回送給Web服務(wù)器,最后顯示客戶端瀏覽器頁面上。CGI程序的輸出數(shù)據(jù)的語法格式必須和相應(yīng)消息的語法格式一致,才能根據(jù)操作得到正確的信息。
圖4 CGI系統(tǒng)架構(gòu)圖
AJAX(Asynchronous Java Script and XML)是異步Java Script和XML,并非縮寫詞,而是由Jesse James Gaiiett創(chuàng)造的名詞,是指一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù)[14]。其核心是通過使用Java Script對象XMLHttpRequest向服務(wù)器發(fā)送異步請求。
如果要得到服務(wù)器上文件或數(shù)據(jù)庫中的信息,或者向服務(wù)器發(fā)出請求,就必須制作一個HTML表單向服務(wù)器GET或POST數(shù)據(jù),同時用戶需要點擊相關(guān)按鈕操作來發(fā)送或獲取所需信息,然后等待服務(wù)器給出的響應(yīng),最后會加載一張新的頁面呈現(xiàn)出結(jié)果[15]。針對這樣的情況Web應(yīng)用程序運行會變得緩慢,且界面呈現(xiàn)也不夠友好。通過利用AJAX技術(shù),可以在不重新加載頁面,采用XMLHttpRequest對象直接獲取服務(wù)器傳遞的數(shù)據(jù),即局部刷新數(shù)據(jù)。系統(tǒng)中腳本程序會不斷請求服務(wù)器,客戶端瀏覽器在同一個頁面下,將會看到內(nèi)容按照一定的時間不斷更新變化。
嵌入式Linux系統(tǒng)中編程語言為C語言,所以在有Web服務(wù)器的基礎(chǔ)上移植相應(yīng)的CGIC庫,經(jīng)過修改、編譯、配置、安裝和測試等一系列操作完成后,然后再編寫HTML網(wǎng)頁。制作一個主頁和溫濕度采集頁面,建立一個Java Scrip腳本文件以實現(xiàn)AJAX異步訪問服務(wù)器,編譯運行主程序加載到開發(fā)平臺上客戶端瀏覽器就可以進(jìn)行操作得到相應(yīng)的顯示。
本系統(tǒng)在同一網(wǎng)段通過另一臺PC (IP為192.168.10.13)上的瀏覽器輸入ARM11嵌入式平臺的IP地址192.168.10.242可進(jìn)行訪問,在點擊按鈕的同時數(shù)據(jù)能夠在具體位置顯現(xiàn)出來,并不斷地更新數(shù)據(jù),達(dá)到實時顯示的目的。
由嵌入式Linux的安全可靠及開源特性,機房中各動力環(huán)境變量可通過傳感器利用串行接口和數(shù)字模擬口接入到嵌入式平臺中,可較全面監(jiān)控各設(shè)備運行狀態(tài)以及下達(dá)相應(yīng)指令。本系統(tǒng)主要集中于前端數(shù)據(jù)的收集,考慮系統(tǒng)的擴展性和安全可靠性,以期適應(yīng)各種產(chǎn)品及用途范圍。
[1]周水清.動力設(shè)備及環(huán)境集中監(jiān)控系統(tǒng)的研究與設(shè)計[D].長沙:中南大學(xué),2012.
[2]魯捷,焦振宇,孟凡文.Protel DXP電路設(shè)計基礎(chǔ)教程[M].2版.北京:清華大學(xué)出版社,2010.
[3]中華人民共和國通信行業(yè)標(biāo)準(zhǔn).YD/T1363-2014通信局(站)電源、空調(diào)及環(huán)境集中監(jiān)控系統(tǒng)[S].2014.10.
[4]中華人民共和國國家標(biāo)準(zhǔn).GB/T 19582.2-2008基于Modbus協(xié)議的工業(yè)自動化網(wǎng)絡(luò)規(guī)范 第2部分:Modbus協(xié)議在串行鏈路上的實現(xiàn)指南[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協(xié)議的研究與實現(xiàn)[J].電力科學(xué)與工程,2011,27(1):23-27.
[8]王書根,王振松,劉曉云.Modbus協(xié)議的RS485總線通訊機的設(shè)計及應(yīng)用 [J].自動化與儀表,2011(5):25-28.
[9]彭偉.嵌入式系統(tǒng)CRC循環(huán)冗余校驗算法設(shè)計研究[J].南京信息工程大學(xué)學(xué)報,2012,4(3):258-265
[10]王根義.CRC校驗碼算法的研究與實現(xiàn)[J].電子設(shè)計工程,2012(9):38-40.
[11]李峻屹.基于ARM9的嵌入式Web遠(yuǎn)程實時溫度監(jiān)控系統(tǒng)設(shè)計[J].電子設(shè)計工程,2013(7):131-133.
[12]尚宇,任顯利,宋曉茹.基于ARM11的嵌入式Web監(jiān)控系統(tǒng)的研究與實現(xiàn) [J].電子設(shè)計工程,2015(3):163-165.
[13]劉美,徐小玲,胡映良.基于S3C6410的智能家居系統(tǒng)設(shè)計[J].電子設(shè)計工程,2014(12):85-88.
[14]李波,關(guān)沫.一種基于ARM的嵌入式Web服務(wù)器的研究與實現(xiàn) [J].計算機技術(shù)與發(fā)展,2013,23(7):134-137.
[15]蔡鍇曄.基于嵌入式Web服務(wù)器的機房監(jiān)控系統(tǒng)的研制[D].哈爾濱:哈爾濱理工大學(xué),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—),男,湖北公安人,碩士研究生。研究方向:嵌入式動力環(huán)境監(jiān)控系統(tǒng)。