基于 ARM和 Web服务的数据监测系统设计❋

2010-09-11 05:58
中北大学学报(自然科学版) 2010年3期
关键词:端点浏览器嵌入式

舒 剑

(集美大学 信息工程学院,福建 厦门 361021)

在工业控制领域,对测量数据的采集和监测是必不可少的重要环节.目前,对这些设备的集中控制大都采用CAN,RS-485,RS-232等局部组网方式,只能在本地显示和控制,相对孤立.随着信息化进程的加快和控制规模的扩大,这些设备面临更紧迫的联网需求.而 Internet在这一领域具有很大的优势.近些年,把 Internet技术和Web技术应用到工业控制系统,实现终端设备智能化、网络化,一直是热点[1].

本系统采用 ARM平台,可挂接多个串口设备,将采集到的多路数据以 Web服务的形式发布,任何联网的远程计算机可通过浏览器访问数据.

1 系统的总体结构

系统以 Samsung公司的 S3C2410 ARM处理器为核心,搭配以太网接口芯片 DM9000,通过网络接口的软件设计实现嵌入式的Web服务器,支持 HT TP远程访问.数据采集部分使用 S3C2410集成的串行控制 器 UART0和UART1,扩展挂接多个外部数据采集单元,称为设备端点,以 RS-485方式连接.采集数据以文件形式保存在 S3C2410核心板的存储器中,供远程计算机通过浏览器访问.系统结构如图 1所示.

2 硬件设计

2.1 以太网接口设计[2-3]

S3C2410通过外接一片 DM9000以太网 MAC芯片扩展了一个 10/100 Mbps自适应以太网接口.DM9000是一款高性能和低功耗的 CMOS芯片,完全兼容 IEEE802.3u,支持 10/100 Mbit/s单工和双工模式的以太网传输,支持 IEEE802.3x全双工流控制,具备载波多路访问和碰撞检测(CSM A/CD)机制,具备 4 k双字 SRAM的接收缓冲区.支持与处理器之间的 8 bit,16 bit,32 bit接口方式.

S3C2410与 DM9000的连接需完成数据、地址、控制三大总线的连接,如图 2所示.将 S3C2410的数据线 MD[0:15]和 DM9000的 SD[0:15]连接,用于数据传输.S3C2410是 32 bit CPU,支持最大 4 GB的存储空间,其中 00000000H~ 40000000H地址空间等分为 8个区域,由 nGCS0~ nGCS7片选.在设计中DM9000占用 nGCS2片选.为使 DM9000能够被正确寻址,需将 AEN(地址允许)与 nGCS2连接,并将SA9,SA8置高电平,SA7,SA6,SA5,SA4置低电平,当 CPU将 nGCS2置低电平时,DM9000被选中.CMD端用于设置数据 /地址模式,当 CMD为高电平时选通数据端口,为低电平时选通地址端口.IN T端用于向 CPU发出中断,使用了 S3C2410的 EINT2中断.另外,DM9000支持 3种接口宽度,设计中设置 DM9000为 16 bit模式,需将 W AKEUP和 EEDO接低电平.

2.2 RS-485串行接口设计

S3C2410内部具有 3个独立的 UART控制器,每个控制器都可以工作在中断模式或 DM A模式,也就是说 UART控制器可以在 CPU与 UART控制器传送数据的时候产生中断或 DMA请求.每个UART控制器均具有 16字节的 FIFO,在使用系统时钟时支持的最高波特率可达 230.4 kbit/s.设计中使用其中的 UART0和 UART1,各连接 4个设备端点,采用软件查询工作模式,波特率发生器采用CPU的系统时钟,波特率定为 9600 bit/s.

RS-232通信距离不超过 20 m,而 RS-485可达 1200 m,为了便于设备端点的安置,需将 RS-232接口转换为 RS-485接口.设计中使用 MAX3232作为 RS-232接口器件,该器件采用+3.3 V供电,实现 EIA-232电平与 T TL/CMOS电平的转换.RS-485转换器采用深圳宇泰科技有限公司的 UT-201转换器,该转换器不需外部供电,实现 RS-232到 RS-485的双向透明转换[4].串行接口模块的连接如图 3所示.在水产育种场的实际应用中,设备端点用于测量海水的溶解氧含量、氨氮浓度、含盐量、pH值、水温参数等.各设备端点均包括 AT89C52单片机、传感器和 MAX485芯片,M AX485将端点连接到系统的 RS-485总线上.

3 软件设计

软件设计有两方面,一是本地数据采集,将数据写入文件;二是网络编程,实现远程数据查询.

