王梦潇,李璐
(中国电子科技集团公司 第二十八研究所,南京 210007)
基于STM32与AJAX的远程监控系统服务器设计
王梦潇,李璐
(中国电子科技集团公司 第二十八研究所,南京 210007)
摘要:基于STM32微控制器设计了一种嵌入式远程监控系统服务器,可运用于数据中心远程监控系统中。嵌入式Web服务器是远程监控系统的核心组成部分,实现传感器数据采集,并向远程监控中心提供HTTP网络服务。针对通用网关接口(CGI)技术网页刷新闪烁问题,采用了AJAX动态网页技术,改善了监控数据显示效果。同时,该嵌入式Web服务器具有强大的功能可扩展性,可广泛应用于远程监控系统。
关键词:STM32;嵌入式Web服务器;AJAX;远程监控
引言
随着物联网产业的高速发展,网络化、分散化、规模化成为远程监控系统发展的必然趋势。嵌入式Web服务器[1]将互联网技术与嵌入式系统相结合,与传统PC服务器相比,具有成本低、部署灵活、与设备交互方便等优势,尤其适用于嵌入式设备较多的监控系统中。本文针对数据中心监控应用场景,设计了一种基于STM32的远程监控服务器,实现了基于B/S架构的数据中心监控服务,并采用AJAX技术优化了动态网页显示效果,具有低功耗、低成本、易于升级维护、功能扩展能力强等优点。同时该嵌入式服务器也可应用于诸如电力、工业生产等其他监控现场,实现无人值守,大大降低运维成本。
1总体架构设计
图1 远程监控系统总体架构
远程监控系统由传感器数据采集、功率远程监控、人机交互控制、嵌入式Web服务器及远程监控中心客户端等部分构成,其系统构架如图1所示。传感器数据采集部分主要实现温度、湿度、烟雾、水浸等综合环境信息的采集,各传感器通过RS485或1Wire总线与嵌入式Web服务器互连。
功率远程监控部分由多路负载检测模块组成,负载检测模块为具备功率检测功能的智能电源分配单元(PDU),内部集成微控制器、功率检测芯片、继电器开关等单元,可为数据中心服务器、交换机等设备供电,具有功率采集及远程开关控制等功能。各PDU模块通过RS485总线与嵌入式Web服务器互联通信,一方面上报功率数据,另一方面响应远程监控中心控制指令,实现设备远程开关控制等功能。
嵌入式Web服务器是远程监控系统的控制核心,部署于数据中心监控现场,通过RS485、1Wire总线扩展各类传感器模块,采集监控现场温湿度、设备功率、烟雾水浸等环境和电力参数,并向远程监控中心提供基于网页的监控管理服务。
远程监控中心客户端为监控中心终端平台,用户可通过Web浏览器登陆部署于数据中心的嵌入式Web服务器,获取各类监控服务。
2嵌入式Web服务器硬件设计
服务器端硬件主要由STM32F407IGT6微控制器、存储模块、传感器扩展总线、以太网通信模块及人机交互系统构成,其硬件架构如图2所示。
图2 嵌入式Web服务器硬件架构
微控制器是嵌入式Web服务器数据采集与网络通信的处理核心,本文选用了意法半导体公司的STM32F407IGT6,该芯片基于ARM Cortex-M4内核,具有高可靠性、高性能、低功耗、片内资源丰富等优势,不仅满足工控领域可靠性与性能需求,也可满足未来功能扩展需求,适用于搭建嵌入式Web服务器硬件平台。
存储模块由外部SRAM及NAND Flash组成,外部SRAM主要用于为数据量较大的网页开辟数据缓冲区,NAND Flash用于存储各类网页资源,如网页脚本、图片资源等。外部存储芯片的使用提高了嵌入式Web服务器的存储能力,丰富了服务器的网页资源,提升了用户体验。
以太网通信模块选用DP83848CVV物理层芯片(PHY芯片),该芯片支持RII、MII两种模式,传输速度快、稳定性好。
传感器扩展总线主要包括RS485和1Wire总线,RS485总线是常用的传感器数据接口总线,用于扩展烟雾、水浸等室内环境监控传感器;1Wire总线仅占用单个GPIO端口资源,具有结构简单、扩展性强等优点,用于接入单总线温度、湿度传感器。
此外,嵌入式Web服务器配备了LCD显示屏、功能按键开关、蜂鸣器和指示灯,用户可在本地对Web服务器进行配置,方便设备的维护管理。
3嵌入式Web服务器软件设计
服务器端软件架构按业务逻辑可分为驱动层、支撑层及应用层,软件体系架构如图3所示。
图3 嵌入式Web服务器软件架构
3.1驱动层
驱动层位于嵌入式Web服务器软件架构的最底层,实现了微控制器与底层硬件资源的数据交互与功能控制。其中GPIO、中断、USART、MAC为STM32内部资源,SRAM、NAND Flash及PHY为外围扩展芯片资源。本文移植了NAND Flash、外部SRAM及PHY芯片的驱动代码,并根据硬件连接关系修改了驱动的配置参数,使其适用于本文设计的硬件架构。
3.2支撑层
支撑层是服务器端软件体系架构的中间层,向下与驱动层接口对接,获取底层数据信息;向上提供业务基础功能接口,包括文件系统、STM32固件库及LwIP协议栈,是应用层各业务逻辑的功能支撑。
文件系统实现应用层对NAND Flash读写的访问控制,本文采用FS_CM3内核实现的文件系统,支持fopen、fclose、fread、fwrite、fseek等标准文件操作接口函数,应用程序可通过文件接口函数实现NAND Flash的读写操作,完成复杂网页脚本、图片资源的存取。
STM32固件库为意法半导体官方提供的微控制器内部资源交互接口,实现了GPIO读写、内部存储访问、中断服务响应及各类接口数据收发等功能。
LwIP为轻量级TCP/IP协议栈[2],实现了TCP/IP各层协议,为上层HTTP协议提供底层支撑,是嵌入式Web服务器HTTP协议实现的技术基础,广泛应用于资源受限的嵌入式平台。本文移植了LwIP协议栈作为Web服务器网络架构支撑,基于TCP传输层接口实现了HTTP服务。
3.3应用层
应用层是服务器端软件的终端实现,包括数据处理、HTTP协议及AJAX动态网页交互技术。数据处理为嵌入式Web服务器与各类传感器交互业务的总称,包括数据采集、传输、显示等;HTTP协议是Web服务器的基础协议,为远程监控中心提供网页访问服务;此外,为了优化监控网页的动态显示效果,该Web服务器嵌入了AJAX服务。HTTP协议与AJAX为嵌入式Web应用服务的关键技术,下面将讨论其实现方法。
3.3.1HTTP协议实现
超文本传输协议(HTTP)定义了浏览器与服务器的交互方法与报文格式[3],浏览器端首先与服务器建立TCP连接,发起网页请求,然后服务器解析浏览器发送的申请报文,根据报文请求调用本地资源,生成响应报文发送回浏览器,接着浏览器端解析服务器响应报文,最终在Web中显示网页脚本内容。
HTTP软件实现流程如图4所示,嵌入式Web服务器基于LwIP协议栈TCP数据传输接口,接收、解析浏览器请求报文,获取其请求方式、请求类型及请求资源名称。若请求包含CGI数据交互请求,如HTML脚本中表单提交操作,则需要根据交互请求调用服务端相应的CGI回调函数,完成服务器与浏览器端的数据交互;若请求为网页访问,则需要获取报文中网页资源名称,并通过文件系统接口调用NAND Flash中存储的网页资源。报文解析处理完成后,服务器根据HTTP协议规定将本地端网页资源封装为HTTP响应报文,发送回浏览器端,浏览器将按协议解析报文,获取网页脚本,并在浏览器页面中展现给用户。
图4 HTTP软件实现流程
3.3.2AJAX技术实现
由于CGI仅提供基于页面的交互刷新机制,系统监控页面在动态刷新时必须每次都从服务器端获取完整的网页脚本信息并显示,造成网页闪烁、服务器资源耗费高等问题。AJAX是一种基于异步响应的快速动态网页交互技术[4],即浏览器在刷新页面时,仅需从服务端获取待更新的网页脚本,而无需重载整个页面,因而解决了CGI刷新页面的闪烁问题,并有效降低了服务端资源耗费。AJAX技术具体实现包含AJAX网页脚本设计与服务器端AJAX报文解析修改两部分。
AJAX网页脚本需要将原动态监控网页脚本拆分为主页面及子页面:主页面呈现网页整体框架,并周期性加载子页面;子页面即待刷新脚本部分,用于实时显示监控数据。主页面需实现AJAX代理框架,其关键技术为XMLHttpRequest与JavaScript,前者实现AJAX数据交互的基本功能,后者实现AJAX主体框架。子页面为动态监控数据显示脚本,被主页面AJAX代理不断调用刷新。主页面与子页面脚本均存储于服务器端NAND Flash中。
服务器端AJAX报文解析修改需要在HTTP协议基础上增加AJAX服务,在图4所示解析报文后增加AJAX处理部分,如图5所示。当服务端在报文解析中获取AJAX请求时,将更新待刷新的网页脚本,生成响应报文。浏览器端在接收到刷新脚本后,将采用AJAX机制在主页面更新监控数据内容。
图5 AJAX软件实现流程
结语
本文针对数据中心应用场景,设计了一种基于STM32微控制器的嵌入式远程监控系统服务器,并嵌入AJAX动态网页交互技术。远程监控中心可通过浏览器登陆服务器,实现数据中心综合环境及设备电力参数监控,有低功耗、低成本、部署灵活、方便维护等优点,具有广阔的应用前景。
参考文献
[1] 张丽娜,朱永红.嵌入式Internet技术的研究与实现[J].计算机工程与设计,2008,29(12):3266-3268.
[2] 张齐,劳炽元.轻量级协议栈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