基于ARM和LabVIEW的网络数据采集测试系统设计

2016-04-12 00:00:00陈颖峰王玉红王蕾
现代电子技术 2016年13期

摘 要: 网络化虚拟仪器是继虚拟仪器之后仪器仪表领域出现的新的发展方向,提出了将嵌入式系统、网络与虚拟仪器结合的技术路线,将信号的采集、处理、存储分布于不同的网络位置的实施方案。利用ARM 嵌入式在现场采集数据,通过网络通信将信号处理和存储工作交给上位机负责,采用S3C44B0X为核心的开发环境,然后进行软件系统的搭建,包括移植μC/OS⁃Ⅱ嵌入式操作系统,嵌入式图形界面系统μC/GUI,ADC及网卡的驱动程序编写以及移植LwIP实现TCP/IP协议等。测试结果表明,该系统功能完善,操作十分方便,完全满足实际应用的需要,可以有效地组织和管理数据以及构架网络数据库。

关键词: 虚拟仪器; ARM; LabVIEW; 网络数据采集; μC/OS⁃Ⅱ; LwIP

中图分类号: TN911⁃34; TP274 文献标识码: A 文章编号: 1004⁃373X(2016)13⁃0088⁃05

Abstract: The networked virtual instrument is a new development trend of instrument and meter field after the development of virtual instrument. The technical route of combining the embedded system, network and visual instrument, and the implementation scheme of distributing the signal acquisition, processing and storage to different network locations are proposed. In the scheme, the ARM embedded system is used for field signal acquisition, the signal processing and storage work are allocated to upper computer through network communication. The S3C44B0X is used as the core development environment to establish the software system, including the transplant of embedded operating system μC/OS⁃Ⅱ, embedded graphic interface system μC/GUI, driver programming of ADC and network card, and TCP/IP protocol realization with LwIP transplant. The test results show that the system has perfect function and convenient operation, can satisfy the requirement of practical application, organize and manage the data efficiently, and construct the network database.

Keywords: virtual instrument; ARM; LabVIEW; network data acquisition; μC/OS⁃Ⅱ; LwIP

0 引 言

虚拟仪器(Virtual Instrument)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向[1]。这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器的功能也越来越强大,目前已经出现含嵌入式系统的仪器。另一种方式是将仪器装入计算机。以通用的计算机硬件及操作系统为依托,实现各种仪器功能。虚拟仪器主要是指这种方式[2]。

使用网络化虚拟仪器技术,可以不受地点、时间的约束,获取准确的测量信息或数据,与传统的仪器、测量、测试相比,带来了诸多便利[3]。在网络化虚拟仪器中,被测对象可通过测试现场的普通仪器设备,将测得数据通过网络传输给异地的精密测量设备或高档次的微机化仪器去分析、处理,能实现测量信息的共享,可掌握网络节点处信息的实时变化趋势;此外,也可通过具有网络传输功能的仪器将数据传至原端即现场。采用自动抄表系统,可提高抄表的准确性,能减少因估计或誊写而可能出现的帐单错误(供用电、水、燃气、热能等)。管理部门因此能及时获得准确的数据信息,用户也不再需要与抄表员预约上门抄表时间,迅速查询帐单。使用网络化虚拟仪器,采用网络测量技术,可以大幅度提高测量效率,降低监测成本以及减少计量测试工作的周期[4]。

1 硬件设计

本文的目的是充分发挥分布式虚拟仪器的概念,将嵌入式系统、网络、虚拟仪器联系起来,将信号的采集、处理、存储分布于不同的网络位置。结合了嵌入式系统的灵活性,避免其计算能力不强的缺点,将信号处理工作交给上位机负责。系统结构如图1所示。

下位机的虚拟仪器负责信号的采集,通过以太网将数据传输到上位机,利用上位机强大的计算能力和海量存储空间完成对原始数据的后期处理。

1.1 以太网设备

本系统采用的网络RTL8019AS是一种高度集成的以太网控制芯片,能简单的实现Plug and Play并兼容NE2000。

RTL8019AS芯片内部集成了DMA控制器,ISA总线控制器和集成16KSRAM、网络PHY 收发器。用户可以通过DMA方式把需要发送的数据写入片内SRAM 中,让芯片自动将数据发送出去:而芯片在接收到数据后,用户也可以通过DMA方式将其读出。RTL8019AS的详细介绍请见RTL8019AS 数据手册。

在网络通信模块电路中,RTL8019AS与处理器S3C44B0X之间的信号连接关系如图2所示。

1.2 电源、时钟及复位电路

在本系统中,采用的是5 V和3.4 V的直流稳压电源,其中,S3C44B0X核心使用2.5 V电源,外围器件需3.4 V电源,另外部分器件需5 V电源,5 V电路加了工作指示灯,并且加了二极管对电路加以保护。晶振电路用于向CPU及其他电路提供工作时钟。在该系统中,S3C44BOX使用常用的无源晶振,电路如图3所示。