本地数据采集通过 RS-485进行,采用 UT-201将 RS-232单端信号透明地转换为 RS-485平衡差分信号,对于 S3C2410而言,UT-201不可见,外部仍是 RS-232串行设备,且 UART0和 UART1外接的RS-232接口是板载 Linux系统的标准接口,使用系统 API函数可方便地进行读写操作.主控端(S3C2410)与设备端点之间采用主从通信方式,所有设备端点始终处于被动地位,等待主控端发出控制指令,如“id01rd00”,“01”表示此次呼叫的是设备端点 1,“00”表示读取该设备端点的传感器模块第0通道的值.各设备端点收到指令并根据其中编号判断此时主控端是否在与自己通信,若是则做一次数据采集并将数据回送主控端.为此需设计一个单独的数据采集进程,该进程任务简单,每隔固定的 15 min时间间隔轮询一次各设备端点,发出控制指令并回收测量数据,写入历史数据文件 mass.dat.在写入之前可设置一个全局变量标志,写入完成后撤销,供后面的查询程序判读,需等待至标志撤销再进行查询,以免读写冲突.由于测量数据的量小,写操作执行时间在几十至几百 ms之间.对串口的读写在 3.3节叙述,对文件的读写使用 Linux API函数即可简单实现,相关函数为 open(),read(),write()和close(),在此不赘述.

网络编程包含两个层次,首先要建立以太网通信接口,然后在此基础上建立 Web服务,按 HTTP协议与远程计算机交换信息,设计的 Web服务支持 HT TP指令集中的 GET指令.在微处理器系统中实现嵌入式 Web服务器是嵌入式 TCP/IP协议栈的典型应用,也是微处理器系统向智能化、网络化发展的趋势[5].

3.1 嵌入式网络通信接口设计[6]

Socket共3种类型.出于可靠性的考虑,在设计中使用流式Socket,能提供比UDP连接更可靠的 TCP连接方式.服务器端网络通信流程如图 4(a)和(b)所示.服务器程序使用 socket()函数打开套接字,用bind()函数绑定指定端口,本设计使用 80端口.然后在绑定的端口上监听任何连接请求,若有请求到来则调用accept()函数接受该连接,并为该连接创建新的子进程,在子进程中处理该连接,这样设计的目的是为了使服务器能够处理多客户的并发连接请求.连接建立后,子进程使用recv()函数获取客户浏览器发来的数据,这些数据的格式符合 HTT P请求消息的格式.解析出 HTT P请求消息后,做相应处理,根据不同的请求消息返回相应数据给客户的浏览器,返回的数据也需符合 HT TP消息响应的格式.客户端使用现有的通用浏览器软件,如 Internet Explorer不需再行编程,其主要流程如图 4(c)所示.

3.2 嵌入式 Web服务器设计

实现嵌入式 Web服务器的关键在于使系统支持 HTT P协议,它是万维网的基本传输协议[7].为了明确 Web服务器和客户浏览器的相互操作,HT TP协议定义了浏览器发送到服务器的请求的格式,以及服务器返回应答的格式.编程实现对 HTT P协议的解析,其过程具体而言是对客户浏览器发送过来的HTTP请求消息进行接收、处理和应答,在图 4(b)中已反映了这一过程,但还需具体说明其中 HTTP请求消息的处理过程.根据系统功能的需要,在嵌入式环境下服务器并不需要支持所有的 HT TP请求消息,本设计支持 GET请求消息.根据客户浏览器的请求,返回相应的HTM L超文本文件、图片文件等.嵌入式Web服务器 IP为192.168.2.120,端口为 80.在客户计算机上打开浏览器并输入http://192.168.2.120/query.html,这是数据查询的首页面,回车后服务器收到 HT TP请求消息内容为:

>> GET /query.html HTTP/1.1;

> > Host:192.168.2.120;

> > Accept:image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,*.*;

> > Accept-Language:en;

> > Accept-Encoding:gzip,deflate;

> > User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows N T5.0);

> > Connection:Keep-Alive.

服务器收到上述消息后,回应的内容由响应消息头和文件数据流构成:

<<HTTP/1.1200 O K;

< < Date:Fri May 3019:12:162008 GM T;

< < Server:Embedded Web Server(Linux);

< < Last-Modified:Fri Sep2114:16:182007GM T;

< < Content-Length:555;

< < Connection:close;

< < Content-Type:text/html;

<<;

<<文件数据流.在.根据所请求文件的类型,若请求的是 html文件则调用 do html( )函数,将文件内容和相应的响应消息头打包为 HTT P响应消息发送给客户浏览器;若请求的是 jpg,gif等图形文件则调用 do_ img ()函数,将文件内容和相应的响应头格式打包为 HT TP响应消息发送给客户浏览器;若请求的是其它文件,则以下载形式发送给客户浏览器;若请求的文件不存在,则调用 do _404()函数,返回一个文件不存在的HTTP响应消息.

图5 在浏览器中输入查询条件Fig.5 Input query condition on browser

图6 浏览器显示查询结果Fig.6 Show query result on browser

