当前位置:首页 > 嵌入式 > 嵌入式硬件

摘要:本文提出了一种在单片机系统中实施基于HTTP协议的数据采集的方案,利用嵌入式网络模块实现串口到以太网数据的转换,使用采集板将数据封装成HTTP包.该方案灵活方便,实现简单;采用分布式结构,采集效率高,可适用于大量数据的采集,而且可以方便扩展为基于Internet的远程数据采集.

关键词:超文本传输协议;嵌入式网络模块;以太网;数据采集;因特网

1前言

  随着工业以太网的发展,由于传输速度、传输可靠性及可扩展性等综合性能方面的优越性,越来越多的数据采集系统都是基于以太网接口,并且越来越多的仪器仪表设备也提供了以太网接口.但是很多企业都有早期投入的设备仪表,一般使用串口进行数据通信,因此需要一种简单、高效、易于扩充的集成方案,实现对原有设备仪表的数据采集,并且可以方便的集成到现有的以太网工业控制系统中.本文提出一种数据采集方案,除了满足前面要求外,由于其采用HTTP协议,可以方便扩展为基于Internet的远程数据采集.HTTP协议可以利用嵌入式系统(WinCE、Linux等)基于其自带的TCP/IP协议栈实现或者直接使用嵌入式Web服务器[1~4],在计算机系统中也可以利用高级语言直接使用Web客户端使用HTTP协议或者利用Winsock网络编程,实现基于HTTP的数据交互,但都会增加系统的开发成本,本文提出一种基于嵌入式网络模块在单片机系统中实现简单HTTP协议的方法,并基于此方法构建数据采集方案.

2系统结构

  HTTP协议是一种基于TCP实现的应用层协议,它是因特网可靠的交换数据的重要基础.如果要实现HTTP协议,必须以TCP/IP协议栈为基础,利用嵌入式网络模块即可方便的实现TCP/IP协议栈的功能.图1为一个利用嵌入式网络模块实现的基于HTTP协议的数据采集方案.


图1系统结构

  图1中,最关键部分是采集板和网络模块.当今仪器仪表最常用的通讯接口是485串行接口,采集板和仪表设备一般通过485总线连接,采集板利用单片机开发,实现下位机和设备仪表的通信,采用主从方式采集所需要的数据,再通过485总线发送给网络模块,网络模块收到采集板数据发出的串行数据,利用内嵌的TCP/IP协议栈实现串行数据到以太网数据的转换,网络模块通过网线、交换机和采集服务器连接.采集板是实现HTTP应用层协议的地方,只要采集板发出的数据符合HTTP协议,经由网络模块转化后成为合法的HTTP请求,则Web服务器可使用任何的服务器端动态网页技术(CGI、ASP、JSP、PHP、ASP.Net等)实现数据的处理和保存.

3系统实现

  3.1采集板

  采集板和仪表进行主从通讯采集数据以外,最主要的任务就是把采集的数据封装为HTTP协议的数据包,也就是要在单片机中实现简化的HTTP协议,能够完成基本的数据交互功能即可.在国际标准中,有两个HTTP协议的标准文档:RFC1945和RFC2616[5].这两个文档分别描述了HTTP/1.0和HTTP/1.1的实现标准.这两个版本的HTTP协议最大区别在于前者不支持保持连接,规定每次的HTTP请求和响应后都要关闭TCP连接,而后者支持持久连接,这意味着可以打开一次TCP连接进行多次请求/响应,大大提高了性能.为了提高性能,本文中将实现基本的HTTP1.1协议.经过分析研究,找出了一种比较简单且有效的实现.下面通过一个具体例子说明实现的HTTP协议包格式.

  GET/com2http/test.aspxHTTP/1.1CRLF

  Host:127.0.0.1CRLF

  Content-Length:86CRLF

  Connection:Keep-AliveCRLF

  CRLF

  000000C8420000C8420000C8420000C8420000C8420000C8420000C8420000C8420000C8420000C84251AD

  通过工具截获的数据以16进制显示如下:

  00000000:474554202F636F6D32687474702F7465GET/com2http/te

  00000010:73742E6173707820485454502F312E31st.aspxHTTP/1.1

  00000020:0D0A486F73743A203132372E302E302E..Host:127.0.0.

  00000030:310D0A436F6E74656E742D4C656E67741..Content-Lengt

  00000040:683A2038360D0A436F6E6E656374696Fh:86..Connectio

  00000050:6E3A204B6565702D416C6976650D0A0Dn:Keep-Alive...

  00000060:0A303030303030433834323030303043.000000C8420000C

  00000070:383432303030304338343230303030438420000C8420000C

  00000080:383432303030304338343230303030438420000C8420000C

  00000090:383432303030304338343230303030438420000C8420000C

  000000A0:383432303030304338343230303030438420000C8420000C

  000000B0:3834323531414484251AD

  上面显示的便是一个合法的HTTP协议的数据包实例,从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.3WebServerAndRealDatabase

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

