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