根据S3C44B0X的最高工作频率以及PLL电路的工作方式,系统选择了10 MHz的有源晶振,10 MHz的晶振频率经过S3C44B0X片内的PLL电路倍频后,最高可以达66 MHz。片内的PLL电路兼有频率放大和信号提纯的功能,因此,系统可以以较低的外部时钟信号获得较高的工作频率,以降低因高速开关时钟造成的高频噪声。

同时在系统中还有频率为32.768 kHz的实时时钟晶振源,在USB接口芯片处也有一个48 MHz的晶振。在系统中,复位电路主要完成系统的上电复位和系统在运行时用户的按键复位功能。复位电路可由IMP811 芯片来完成,复位电路如图4所示。

该复位电路的工作原理如下:IMP811是一个可靠性很高的复位芯片,当用户按下按钮S1时或者RST_IN送过来一个低电平时,Reset端输出为低电平,系统进入复位状态,松开S1时,系统即可进入正常工作状态。

2 实时操作系统

实时操作系统简称RTOS,具体指系统能及时响应来自外部事件的请求,在确定的时间处理该事件,统一控制实时任务一致运行。RTOS的开发工具允许用户针对不同的应用对象对RTOS的内核进行裁剪、压缩,以适应各类应用,并提供应用程序的调试环境。

2.1 μC/OS⁃Ⅱ的系统结构

μC/OS⁃Ⅱ嵌入式实时操作系统是一个完整的、可移植、固化、裁剪的占先式实时多任务内核,目前己经在超过40种不同架构的微处理器上运行,图5是本系统的软硬件体系结构。

初始化程序是针对S3C44B0X使用汇编语言编写的。在将控制权交给操作系统前,初始化最基本的硬件设备。主要工作是配置SDRAM并将操作系统代码从FLASH拷贝到SDRAM中。

2.2 小键盘驱动编写

系统采用智能显示驱动芯片HD7279连接一个4×4键盘和S3C44B0X通信。HD7279A是一片具有串行可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示﹑键盘接口的全部功能。HD7279A内部含有译码器,可直接接收BCD码或16进制码,并同时具有2种译码方式。此外,还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。HD7279A具有片选信号可方便地实现多于8位的显示或多于64 键的键盘接口。

3 硬件设计

3.1 模块总体设计

整个系统的信号流程如图6所示,信号通过ADC 后以DMA方式进入两个8 MB的SDRAM,二者构成一对乒乓存储系统,一侧负责采集信号的缓存,同时另一侧负责向上位机发送,二者交替工作,保证信号流采集和发送的连续。对于网络通信模块,由于μC/OS⁃Ⅱ只是一个实时的任务调度及通信内核,缺少对网络协议的支持,所以需要将LwIP(Light Weight IP Protocol)移植到μC/OS⁃Ⅱ上,使其支持网络功能。本章后面部分将重点介绍NE2000 兼容网卡RTL8019AS驱动程序在嵌入式系统中的编写。

3.2 信号调理模块

S3C44B0X内部具有一个逐次逼近型8 路模拟信号输入的10 位ADC,但是不具有采样保持(S/H)电路,不能用于快速变化的信号采集,因此需要在前级信号调理电路中加入采样保持功能。

在此系统中,采用了Microchip Technology公司的模拟增益可编程运放(PGA) MCP6S28芯片,传感器采集的信号接入MCP6S28的通道输入端,输出VOUT接入处理器内部的A/D转换器的信号输入端AIN管脚。MCP6S28 的增益可设置为1~32 V/V,它具有多路选择输入(MUX)模块,共有8 路输入。MCP6S28具有SPI 接口,故将其与S3C44B0X的对应SPI 管脚连接即可,用于选择增益水平和输入通道。对MCP6S28进行操作的控制字节和数据字节均从SI引脚输入,并在写入数据的串行时钟(SCK)上升沿被锁存。

3.3 A/D采样器程序设计

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)×16

A/D的最高采样速率是100 KS/s,即每个采样周期为10 μs。ARM7运行在66 MHz主频下,每个周期为15.152 ns。这样每个采样周期包括660个主频周期。ARM7具有0.97 MIPS/MHz的指令效率,660个主频周期可以运行约640条的指令。在计数器触发A/D采样的情况下,处理器的工作是每采样周期从A/n读取一次数据并保存到RAM中,代码如下:

LDR R0,[R1]:寄存器Rl中保存了A/D数据寄存器的地址,需要3周期

