微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于嵌入式网络模块的HTTP数据采集方案

基于嵌入式网络模块的HTTP数据采集方案

时间:09-27 来源:互联网 点击:

数据包实例,从0x61开始为真正的有效数据信息,数据包括一个字节的采集站地址,本例中为“00”,10个符合IEEE-754标准的单精度四字节浮点数,本例中为10个100.0(16进制表示为0000C842),和2个字节的CRC16的循环检验码,本例中为“51AD”.HTTP协议传送的数据一般都是文本格式,所以总共43字节二进制数据经过转化成为86字节的16进制字符串数据.在HTTP包的封装中,除了数据域以外,0x4开始的“/com2http/test.aspx”和0x43开始86会根据实际需要在下位机中由程序自动设置,分别表示处理该数据的处理页面和提交的有效数据字节数.由此可以看出,只要在有效数据的前面加上HTTP请求头,就可以实现简单的HTTP1.1协议,在单片机系统中实现这种功能和写普通的串口发送程序一样简单.

3.2 网络模块

  该模块在该系统中起着承上启下的作用,实现了TCP/IP协议栈,完成把485线上串行传送的HTTP包数据转化为在交换式以太网中的以太网帧,真正向Web服务器发出HTTP请求.

3.3 Web Server And Real Database

网络模块转化后的HTTP请求最终到达Web服务器,可用任何服务器端动态网页技术实现数据的处理和保存,实验方案采用微软最新的动态网页技术ASP.Net.通过编写程序获取有效数据,转化为原始二进制数据形式,验证校验码,如果无误根据数据的对应写入实时数据库,如果实时性要求不高以及数据存储量不大,可以使用ACCESS数据库,不然可以使用专用的数据库服务器,如Oracle和SQL Server.

4 优点

本文中数据采集方案有以下优点:

(1)可以很方便的集成现有设备和仪表的数据采集.只要知道仪表设备的通讯协议,在下位机实现数据通讯,把采集到的数据封装为HTTP协议包通过串口发出即可.

(2)采用工业交换以太网,基于HTTP协议,同时满足局域和远程采集的需要.可以把该系统连至Internet,Web Server And Real Database和采集系统不在同一地理位置,而且服务器可以同时处理多个不同地理位置的数据,方便实现数据集中,能更好的管理和使用数据.

(3)方便维护和升级,方便增加采样点.可以根据需要随意增加下位机,做到需要几个模块调试增加几个模块.

(4)不同于传统的专用采集服务器采集数据模式,上位机服务器的功能由Web服务提供,不需要编写专门的数据接收程序和采集程序,只要编写完成数据的处理和保存的代码.真正同仪表的通讯由下位机完成,形成分布式数据采集,Web服务是多线程体系结构,可并发处理多个下位机模块发送的数据,使得整个系统支持更多的数据点采集,提高整个系统的采集效率.

5 实验

(1)下位机实现:同普通的下位机系统设计和实现,只是在数据发送时需要加上HTTP协议包的包头,可参考3.1.

(2)网络模块:实验选用了广州周立功单片机发展有限公司开发的一款嵌入式网络模块-ZNE-100T,它内部集成了TCP/IP 协议栈,利用它可以轻松完成嵌入式设备的网络功能,另外为了测试方便直接使用了ZNE-100T的评估板.通过周立功公司提供的配置软件可以轻松设置网络模块的参数,需要设置的参数包括IP地址、子网掩码、网关、串口的波特率设置、端口工作模式、目标IP 地址和目标端口等,特别说明的是端口工作模式,由于HTTP协议是基于TCP的,所以该方案中模式设为TCP Client模式,目标端口一般默认设置为80.

(3)Web服务器使用联想万全520服务器,Windows Server2003操作系统,IIS6.0,数据库采用SQL Server 2005,使用ASP.Net技术编程实现数据处理和保存. 下面给出用C#实现的数据处理核心代码实例:

byte []a;

a=this.Request.BinaryRead ( this.Request.ContentLength) ;//获取提交的数据

System.Text.ASCIIEncoding ascii=new System.Text.ASCIIEncoding ();

string c=ascii.GetString (a);

if (!CheckValidChr (c))//检查是否有非法字符

return ;

byte []b=new byte [a.Length /2];

for (int i=0;i

b[i/2]=Convert.ToByte (c.Substring (i,2) ,16);

if (!CheckCRC(b))//验证CRC

return ;

for (int i=5;i

 if ( (i-1) % 4 ==0 )

float t=BitConverter.ToSingle (b,i-4);//把字节数据转化为浮点数

SaveData(b[0],(i-1)/4,t);//根据下位机站地址以及数据位置保存数据

 }

6 结束语

经过实验证明,基于本文方案可以快速有效的部署一个数据采集系统,比传统的串口数据采集方法有很多优越性,扩展维护方便,由于上位机基于动态网页技术,只需编写数据处理和保存程序,使得系统的开发工作主要放在下位机和仪表的通信上.需要说明的是,该方案中使用ZNE-100T评估板和下

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top