王夢瀟,李璐
(中國電子科技集團(tuán)公司 第二十八研究所,南京 210007)
?
基于STM32與AJAX的遠(yuǎn)程監(jiān)控系統(tǒng)服務(wù)器設(shè)計
王夢瀟,李璐
(中國電子科技集團(tuán)公司 第二十八研究所,南京 210007)
摘要:基于STM32微控制器設(shè)計了一種嵌入式遠(yuǎn)程監(jiān)控系統(tǒng)服務(wù)器,可運(yùn)用于數(shù)據(jù)中心遠(yuǎn)程監(jiān)控系統(tǒng)中。嵌入式Web服務(wù)器是遠(yuǎn)程監(jiān)控系統(tǒng)的核心組成部分,實現(xiàn)傳感器數(shù)據(jù)采集,并向遠(yuǎn)程監(jiān)控中心提供HTTP網(wǎng)絡(luò)服務(wù)。針對通用網(wǎng)關(guān)接口(CGI)技術(shù)網(wǎng)頁刷新閃爍問題,采用了AJAX動態(tài)網(wǎng)頁技術(shù),改善了監(jiān)控數(shù)據(jù)顯示效果。同時,該嵌入式Web服務(wù)器具有強(qiáng)大的功能可擴(kuò)展性,可廣泛應(yīng)用于遠(yuǎn)程監(jiān)控系統(tǒng)。
關(guān)鍵詞:STM32;嵌入式Web服務(wù)器;AJAX;遠(yuǎn)程監(jiān)控
引言
隨著物聯(lián)網(wǎng)產(chǎn)業(yè)的高速發(fā)展,網(wǎng)絡(luò)化、分散化、規(guī)?;蔀檫h(yuǎn)程監(jiān)控系統(tǒng)發(fā)展的必然趨勢。嵌入式Web服務(wù)器[1]將互聯(lián)網(wǎng)技術(shù)與嵌入式系統(tǒng)相結(jié)合,與傳統(tǒng)PC服務(wù)器相比,具有成本低、部署靈活、與設(shè)備交互方便等優(yōu)勢,尤其適用于嵌入式設(shè)備較多的監(jiān)控系統(tǒng)中。本文針對數(shù)據(jù)中心監(jiān)控應(yīng)用場景,設(shè)計了一種基于STM32的遠(yuǎn)程監(jiān)控服務(wù)器,實現(xiàn)了基于B/S架構(gòu)的數(shù)據(jù)中心監(jiān)控服務(wù),并采用AJAX技術(shù)優(yōu)化了動態(tài)網(wǎng)頁顯示效果,具有低功耗、低成本、易于升級維護(hù)、功能擴(kuò)展能力強(qiáng)等優(yōu)點(diǎn)。同時該嵌入式服務(wù)器也可應(yīng)用于諸如電力、工業(yè)生產(chǎn)等其他監(jiān)控現(xiàn)場,實現(xiàn)無人值守,大大降低運(yùn)維成本。
1總體架構(gòu)設(shè)計
圖1 遠(yuǎn)程監(jiān)控系統(tǒng)總體架構(gòu)
遠(yuǎn)程監(jiān)控系統(tǒng)由傳感器數(shù)據(jù)采集、功率遠(yuǎn)程監(jiān)控、人機(jī)交互控制、嵌入式Web服務(wù)器及遠(yuǎn)程監(jiān)控中心客戶端等部分構(gòu)成,其系統(tǒng)構(gòu)架如圖1所示。傳感器數(shù)據(jù)采集部分主要實現(xiàn)溫度、濕度、煙霧、水浸等綜合環(huán)境信息的采集,各傳感器通過RS485或1Wire總線與嵌入式Web服務(wù)器互連。
功率遠(yuǎn)程監(jiān)控部分由多路負(fù)載檢測模塊組成,負(fù)載檢測模塊為具備功率檢測功能的智能電源分配單元(PDU),內(nèi)部集成微控制器、功率檢測芯片、繼電器開關(guān)等單元,可為數(shù)據(jù)中心服務(wù)器、交換機(jī)等設(shè)備供電,具有功率采集及遠(yuǎn)程開關(guān)控制等功能。各PDU模塊通過RS485總線與嵌入式Web服務(wù)器互聯(lián)通信,一方面上報功率數(shù)據(jù),另一方面響應(yīng)遠(yuǎn)程監(jiān)控中心控制指令,實現(xiàn)設(shè)備遠(yuǎn)程開關(guān)控制等功能。
嵌入式Web服務(wù)器是遠(yuǎn)程監(jiān)控系統(tǒng)的控制核心,部署于數(shù)據(jù)中心監(jiān)控現(xiàn)場,通過RS485、1Wire總線擴(kuò)展各類傳感器模塊,采集監(jiān)控現(xiàn)場溫濕度、設(shè)備功率、煙霧水浸等環(huán)境和電力參數(shù),并向遠(yuǎn)程監(jiān)控中心提供基于網(wǎng)頁的監(jiān)控管理服務(wù)。
遠(yuǎn)程監(jiān)控中心客戶端為監(jiān)控中心終端平臺,用戶可通過Web瀏覽器登陸部署于數(shù)據(jù)中心的嵌入式Web服務(wù)器,獲取各類監(jiān)控服務(wù)。
2嵌入式Web服務(wù)器硬件設(shè)計
服務(wù)器端硬件主要由STM32F407IGT6微控制器、存儲模塊、傳感器擴(kuò)展總線、以太網(wǎng)通信模塊及人機(jī)交互系統(tǒng)構(gòu)成,其硬件架構(gòu)如圖2所示。
圖2 嵌入式Web服務(wù)器硬件架構(gòu)
微控制器是嵌入式Web服務(wù)器數(shù)據(jù)采集與網(wǎng)絡(luò)通信的處理核心,本文選用了意法半導(dǎo)體公司的STM32F407IGT6,該芯片基于ARM Cortex-M4內(nèi)核,具有高可靠性、高性能、低功耗、片內(nèi)資源豐富等優(yōu)勢,不僅滿足工控領(lǐng)域可靠性與性能需求,也可滿足未來功能擴(kuò)展需求,適用于搭建嵌入式Web服務(wù)器硬件平臺。
存儲模塊由外部SRAM及NAND Flash組成,外部SRAM主要用于為數(shù)據(jù)量較大的網(wǎng)頁開辟數(shù)據(jù)緩沖區(qū),NAND Flash用于存儲各類網(wǎng)頁資源,如網(wǎng)頁腳本、圖片資源等。外部存儲芯片的使用提高了嵌入式Web服務(wù)器的存儲能力,豐富了服務(wù)器的網(wǎng)頁資源,提升了用戶體驗。
以太網(wǎng)通信模塊選用DP83848CVV物理層芯片(PHY芯片),該芯片支持RII、MII兩種模式,傳輸速度快、穩(wěn)定性好。
傳感器擴(kuò)展總線主要包括RS485和1Wire總線,RS485總線是常用的傳感器數(shù)據(jù)接口總線,用于擴(kuò)展煙霧、水浸等室內(nèi)環(huán)境監(jiān)控傳感器;1Wire總線僅占用單個GPIO端口資源,具有結(jié)構(gòu)簡單、擴(kuò)展性強(qiáng)等優(yōu)點(diǎn),用于接入單總線溫度、濕度傳感器。
此外,嵌入式Web服務(wù)器配備了LCD顯示屏、功能按鍵開關(guān)、蜂鳴器和指示燈,用戶可在本地對Web服務(wù)器進(jìn)行配置,方便設(shè)備的維護(hù)管理。
3嵌入式Web服務(wù)器軟件設(shè)計
服務(wù)器端軟件架構(gòu)按業(yè)務(wù)邏輯可分為驅(qū)動層、支撐層及應(yīng)用層,軟件體系架構(gòu)如圖3所示。
圖3 嵌入式Web服務(wù)器軟件架構(gòu)
3.1驅(qū)動層
驅(qū)動層位于嵌入式Web服務(wù)器軟件架構(gòu)的最底層,實現(xiàn)了微控制器與底層硬件資源的數(shù)據(jù)交互與功能控制。其中GPIO、中斷、USART、MAC為STM32內(nèi)部資源,SRAM、NAND Flash及PHY為外圍擴(kuò)展芯片資源。本文移植了NAND Flash、外部SRAM及PHY芯片的驅(qū)動代碼,并根據(jù)硬件連接關(guān)系修改了驅(qū)動的配置參數(shù),使其適用于本文設(shè)計的硬件架構(gòu)。
3.2支撐層
支撐層是服務(wù)器端軟件體系架構(gòu)的中間層,向下與驅(qū)動層接口對接,獲取底層數(shù)據(jù)信息;向上提供業(yè)務(wù)基礎(chǔ)功能接口,包括文件系統(tǒng)、STM32固件庫及LwIP協(xié)議棧,是應(yīng)用層各業(yè)務(wù)邏輯的功能支撐。
文件系統(tǒng)實現(xiàn)應(yīng)用層對NAND Flash讀寫的訪問控制,本文采用FS_CM3內(nèi)核實現(xiàn)的文件系統(tǒng),支持fopen、fclose、fread、fwrite、fseek等標(biāo)準(zhǔn)文件操作接口函數(shù),應(yīng)用程序可通過文件接口函數(shù)實現(xiàn)NAND Flash的讀寫操作,完成復(fù)雜網(wǎng)頁腳本、圖片資源的存取。
STM32固件庫為意法半導(dǎo)體官方提供的微控制器內(nèi)部資源交互接口,實現(xiàn)了GPIO讀寫、內(nèi)部存儲訪問、中斷服務(wù)響應(yīng)及各類接口數(shù)據(jù)收發(fā)等功能。
LwIP為輕量級TCP/IP協(xié)議棧[2],實現(xiàn)了TCP/IP各層協(xié)議,為上層HTTP協(xié)議提供底層支撐,是嵌入式Web服務(wù)器HTTP協(xié)議實現(xiàn)的技術(shù)基礎(chǔ),廣泛應(yīng)用于資源受限的嵌入式平臺。本文移植了LwIP協(xié)議棧作為Web服務(wù)器網(wǎng)絡(luò)架構(gòu)支撐,基于TCP傳輸層接口實現(xiàn)了HTTP服務(wù)。
3.3應(yīng)用層
應(yīng)用層是服務(wù)器端軟件的終端實現(xiàn),包括數(shù)據(jù)處理、HTTP協(xié)議及AJAX動態(tài)網(wǎng)頁交互技術(shù)。數(shù)據(jù)處理為嵌入式Web服務(wù)器與各類傳感器交互業(yè)務(wù)的總稱,包括數(shù)據(jù)采集、傳輸、顯示等;HTTP協(xié)議是Web服務(wù)器的基礎(chǔ)協(xié)議,為遠(yuǎn)程監(jiān)控中心提供網(wǎng)頁訪問服務(wù);此外,為了優(yōu)化監(jiān)控網(wǎng)頁的動態(tài)顯示效果,該Web服務(wù)器嵌入了AJAX服務(wù)。HTTP協(xié)議與AJAX為嵌入式Web應(yīng)用服務(wù)的關(guān)鍵技術(shù),下面將討論其實現(xiàn)方法。
3.3.1HTTP協(xié)議實現(xiàn)
超文本傳輸協(xié)議(HTTP)定義了瀏覽器與服務(wù)器的交互方法與報文格式[3],瀏覽器端首先與服務(wù)器建立TCP連接,發(fā)起網(wǎng)頁請求,然后服務(wù)器解析瀏覽器發(fā)送的申請報文,根據(jù)報文請求調(diào)用本地資源,生成響應(yīng)報文發(fā)送回瀏覽器,接著瀏覽器端解析服務(wù)器響應(yīng)報文,最終在Web中顯示網(wǎng)頁腳本內(nèi)容。
HTTP軟件實現(xiàn)流程如圖4所示,嵌入式Web服務(wù)器基于LwIP協(xié)議棧TCP數(shù)據(jù)傳輸接口,接收、解析瀏覽器請求報文,獲取其請求方式、請求類型及請求資源名稱。若請求包含CGI數(shù)據(jù)交互請求,如HTML腳本中表單提交操作,則需要根據(jù)交互請求調(diào)用服務(wù)端相應(yīng)的CGI回調(diào)函數(shù),完成服務(wù)器與瀏覽器端的數(shù)據(jù)交互;若請求為網(wǎng)頁訪問,則需要獲取報文中網(wǎng)頁資源名稱,并通過文件系統(tǒng)接口調(diào)用NAND Flash中存儲的網(wǎng)頁資源。報文解析處理完成后,服務(wù)器根據(jù)HTTP協(xié)議規(guī)定將本地端網(wǎng)頁資源封裝為HTTP響應(yīng)報文,發(fā)送回瀏覽器端,瀏覽器將按協(xié)議解析報文,獲取網(wǎng)頁腳本,并在瀏覽器頁面中展現(xiàn)給用戶。
圖4 HTTP軟件實現(xiàn)流程
3.3.2AJAX技術(shù)實現(xiàn)
由于CGI僅提供基于頁面的交互刷新機(jī)制,系統(tǒng)監(jiān)控頁面在動態(tài)刷新時必須每次都從服務(wù)器端獲取完整的網(wǎng)頁腳本信息并顯示,造成網(wǎng)頁閃爍、服務(wù)器資源耗費(fèi)高等問題。AJAX是一種基于異步響應(yīng)的快速動態(tài)網(wǎng)頁交互技術(shù)[4],即瀏覽器在刷新頁面時,僅需從服務(wù)端獲取待更新的網(wǎng)頁腳本,而無需重載整個頁面,因而解決了CGI刷新頁面的閃爍問題,并有效降低了服務(wù)端資源耗費(fèi)。AJAX技術(shù)具體實現(xiàn)包含AJAX網(wǎng)頁腳本設(shè)計與服務(wù)器端AJAX報文解析修改兩部分。
AJAX網(wǎng)頁腳本需要將原動態(tài)監(jiān)控網(wǎng)頁腳本拆分為主頁面及子頁面:主頁面呈現(xiàn)網(wǎng)頁整體框架,并周期性加載子頁面;子頁面即待刷新腳本部分,用于實時顯示監(jiān)控數(shù)據(jù)。主頁面需實現(xiàn)AJAX代理框架,其關(guān)鍵技術(shù)為XMLHttpRequest與JavaScript,前者實現(xiàn)AJAX數(shù)據(jù)交互的基本功能,后者實現(xiàn)AJAX主體框架。子頁面為動態(tài)監(jiān)控數(shù)據(jù)顯示腳本,被主頁面AJAX代理不斷調(diào)用刷新。主頁面與子頁面腳本均存儲于服務(wù)器端NAND Flash中。
服務(wù)器端AJAX報文解析修改需要在HTTP協(xié)議基礎(chǔ)上增加AJAX服務(wù),在圖4所示解析報文后增加AJAX處理部分,如圖5所示。當(dāng)服務(wù)端在報文解析中獲取AJAX請求時,將更新待刷新的網(wǎng)頁腳本,生成響應(yīng)報文。瀏覽器端在接收到刷新腳本后,將采用AJAX機(jī)制在主頁面更新監(jiān)控數(shù)據(jù)內(nèi)容。
圖5 AJAX軟件實現(xiàn)流程
結(jié)語
本文針對數(shù)據(jù)中心應(yīng)用場景,設(shè)計了一種基于STM32微控制器的嵌入式遠(yuǎn)程監(jiān)控系統(tǒng)服務(wù)器,并嵌入AJAX動態(tài)網(wǎng)頁交互技術(shù)。遠(yuǎn)程監(jiān)控中心可通過瀏覽器登陸服務(wù)器,實現(xiàn)數(shù)據(jù)中心綜合環(huán)境及設(shè)備電力參數(shù)監(jiān)控,有低功耗、低成本、部署靈活、方便維護(hù)等優(yōu)點(diǎn),具有廣闊的應(yīng)用前景。
參考文獻(xiàn)
[1] 張麗娜,朱永紅.嵌入式Internet技術(shù)的研究與實現(xiàn)[J].計算機(jī)工程與設(shè)計,2008,29(12):3266-3268.
[2] 張齊,勞熾元.輕量級協(xié)議棧LwIP的分析與改進(jìn)[J].計算機(jī)工程與設(shè)計,2010,31(10):2169-2171.
[3] David Gourley.HTTP權(quán)威指南[M].陳涓,趙振平,
Server of Remote Monitoring System Based on STM32 and AJAX
Wang Mengxiao,Li Lu
(China Electronic Technology Group Corporation No.28 Research Institute,Nanjing 210007,China)
Abstract:An embedded remote monitoring system server based on STM32 microcontroller is designed,which can be applied in the data center.The embedded Web server is the core member of the remote monitoring system,that can not only realize multi-sensor data acquisition,but also provide HTTP web service for the remote monitoring center.Aiming at the screen flashing problem during page refreshing caused by CGI technology,AJAX is applied to the embedded server.Meanwhile,the embedded server has strong functional scalability,so that it can be widely used in the field of the remote monitoring system.
Key words:STM32;embedded Web server;AJAX;remote monitor
中圖分類號:TP311.1
文獻(xiàn)標(biāo)識碼:A