2 实时数据采集技术
2.1 连续数据采集的实现方法
由于HTTP是基于请求/响应模式的,客户端和服务端进行一次交互时,开始于客户提出的一个请求,并在服务器给出响应后结束。而一次交互只能得到一组数据,那么如何实现连续的数据采集呢? 一般有两种方法:即客户端牵引和建立TCP连接。
客户端牵引就是在网页中插入定时刷新功能,它的数量级为s,可以使用户看到数据的变化,但不能满足强实时性的要求,而且其中会漏掉一些中间的数据。
建立TCP连接就是通过在网页中嵌入ActiveX控件或Java Applet小程序来增强客户机的功能。其中,ActiveX控件只能在windows环境下运行,而Java Applet通用性强,可以实现跨平台操作。所以本系统采用Java Applet来进行远程数据的实时采集。
2.2 Java Applet
Applet是用Java编写的,含有可视化内容的,并被嵌入Web页面中用来产生特殊页面效果的小程序,经常被用于增加网页多媒体效果,并使网页产生互动功能。
当用户访问带有Java Applet的网页时,Applet被下载到用户计算机上执行,但前提是用户使用的是支持Java的网络浏览器。由于Applet是在用户计算机上执行的,因此它的执行速度是不受网络宽带或者MODEM存取速度的限制,用户可以更好地查看网页上Applet产生的多媒体效果。
Applet必须将HTML的<applet>和</applet>一对标记或者<object></object>嵌入到Web网页中,使用浏览器才能运行。在IE中用<obje-ct>标签取代<applet>标签,在Netscape 4使用<embed>标签取代<applet>,但是<object>和<embed>都必须遵循Java Plug-in中的格式。
3 实时数据采集的具体实现
3.1 硬件实现
嵌入式Web网络传感器的数据采集系统的硬件结构如图3所示。
ADuC832是ADI公司推出的混合信号单片微控制器,是真正意义上完整的数据采集系统芯片,是集数据转换电路、微控制器、闪存于一体的数据采集系统。它的主要特性有:8通道模拟I/O,247 ksps、12位ADC,2个12位(单调的)电压输出DAC片内温度传感器;62 KB片内闪速/电擦除程序存储器,4 KB片内闪速/电擦除数据存储器,2 304字节的片内数据RAM。
主芯片通过74LS138译码器来进行片选外部数据存储器KM62256,或者网卡控制器RTL8019AS。通过74HC573地址锁存器进行当前地址的锁存,使得输出端的状态不会随输入端的状态变化而变化,仅在有锁存信号时输入的状态被保存到输出,直到下一个锁存信号到来时才改变,也是为了实现地址的复用。
在主电路上主要设计了一个信号输入接口,用来接工业现场的4~20 mA信号的变送器;设计了一个RJ45的网口接口,通过网口可以直接接到Internet上,进行现场数据的上传和共享;还设计了RS485接口和RS232接口,作为工业现场特殊情况下的数据接入和处理。
现场传感器将采集的4~20 mA信号传送给信号调理板,将其信号转换为0~2.5 V的电压信号,然后通过ADuC832转换为数字量,再通过程序转换为相应的温度值,实时地将温度值显示在嵌有Java Applet的网页上。
3.2 软件实现
3.2.1 操作系统和协议栈的选用
在嵌入式Web服务器上,选用μC/OS-II作为嵌入式实时操作系统。它是一个可移植、可固化、可裁剪、抢占式的实时操作系统,比传统的前后台程序可靠性更高,效率更高。
TCP/IP是个协议簇,是诸多开放的协议的集合,但是单片机是个小型的微处理器,内部资源有限,因此必须要对协议进行裁剪。本系统采用精简的小型TCP/IP协议栈——μIP协议栈。μIP协议代码中包括了一些基本的通信协议:ARP协议、IP协议、ICMP协议和TCP协议,UDP协议、HTTP协议、Telnet协议、SMTP协议等。其中,ARP、IP、ICMP、TCP这4个协议就能实现网络连接和通信的最基本的功能,同时还能实现CGI技术。其应用层就是HTTP协议,采集数据嵌入在Web服务器网页中以网页的形式发布到Internet。
对于μC/OS-II和μIP的移植,详见参考文献。整个系统的软件结构如图4所示。