新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 一种新型嵌入式远程监控系统的设计开发

一种新型嵌入式远程监控系统的设计开发

作者:时间:2009-04-22来源:网络收藏

Web的应用层协议HTTP是Web的核心。HTTP协议实现的客户机/服务器模式是一种请求/响应结构。考虑到系统实现时TCP协议同时支持的连接次数和安全性问题,本文采用HTTP1.0协议,Web服务器每次发送完响应就断开连接。状态码的含义很多,本文使用了两种:当请求网页成功时,返回状态码200,原因短语为OK;当所请求的网页不存在时,返回状态码404,原因短语为NOT FOUND。头部字段名也是可选部分,但是本文使用了其中一个选项Content-Length:指出所发送对象的字节数,以方便程序调试。实体部分就是响应的具体内容,譬如一个HTML网页或者一张图片等等。

本文HTTP协议静态页面的实现需要完成如下内容:首先获取URL中的文件名,接着根据该文件名调用https_calculatehash()函数获取文件句柄,即文件处理入口数据结构中的hash域值,根据该值查找文件的起始地址,然后将文件装入TCP套接字发送缓冲区。当所发送的文件过长而大于发送缓冲区的大小时则会发生缓冲区的溢出问题,本文的解决办法是:首先判断文件的长度,当文件过长时,将文件分割成多个不大于发送缓冲区大小的分段,然后循环发送出去。HTTP协议中静态页面处理的程序流程如图2所示。

图2 HTTP静态页面处理流程图

4.2 CGI的设计与实现

在该中,除了支持静态页面,还必须支持动态内容和动态表单的处理,主要包括动态生成实时采集数据页面和处理控制命令表单。为了实现该功能,本文设计了CGI接口处理程序。

考虑到实际应用情况,本文无需在NE64中移植操作系统,因此为Web服务器创建CGI接口不能照搬标准CGI。首先,本文的Web服务器不能同时运行多个应用程序,每个应用程序的运行都会独占CPU,直到完成才会释放CPU。其次,本文未实现复杂的缓存机制,所以反复执行应用程序是个低速的过程。因此,本文对标准CGI进行了裁减,设计了CGI(Embedded CGI),通过该方法实现了Web服务器的数据的采集和监控。其工作处理流程如图3所示。

图3 CGI处理流程

5 A/D采集子程序

为了实现不同精度、更多路的数据采集,系统既使用了NE64集成的A/D采集模块,又使用了通过SPI外扩的专用的A/D采集芯片TLC2543。因此,A/D采集子程序包含了这两部分的内容。在具体实现时,本文通过变量TLCAD控制调用哪个采集子程序,当TLCAD=100时,调用TLC2543采集子程序;当TLCAD=99时,调用集成A/D采集子程序。系统在采集数据时,模拟量输入信号从最小的通道号依次接入,实际模拟量的个数由变量NE64ADNmb和TLCADNmb决定,分别表示采集精度为10位的模拟量个数以及采集精度为12位的模拟量个数。

在A/D数据采集过程中,不可避免地会受到随机噪声的干扰,从而造成采集数据的不准确,进而得出错误的结论。为了防止脉冲干扰该系统,本文作者采用了中值滤波的方法。在中值滤波的基础上,为了保证采集数据的稳定性,本文作者采用了算术平均值滤波的方法。

6 模块测试

软件的主要功能是实现多路数据采集、网络协议通信以及对象控制机制。模块测试部分主要针对各模块进行软件测试。由于篇幅限制,下面主要针对起数据采集部分介绍其测试部分。SD12-MCS共支持30路模拟量数据采集,其中8路10位精度的AD属于NE64的A/D模块,剩余22路属于2片TLC2543采集芯片。为了验证每个采集程序是否正确,本文设计了这样一个测试用例:首先单独运行其中一种精度的采集程序,发送所有通道采集到的数据,通过串行口发送给高端PC机,并由PC机的测试用例显示,若显示数据正确,则程序正确。在此基础上,发送参数确定调用哪种子程序,同时控制采集多路模拟量,由于本文设置模拟量采集都是从第0通道开始,并依此类推,因此不需要设置究竟是采集哪个通道的模拟量,从而简化程序处理。

本文作者创新点:

本文主要介绍了一种基于Web的嵌入式控制策略设计与实现。通过对各功能模块测试显示该监控系统性能良好,符合相关设计要求。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