STR R0,[R2,#4]:寄存器R2中保存了RAM中数据存储空间的起始地址;需要2周期

这个操作需要5个主频周期。利用剩余的转换时间,ARM7可以完成数据的打包发送以及其他的任务。在进行A/D转换时,ARM要禁止一切可屏蔽中断。

4 LabVIEW上位机模块设计

上位机的功能有两方面:一是负责数据的实时显示,参数测量和存储;二是对下位机的远程控制。监测人员能够直观地获得测试结果,可以很方便地对远程数据采集系统进行控制。

本系统的上位机系统利用虚拟仪器技术和LabVIEW图形化软件开发集成环境,设计了该数据采集系统的数据分析、存储和远程控制模块。测试结果表明,该数据分析处理模块的功能比较完善,操作十分方便,完全满足实际应用的需要。

4.1 网络数据通信接口程序设计

上位机和下位机通信的传输内容可以分为测控命令和数据两种。其中下位机向PC机发送数据,数据量大、对传输速度要求较高、对可靠性的要求不很严格。

UDP是面向非连接的方式, 提供的是不可靠的数据传输,但实现起来比较简单,速度快、实时性好,并且支持广播和组播,同时在单一、封闭局域网中可靠性也很高。因此用一般的UDP通信就可以达到很好的可靠性以满足数据传输的要求。

一个简单的UDP数据接收、显示程序如图7所示。程序分为UDP打开,UDP读取和UDP关闭三个环节。首先指定本地端口号,本文为61557,这个端口必须与下位机设置的目标远程端口一致。在运行此程序前,必须先运行下位机程序。UDP Read节点设置UDP数据报最大字节数,最大值为548,此处设置为100,若超过本值,Windows将提示出错信息。

4.2 控制程序设计

程序界面如图8所示,观测人员可以通过示波器的波形显示及时调整远端采集设备的相应参数。这样可以充分利用A/D转换器的最大输入量程(2.5 V)尽可能提高测量精度。另一个可以控制的参数是采样速率,当被测信号的频率较低时可以使用低速率采样,在保证失真度的情况下降低数据流,避免因网络拥挤可能产生的数据丢失。设备重启控制用于使下位机的系统软件及硬件寄存器完全恢复到初始状态。

控制信号的数据量较小,对传输的可靠性要求严格,故采用TCP 协议。对于LabVIEW程序的设计采用事件驱动模式,当增益水平和采样速率的List 控件值改变时,驱动主程序向下位机发送控制信号。向下位机发送的是增益水平或者采样速率的数值。因为网络以及系统的延时,效果通常要经过一段时间才能反映出来。

4.3 下位机响应程序编写

下位机的TCP/IP协议栈是通过LwIP实现的,LwIP提供一系列函数实现IP,TCP,UDP等的操作。其中tcp_input(),tcp_process(),tcp_receive()与TCP输入处理有关。函数netconn listen()让系统进入TCP监听状态。当TCP连接建立后,tcp_receive()把接收到的数据tcp_data传给上级应用程序。再判断tcp_data数值的大小,分为以下三种情况:

若为0X11111111,使程序跳转到系统初始位置,重新设置各种设备。

若为1~32,调用SPI 控制程序,给数据寄存器SPDR赋值,再通过MOSI发送给MCP6S28的增益寄存器。

若tcp_data≤1 000,则为采样速率控制量,需修改A/D转换预置比例因子寄存器ADCPSR,修改的值根据芯片手册推导。

4.4 数据文件储存程序设计

由于二进制文件存储速度快,冗余数据少,格式也最为紧凑,因此在进行大量数据采集时,往往采用这种文件格式。图9中是用底层函数实现的二进制文件的输入VI,可以实时存储通过UDP接收的数据,首先用Open/Creat/Replace File VI新建一个文件,然后在WhileLoop 中用Write File 函数将网络通信数据写入文件,最后用Close File 函数关闭文件。

5 结 论

本文基于分布式虚拟仪器概念,设计了网络化数据采集和测试系统,基于ARM的下位机和基于LabVIEW 的上位机通过网络协同工作,实现了数据的实时采集、处理和存储。首先针对基于ARM微处理器S3C44B0X 的嵌入式采集系统进行整体开发,将嵌入式操作系统μC/OS⁃Ⅱ移植到本系统中,开发了网卡,数据采集模块的底层驱动程序。同时,移植μC/GUI图形用户接口,编写了键盘驱动,使嵌入式系统具有更友好的人机界面,本系统将虚拟仪器技术和数据库相结合,引入LabVIEW SQL及相关模型,为有效地组织和管理数据以及构架网络数据库打下了良好的基础。

参考文献

[1] 吴文忠,李万磊.基于ARM和Zigbee的智能家居系统[J].计算机工程与设计,2011,32(6):1987⁃1990.

[2] 费莉,王博,刘述喜.基于LabVIEW的数据采集及测试系统设计[J].重庆理工大学学报(自然科学版),2012(10):38⁃41.

[3] 全晓莉,周南权,余永辉.基于虚拟仪器技术的网络实验系统的研究[J].计算机工程与设计,2011,32(9):3227⁃3230.

[4] 王晓亮,谢朝辉.基于LabVIEW和FPGA的存储器测试系统设计[J].计算机测量与控制,2012,20(7):1763⁃1765.

[5] 任宇峰,何强,韩壮志,等.基于虚拟仪器技术的雷达信号模拟器设计[J].现代电子技术,2010,33(19):67⁃70.

[6] 陈松林,黄建萍.基于LabVIEW的网络化数据采集及处理系统[J].现代电子技术,2010,33(2):182⁃184.

[7] 李红丽,彭文华.基于LabVIEW与ARM微控制器的智能家居控制系统[J].物联网技术,2015,5(9):80⁃81.