4优点

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

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

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

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

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

5实验

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

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

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

  byte[]a;

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

  System.Text.ASCIIEncodingascii=newSystem.Text.ASCIIEncoding();

  stringc=ascii.GetString(a);

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

  return;

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

  for(inti=0;i

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

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

  return;

  for(inti=5;i

  {

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

  {

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

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

  }

  }

6结束语

  经过实验证明,基于本文方案可以快速有效的部署一个数据采集系统,比传统的串口数据采集方法有很多优越性,扩展维护方便,由于上位机基于动态网页技术,只需编写数据处理和保存程序,使得系统的开发工作主要放在下位机和仪表的通信上.需要说明的是,该方案中使用ZNE-100T评估板和下位机通过485串行总线相连,下位机向网络模块发送的有效数据需要加入CRC校验,防止在485总线上数据出现错误引起Web服务器采集到错误数据.另外一个解决方案是把ZNE-100T模块集成在下位机,这样可以取消校验.不过前者有个优点就是如果下位机距离交换机很远,可以近距离用网线把交换机和网络模块连接,用485线把网络模块和下位机连接,实现了长距离数据传输.由此可出看出,利用嵌入式网络模块实现基于HTTP协议的数据采集系统确是一个非常灵活的方案.

参考文献

  [1]杨健.基于嵌入式系统的数据采集系统网络接入的设计与实现[J].仪器仪表学报,26(8)增刊:290-292.

  [2]刘凯.基于嵌入式Linux系统的远程数据采集[J].计算机应用,26(B06):264-265.

  [3]游雪峰.以太网分布式数据采集同步和实时传输研究[J].仪器仪表学报,27(4):384-387.

  [4]张曦煌.基于嵌入式Web的远程仪表接口[J].微计算机信息,2006(01S):147-149.

  [5]InternetRFC/STD/FYI/BCPArchives.RFC2616-HypertextTransferProtocol——HTTP/1.1[EB/OL].http://www.faqs.org/rfcs/rfc2616.html.

  [6]HarvyM.Deitel.C#大学教程[M].电子工业出版社,2004.1.

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

此次合作将加速用于室内导航、追踪和远端设备控制的 UWB 设备的最新 FiRa® 2.0 安全测距测试的实施和验证。

关键字: 数据采集 室内导航 UWB 设备

加利福尼亚州圣克拉拉市—2024年4月30日―AMD(NASDAQ: AMD)今日公布2024年第一季度营业额达55亿美元,毛利率为47%,经营收入3600万美元,净收入1.23亿美元,摊薄后每股收益为0.07美元。基于...

关键字: 嵌入式 PC 人工智能

这款全新的中端MCU系列为设计人员提供了更高水平的安全性和灵活性

关键字: 嵌入式 单片机

2024年4月11日,中国——意法半导体的ST25R100近距离通信(NFC)读取器芯片独步业界,集先进的技术功能、稳定可靠的通信连接和低廉的成本价格于一身,在大规模制造的消费电子和工控设备内,可以提高非接触式互动功能的...

关键字: 嵌入式 数据读取器 芯片

单片机是一种嵌入式系统,它是一块集成电路芯片,内部包含了处理器、存储器和输入输出接口等功能。

关键字: 单片机 编写程序 嵌入式

深圳2024年4月23日 /美通社/ -- 全球AI解决方案与工业级存储领导品牌宜鼎国际 (Innodisk)持续深化边缘AI布局,今(23)日发表全球首创"MIPI over Type-C"独家技术,让旗下嵌入式相机模...

关键字: AI 嵌入式 相机

为增进大家对嵌入式主板的认识,本文将对嵌入式主板以及嵌入式主板常见问题及其解决方法予以介绍。

关键字: 嵌入式 指数 主板

为增进大家对嵌入式系统的认识,本文将对嵌入式系统、嵌入式系统的特点予以介绍。

关键字: 嵌入式 指数 嵌入式系统

为增进大家对嵌入式的认识,本文将对嵌入式、嵌入式工作相关的内容予以介绍。

关键字: 嵌入式 指数 嵌入式技术

机器人操作系统(ROS)驱动程序基于ADI产品而开发,因此可直接在ROS生态系统中使用这些产品。本文将概述如何在应用、产品和系统(例如,自主导航、安全气泡地图和数据收集机器人)中使用和集成这些驱动程序;以及这样将如何有助...

关键字: 电机控制器 机器人 嵌入式
关闭
关闭