如图 5所示,输入查询条件并点击“查询”按钮,依 query.html中的按钮动作设置,客户浏览器将向服务器请求 result.html文件,同时附带 4个 INPUT元素的内容作为请求参数.对 result.html的请求过程和响应过程与 query.html是一样的,但 do html ()函数需区别处理对 query.html和 result.html的请求,如图 8所示,当客户浏览器请求 query.html时,服务器只需简单地读取 Flash中事先编制好的query.html文件返回给客户浏览器,而请求 result.html时,Flash中并没有真实的result.html文件存在,而是服务器程序根据4个参数中的水池编号、查询开始时间和结束时间到历史数据文件 mass.dat中搜索符合条件的数据记录,整理存放在 RAM中动态开辟的空间中,并在返回给客户浏览器后释放空间.若先将符合条件的记录保存为静态磁盘文件 reqult.html,再将其返回给客户浏览器,则在多用户同时查询时会出现文件相互覆盖的现象,造成客户浏览器数据显示错乱,采用动态方式可避免此问题.查询之前先判断确认码,可保护数据不被非法查询.查询结果如图 6所示.

3.3 串口读写控制程序

对串行口进行读写操作之前需设置波特率和数据帧格式.可以使用 cfsetospeed()和 cfsetispeed()函数在 termios结构体中设置波特率,设置波特率为 9 600 bit/s的方法为

struct termios options;

tcgetattr(uart0_hd,&options);

cfsetispeed(&options,B9600);

cfsetospeed(&options,B9600);

options.c cflag |=(CLOCAL|CREAD);

设置帧格式为 8 bit数据,无校验位:

options.c cflag |=PARENB;

options.c_cflag&=~CSTO PB;

options.c cflag&=~CSIZE;

options.c_cflag |= CS8;

最后执行 tcsetattr(uart0_hd,TCSANOW,&options)为端口写入新的参数.

根据软件的设计构想,串口需对各设备端点进行轮询和数据采集.Linux通过设备文件访问串行口,在本设计中 UART0和 UART1所对应的设备文件为“/dev/ttyS0”和 “/dev/tty S1”.以 UART0为例,轮询一次图 3中设备端点1的过程如下:

4 结 语

把 Internet应用到嵌入式系统的目的是使现场终端设备接入 Internet,其中由 ARM平台构建的嵌入式 Web服务器起到了桥梁的作用.本设计实现了一个嵌入式 Web服务器,可对本地的多路串口数据进行采集,并将数据保存在服务器的历史数据文件中,支持远程计算机浏览器以 HT TP方式查询访问.该系统应用于水产育种养殖场中,对现场数个养殖池的水质进行远程监测,运行稳定可靠.

[1]杨丰萍,邢剑,马书研.基于 Linux的嵌入式安全 Web Server的实现 [J].华东交通大学学报,2007,24(2):110-112.Yang Fengping,Xing Jian,Ma Shuyan.Realization of embedded secure web server based on linux[J].Journal of East China Jiaotong University,2007,24(2):110-112.(in Chinese)

[2]韩超,王可人.基于 DM9000的嵌入式系统的网络接口设计与实现 [J].工业控制计算机,2007,20(4):17-18.Han Chao,Wang Keren.Design and realization of embedded system network interface based on DM 9000[J].Industrial Control Computer,2007,20(4):17-18.(in Chinese)

[3]刘永峰,邹逢兴.嵌入式系统的网络接口模块设计 [J].兵工自动化,2006,25(2):49-51.Liu Yongfeng,Zou Fengxing.Network interface module design of embedded system[J].Ordnance Industry Automation,2006,25(2):49-51.(in Chinese)

[4]许永康.RS-232转 RS-485网络的通信 [J].微计算机信息,2007,23(4-1):228-229.Xu Yongkang.Network communication of RS-232convert to RS-485[J].Control&Automation,2007,23(4-1):228-229.(in Chinese)

[5]Quinnell,Richard A.Web servers in embedded system enhance user interaction[J].European Documentary Network,1997(10):61-63.

[6]童铭,李志蜀.基于 Socket的多用户通信框架及实现 [J].四川大学学报(自然科学版),2006,43(3):702-705.Tong Ming,Li Zhishu.Implementation of multi-client communication based on socket[J].Journal of Sichuan University(Natural Science Edition),2006,43(3):702-705.(in Chinese)

[7]王超,胡晨,刘新宁,等.嵌入式系统中 HT TP协议的实现 [J].电子器件,2002,25(1):93-96.Wang Chao,Hu Chen,Liu Xinning,et al.Implementation of HT TP protocol in the embedded system[J].Journal of Electron Devices,2002,25(1):93-96.(in Chinese)

猜你喜欢
端点浏览器嵌入式
非特征端点条件下PM函数的迭代根
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
不等式求解过程中端点的确定
微软发布新Edge浏览器预览版下载换装Chrome内核
反浏览器指纹追踪
TS系列红外传感器在嵌入式控制系统中的应用
搭建基于Qt的嵌入式开发平台
基丁能虽匹配延拓法LMD端点效应处理
倍福 CX8091嵌入式控制器
浏览器