网络数据采集测试系统设计
摘要:
网络化虚拟仪器是继虚拟仪器之后仪器仪表领域出现的新的发展方向,提出了将嵌入式系统、
网络与虚拟仪器结合的技术路线,将信号的采集、处理、存储分布于不同的网络位置的实施方案。利用
ARM嵌入式在现场采集数据,通过网络通信将信号处理和存储工作交给上位机负责,采用 S3C44B0X为
核心的开发环境,然后进行软件系统的搭建,包括移植μC/OSⅡ嵌入式操作系统,嵌入式图形界面系
统μC/GUI,ADC及网卡的驱动程序编写以及移植 LwIP实现 TCP/IP协议等。测试结果表明,该系统的
功能完善、操作十分方便,完全满足实际应用的需要,可以有效地组织和管理数据以及构架网络数据
库。
关键词:
虚拟仪器;ARM;LabVIEW;S3C44B0X;μC/OSⅡ;LwIP
虚拟仪器(VirtualInstrument)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发
展的一个重要方向[1]。这种结合有两种方式:一种是将计算机装入仪器,其典型的例子就是所谓智能
化的仪器。随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经
出现含嵌入式系统的仪器;另一种方式是将仪器装入计算机。以通用的计算机硬件及操作系统为依托,
实现各种仪器功能。虚拟仪器主要是指这种方式[2]。使用网络化虚拟仪器技术,可以不受地点、时间
的约束,获取准确的测量信息或数据,与传统的仪器、测量、测试相比,带来了诸多便利[3]。在网络
化虚拟仪器中,被测对象可通过测试现场的普通仪器设备,将测得的数据通过网络传输给异地的精密测
量设备或高档次的微机化仪器去分析、处理,能实现测量信息的共享,可掌握网络节点处信息实时变化
的趋势;此外,也可通过具有网络传输功能的仪器将数据传至原端即现场。采用自动抄表系统,可提高
抄表的准确性,能减少因估计或誊写而可能出现的帐单错误(供用电、水、燃气、热能等)。管理部门
因此能及时获得准确的数据信息,用户也不再需要与抄表员预约上门抄表时间,迅速查询帐单。使用网
络化虚拟仪器,采用网络测量技术,可以大幅度提高测量效率,降低监测成本以及减少计量测试工作的
周期[4]。
1硬件设计
本文的目的是充分发挥分布式虚拟仪器的概念,将嵌入式系统,网络,虚拟仪器联系起来,将
信号的采集、处理、存储分布于不同的网络位置。结合嵌入式系统的灵活性,避免其计算能力不强的缺
点,将信号处理工作交给上位机负责。系统结构如图 1所示。下位机的虚拟仪器负责信号的采集,通过
以太网将数据传输到上位机,利用上位机强大的计算能力和海量存储空间完成对原始数据的后期处理。
以太网设备本系统采用的网络 RTL8019AS是一种高度集成的以太网控制芯片,能简单地实
现 PlugandPlay并兼容 NE2000。RTL8019AS芯片内部集成了 DMA控制器,ISA总线控制器和集成
16KSRAM、网络 PHY收发器。用户可以通过 DMA方式把需要发送的数据写入片内 SRAM中,让芯片自动将
数据发送出去,而芯片在接收到数据后,用户也可以通过 DMA方式将其读出。RTL8019AS的详细介绍请
见 RTL8019AS数据手册。了解了 RTL8019AS所提供的资源与硬件接口,便可以设计 RTL8019AS与
S3C44B0X的硬件电路。在网络通信模块电路中,RTL8019AS与处理器 S3C44B0X之间的信号连接关系如
图 2所示。
电源、时钟及复位电路在本系统中,采用的是 5V和 的直流稳压电源,其中,
S3C44B0X核心使用 电源,外围器件需 电源,另外部分器件需 5V电源,5V电路加了工作指示
灯,并且加了二极管对电路加以保护。晶振电路用于向 CPU及其他电路提供工作时钟。在该系统中,
S3C44BOX使用常用的无源晶振,电路如图 3所示。根据 S3C44B0X的最高工作频率以及 PLL电路的工作
方式,系统选择了 10MHz的有源晶振,10MHz的晶振频率经过 S3C44B0X片内的 PLL电路倍频后,最高
可以达 66MHz。片内的 PLL电路兼有频率放大和信号提纯的功能,因此,系统可以以较低的外部时钟信
号获得较高的工作频率,以降低因高速开关时钟所造成的高频噪声。同时在系统中还有频率为
的实时时钟晶振源,在 USB接口芯片处也有一个 48MHz的晶振。在系统中,复位电路主要完
成系统的上电复位和系统在运行时用户的按键复位功能。复位电路可由 IMP811芯片完成,复位电路如
图 4所示。该复位电路的工作原理如下:IMP811是一个可靠性很高的复位芯片,当用户按下按钮 S1时
或者 RST_IN送过来一个低电平时,Reset端输出为低电平,系统进入复位状态,松开 S1时,系统即可
进入正常工作状态。
2实时操作系统
实时操作系统,简称 RTOS,具体指系统能及时响应来自外部事件的请求,在确定的时间处理该
事件,统一控制实时任务一致运行。RTOS的开发工具允许用户针对不同的应用对象对 RTOS的内核进行
裁剪、压缩,以适应各类应用,并提供应用程序的调试环境。
μC/OSⅡ的系统结构μC/OSⅡ嵌入式实时操作系统是 开发的一个完整的、
可移植、固化、裁剪的占先式实时多任务内核,目前已经在超过 40种不同架构的微处理器上运行,图
5是本系统的软硬件体系结构。初始化程序是针对 S3C44B0X使用汇编语言编写的。在将控制权交给操
作系统前,初始化最基本的硬件设备。主要工作是配置 SDRAM并将操作系统代码从 FLASH拷贝到 SDRAM
中。
小键盘驱动编写系统采用智能显示驱动芯片 HD7279连接一个 4×4键盘和 S3C44B0X通
信。HD7279A是一片具有串行可同时驱动 8位共阴式数码管(或 64只独立 LED)的智能显示驱动芯片,
该芯片同时还可连接多达 64键的键盘矩阵,单片即可完成 LED显示、键盘接口的全部功能。HD7279A
内部含有译码器,可直接接收 BCD码或 16进制码,并同时具有 2种译码方式。此外,还具有多种控制
指令,如消隐、闪烁、左移、右移、段寻址等。HD7279A具有片选信号可方便地实现多于 8位的显示或
多于 64键的键盘接口。
3硬件设计
模块总体设计整个系统的信号流程如图 6所示,信号通过 ADC后以 DMA方式进入两个 8MB
的 SDRAM,二者构成一对乒乓存储系统,一侧负责采集信号的缓存,同时另一侧负责向上位机发送,二
者交替工作,保证信号流采集和发送的连续。对于网络通信模块,由于μC/OSⅡ只是一个实时的任务
调度及通信内核,缺少对网络协议的支持,所以需要将 LwIP(LightWeightIPprotocol)移植到
μC/OSⅡ上,使其支持网络功能。本章后面部分将重点介绍 NE2000兼容网卡 RTL8019AS驱动程序在嵌
入式系统中的编写。
信号调理模块 S3C44B0X内部具有一个逐次逼近型 8路模拟信号输入的 10位 ADC,但是不具
有保持采样保持(S/H)电路,不能用于快速变化的信号采集,因此需要在前级信号调理电路中加入采
样保持功能。在此系统中,采用了 MicrochipTechnology公司的模拟增益可编程运放(PGA)MCP6S28
芯片,传感器采集的信号接入 MCP6S28的通道输入端,输出 VOUT接入处理器内部的 A/D转换器的信号
输入端 AIN管脚。MCP6S28的增益可设置为 1~32V/V,它具有多路选择输入(MUX)模块,共有 8路输
入。MCP6S28具有 SPI接口,故将其与 S3C44B0X对应的 SPI管脚连接即可,用于选择增益水平和输入
通道。对 MCP6S28进行操作的控制字节和数据字节均从 SI引脚输入,并在写入数据的串行时钟(SCK)
上升沿被锁存。
A/D转换由 S3C44B0X内部模/数转换器(ADC)完成,它是一个 10位、
逐次逼近型的 ADC,有 8路模拟信号输入,其内部结构中包括模拟输入多路复用器,自动调零比较器,
时钟产生器,10位逐次逼近寄存器(SAR),输出寄存器。这个 ADC还提供可编程选择的睡眠模式,以
节省功耗。S3C44B0X内部有 3个与 A/D转换有关的寄存器:控制寄存器 ADCCON、预分频寄存器
ADCPSR、数据寄存器 ADCDAT。ADCPSR中存储预置比例因子,取值范围是 0~255,完成一次 A/D转换至
少需要 16个 A/D时钟周期,有:A/D转换总时钟数=2×(预置比例因子+1)×16A/D的最高采样速率是
100KS/s,即每个采样周期为 10μs。ARM7运行在 66MHz主频下,每个周期为 。这样每个采样
周期包括 660个主频周期。ARM7具有 640条指
令。在计数器触发 A/D采样的情况下,处理器的工作是每采样周期从 A/D读取一次数据并保存到 RAM
中,代码如下:LDRR0,[R1]:寄存器 R1中保存了 A/D数据寄存器的地址,需要 3周期。STRR0,[R2,
#4]:寄存器 R2中保存了 RAM中数据存储空间的起始地址;需要 2周期。这个操作需要 5个主频周期。
利用剩余的转换时间,ARM7可以完成数据的打包发送,以及其他的任务。在进行 A/D转换时,ARM要禁
止一切可屏蔽中断。
4LabVIEW上位机模块设计
上位机的功能有两方面:一是负责数据的实时显示,参数测量和存储;二是对下位机的远程控
制。监测人员能够直观地获得测试结果,很方便地对远程数据采集系统进行控制。本系统的上位机系统
利用虚拟仪器技术和 LabVIEW图形化软件开发集成环境,设计了该数据采集系统的数据分析、存储和远
程控制模块。测试结果表明,该数据分析处理模块的功能比较完善,操作十分方便,完全满足实际应用
的需要。
网络数据通信接口程序设计上位机和下位机通信的传输内容可以分为测控命令和数据两
种。其中下位机向 PC机发送的数据,数据量大、对传输速度要求较高、对可靠性的要求不很严格。UDP
是面向非连接的方式,提供的是不可靠的数据传输,但实现起来比较简单,速度快、实时性好,并且支
持广播和组播,同时在单一、封闭局域网中可靠性也很高。因此用一般的 UDP通信就可以达到很好的可
靠性以满足数据传输的要求。一个简单的 UDP数据接收、显示程序如图 7所示。程序分为 UDP打开,
UDP读取和 UDP关闭三个环节。首先指定本地端口号,本文为 61557,这个端口必须与下位机设置的目
标远程端口一致。在运行此程序前,必须先运行下位机程序。UDPRead节点设置 UDP数据报最大字节
数,最大值为 548,此处设置为 100,若超过本值,Windows将提示出错信息。
控制程序设计程序界面如图 8所示,观测人员可以通过示波器的波形显示及时调整远端采
集设备的相应参数。这样可以充分利用 A/D转换器的最大输入量程(),尽可能提高测量精度。另
一个可以控制的参数是采样速率,当被测信号的频率较低时可以使用低速率采样,在保证失真度的情况
下降低数据流,避免因网络拥挤产生数据丢失。设备重启控制用于使下位机的系统软件及硬件寄存器完
全恢复到初始状态。控制信号的数据量较小,对传输的可靠性要求严格,故采用 TCP协议。对于
LabVIEW程序的设计采用事件驱动模式,当增益水平和采样速率的 List控件值改变时,驱动主程序向
下位机发送控制信号。向下位机发送的是增益水平或者采样速率的数值。因为网络以及系统的延时,效
果通常要经过一段时间才能反映出来。
下位机响应程序编写下位机的 TCP/IP协议栈是通过 LwIP实现的,LwIP提供一系列函数实
现 IP,TCP,UDP等的操作。其中 tcp_input(),tcp_process(),tcp_receive()与 TCP输入处
理有关。函数 netconnlisten()让系统进入 TCP监听状态。当 TCP连接建立后,tcp_receive()把
接收到的数据 tcp_data传给上级应用程序。再判断 tcp_data数值的大小,分为以下三种情况:若为
0X11111111,使程序跳转到系统初始位置,重新设置各种设备。若为 1~32,调用 SPI控制程序,给数
据寄存器 SPDR赋值,再通过 MOSI发送给 MCP6S28的增益寄存器。若 tcp_data≤1000,则为采样速率
控制量,需修改 A/D转换预置比例因子寄存器 ADCPSR,修改的值根据芯片手册推导。
数据文件储存程序设计由于二进制文件存储速度快,冗余数据少,格式也最为紧凑,因此
在进行大量数据采集时,往往采用这种文件格式。图 9中是用底层函数实现的二进制文件的输入 VI,
可以实时存储通过 UDP接收的数据,首先用 Open/Creat/ReplaceFileVI新建一个文件,然后在
WhileLoop中用 WriteFile函数将网络通信数据写入文件,最后用 CloseFile函数关闭文件。
5结论
本文基于分布式虚拟仪器概念,设计了网络化数据采集和测试系统,基于 ARM的下位机和基于
LabVIEW的上位机通过网络协同工作,实现了数据的实时采集、处理和存储。首先针对基于 ARM微处理
器 S3C44B0X的嵌入式采集系统进行整体开发,将嵌入式操作系统μC/OSII 移植到本系统中,开发了网
卡,数据采集模块的底层驱动程序。同时,移植μC/GUI 图形用户接口,编写了键盘驱动,使嵌入式系
统具有更友好的人机界面,本系统将虚拟仪器技术和数据库相结合,引入 LabVIEWSQL及相关模型,为
有效地组织和管理数据以及构架网络数据库,打下了良好的基础。
作者:徐立艳 单位:通辽职业学院