基于LabVIEW2012FPGA模式的数据采集和存储系统
2014-07-24王树东魏孔贞李晓培
王树东+魏孔贞+李晓培
摘 要: 为了提高数据采集系统精度,减少开发成本,提高开发效率,基于LabVIEW虚拟仪器开发工具研究并设计了一种数据采集系统。该系统采用FPGA编程模式和网络流技术实现大批量数据实时传输,并对数据进行分析处理和存储。系统硬件采用美国NI实时控制器CRIO?9025,实现16路数据可靠采集与存储。实验仿真及实际运行结果表明该数据采集系统能够精确地对数据进行实时采集以及分析处理,达到了项目要求。
关键词: FPGA; FIFO; 网络流; 数据采集系统; SQL数据库
中图分类号: TN98?34 文献标识码: A 文章编号: 1004?373X(2014)14?0142?04
Data acquisition and storage system based on LabVIEW 2012FPGA pattern
WANG Shu?dong1,2, WEI Kong?zhen1, LI Xiao?pei1
(1. College of Electrical and Information Engineering, Lanzhou University of Technology, Lanzhou 730050, China;
2. Gansu Key Laboratory for Advanced Industrial Process Control, Lanzhou 730050, China)
Abstract: In order to improve the accuracy of the data acquisition system, reduce development costs and improve development efficiency, a data acquisition system was designed on the basis of the development tool research for LabVIEW virtual instruments. The FPGA programming mode and network flow technology are adopted in the system to execute real?time transmission of the mass data, which is analyzed, processed and stored. The real?time controller cRIO?9025 made by National Instruments (NI) is used in the system hardwares to achieve 16?channel data acquisition and storage. Simulation and experimental results show that the data acquisition system can realize the accurate real?time data acquisition and analysis, and meet the project requirements.
Keywords: FPGA; FIFO; network stream; data acquisition system; SQL database
0 引 言
随着计算机技术和智能仪器仪表的深入发展,以计算机为核心的网络化测控系统得到越来越多的应用,尤其是在航空航天等国防领域。LabVIEW是虚拟仪器领域中最具有代表性的图形化编程开发平台,是目前国际上首推并应用最广的数据采集和控制开发环境之一,主要应用于仪器控制、数据采集、数据分析等领域,并适用于多种不同的操作系统平台[1]。
LabVIEW采用强大的图形化语言(G语言)编程,面向测试工程师而非专业程序员,编程非常方便,人机交互界面直观友好,具有强大的数据可视化分析和仪器控制能力等特点[2]。基于LabVIEW开发工具研究设计一套数据采集系统,实现了包括数据采集、数据分析与数据处理,并通过实验和实际调试验证了系统的功能。
1 基于LabVIEW数据采集系统整体架构
本系统主要是以电测型传感器、高精度数据采集卡、实时控制器、触摸屏和工控机进行数据的自动采集、处理、记录、显示、存储和分析的系统。
其工作过程为:传感器将相应被测对象的量值转换成电信号,数据经过采集卡A/D转换处理之后上传到实时控制器,同时将数据送入到触摸屏进行显示和操作,数据经过网线送入工业PC机,由上位机进行数据处理,包括数据的低通滤波,采样波形的实时显示,参数修正,历史数据,产生报表等。为了防止数据丢失,采用外挂硬盘对数据以采样速率对数据进行存储,同时以一定的时间间隔插入数据库保存,并通过数据库技术实现了历史数据的检索。
本系统的总体结构如图1所示。
图1 数据采集系统总体结构图
2 硬件设计
基于LabVIEW软件的16路数据采集系统由硬件部分和软件部分组成。本系统硬件主要包括:工控机和数据采集卡(NI?9222和NI?9229),控制器(NI CompactRIO?9025),触摸屏(NI?2212),500 GB存储硬盘,传感器等。
数据采集卡NI?9222和NI?9229作为高速、同步C系列模块,适用于各类NI CompactDAQ或CompactRIO机箱。可工作于扫描模式和FPGA模式,能够方便插入控制器的FPGA背板上,支持热插拔。NI USB?9229,4通道24位同步模拟数据采集卡,采样频率为(1.613~50 KS/s),额定采样范围±60 V。NI USB?9222,4通道16位逐次逼近型模数转换器采集卡,测量范围±10 V。
触摸屏TPC?2212采用交换机直接连接上位机,在上位机LabVIEW中创建项目,在程序生成规范模式下就可以把主控界面生成EXE运行文件直接装入TPC?2212,简单方便,实用性强。
NI CompactRIO系统构架主要包括实时控制器(内置嵌入式处理器)、可重配置FPGA、及模块化I/O、CompactRIO的RIO(FPGA)核心内置数据传输机制,负责把数据传到嵌入式处理器以进行实时分析,数据处理,数据记录或与联网主机通信。利用LabVIEW FPGA基本的I/O功能,用户可以直接访问每个I/O模块的输入/输出电路,系统硬件结构如图2所示。
图2 系统硬件结构图
NI为硬件提供驱动程序,用户可以通过驱动程序接口Measurement&Automntion Explorer(NI MAX)对硬件进行各种必要的设置与测试。本设计中需要在NI MAX进行实时控制器参数配置,如语言环境、IP地址、时间,以及在控制器需要的各种软件驱动。
3 系统软件设计的相关技术
上位机数据采集系统采用LabVIEW软件进行编程,其独特的G语言和丰富的软件开发工具包给系统编程带来了很大的便利,它为用户提供简单、直观的图形编程法,在开发虚拟仪器方面有着较强的优势[3]。
3.1 软件总体结构
本设计主要包括数据采集和数据存储两部分,数据采集主要由下位机嵌入式NI CompactRIO平台实现,将写好的LabView代码编译下载到可重复配置FPGA中,利用采集卡I/O模块实现数据的采集。为了采集数据的可靠存储,存储系统分为两部分:一部分经过RT?host.VI以同步采样速率将原始数据采用TDMS文件格式存储到500G硬盘;另外一部分以一定的时间间隔将数据送入的PC机中的SQL Server数据库,可以方便的对数据库进行操作,包括查询、删除、插入、导入导出等。将RT导出的数据经过触摸屏TPC?2212上进行实时显示,并且可以进行相应的操作。整个系统实现主要功能有:数据采集、数据处理、参数修正、数据存储、生成报表,报警记录等。数据采集系统软件主要架构如图3所示。
图3 数据采集系统软件构架图
3.2 软件实现关键技术
本设计采用的主要技术有:采用FPGA实现软件定义硬件,利用FIFO实现下位机FPGA和RT之间的数据转换。采用网络流技术,实现RT和上位机之间的数据传输。利用数据库labsql工具包,实现数据库的操作。
3.2.1 下位机FPGA与实时控制器RT之间的数据传输
常规的数据采集卡所能实现的功能是由采集卡上特定的芯片实现的,由于实际应用中的需求不同,所以需要一种可以根据实际需求随时改变功能的板卡,那么FPGA(Field?Programmable Gate Array)现场可编程门阵列,就可以通过软件改变它的硬件功能。
LabView的FPGA工具包有两种工作模式:即扫描模式和FPGA模式。在扫描模式下不需要对FPGA进行任何编程,RT会直接用I/O变量映射C模块的I/O。虽然使用扫描模式极大的降低了FPGA的编程的复杂性,但是扫描模式支持的最高扫描频率为100 Hz,不适合高速数据采集,而且FPGA模式可以实现多速率控制,且性能不因应用的增加而降低,能够在专用的硬件上实现控制逻辑。因此采用FPGA编程模式进行数据采集。
实时系统和FPGA之间的数据交换是采集系统的关键问题,一般采用三种方式,即轮询、中断、FIFO。其中轮询和中断方式适用于采样速度较慢的场合,在高速采集情况下,轮询方式会造成数据的丢失;而中断方式则会因响应中断造成延迟,导致速度不可能太高,因此本系统中采用FIFO方式。
FIFO(First In First Out)先入先出缓冲区,可以用于多线程中的数据交换,最重要的用途就是在RT和FPGA直接进行数据交换,在缓冲区满后会处于等待状态,直至超时或者缓冲有新的的空闲位置。FPGA根据FIFO作用域不同,将其分为三类:Target?Scoped FIFO,用于在FPGA终端一个或者多个VI的不同线程间传递数据;VI?Scoped FIFO,用于在同一VI的不同线程间传递数据。DMA FIFO,用于RT和FPGA之间传递数据。由于FPGA运行的精确性,在高速采集过程中它的运行速度都在μs甚至ns的级别,而RT系统一般都在ms级别。因此,FPGA采集的速率远远快于RT循环的运行速度。RT如果需要读取全部数据,又不能出现数据丢失的情况,就必须采用DMA FIFO方式传递数据。
DMA直接内存访问在数据采集中的使用非常普遍,本系统中传输方向为Target→Host FIFO,因为没有CPU的参与,因此传输速度非常快,在传输过程中,配置DMA FIFO的大小是非常关键的,在LabVIEW中称DMA FIFO的大小为深度,深度的大小直接影响到了数据传输的速度,如果深度太大,传输速率会降低;设定的太小,会丢失数据甚至会使程序中的读取的等待时间加长而影响程序的执行[4],本系统中共根据调试最后将其大小设定为4 095,但是必须保证RT方面的FIFO足够大,这样FPGA在插入数据是就不需要等待了。
3.2.2 实时控制器与PC机之间的数据通信
实时控制系统与上位PC机之间可以通过不同的方式进行通信,不同的通信方式具有各自的优缺点。常见的通信方式有:网络共享变量(Network?Published Shared Variables);TCP/IP;网络流/队列等。
TCP(传输控制协议)是一个端对端、面向连接的协议,具有快速和面向连接(不丢失数据)的特性,可以进行大数据的通信[5],但是在通信是必须把其他数据类型转换为字符数据串的格式,为编程带来一定的麻烦。
网络流可实现两个LabVIEW应用之间发送数据的两种通信方式。网络数据流不损耗数据,是单向的一对一通信通道,由写入和读取端点构成。每个网络流端点均使用FIFO缓存传输数据。网络流引擎(NSE)使用LogosXT将数据从写入端点的FIFO缓存传输至读取端点的FIFO缓存[1]。通过网络流可以快速准确实现RT与上位机之间的数据通信,图4显示了网络流中的数据流。
图4 网络流数据流向示意图
要实现RT与上位机的数据通信,需要以下几个函数:
(1) 创建网络流写入/读取方端点。通过创建网络流写入/读取方端点函数找到读取方统一资源定位(Uniform Resource Locator,URL)或该函数的写入方URL。在创建时需要知道URL使用的协议,端点所在计算机的项目别名、DNS名或IP地址,该部分的默认值为localhost,即连接至端点所在的计算机的网络位置,本设计系统中为所用RT的IP地址192.254.4.42。
(2) 向流中写入/读取单个或者多个数据。
(3) 刷新流。保证流中的数据实时刷新。销毁流。
(4) 销毁读取方和写入方端点后,可完全销毁流,释放流占用的内存。
上位机网络流和下位机类似,不同的是从下位机读取流中的数据,实时控制器RT端网络流示意图如图5所示。
图5 控制器端网络流结构图
3.2.3 数据库存储
LabVIEW本身并不具有数据库访问的功能,利用LabVIEW免费提供的LabSQL工具包。将ADO和SQL的操作封装在各个VI当中,无需了解内部结构,易于调用。
数据库采用SQL Server 2005作为存储软件,数据存储工具包主要使用ADOCreate Conn.vi,ADO Open Conn.vi建立数据库的连接,ADO SQL Execute.vi中使用Insert语句来实现将数据插入到数据库中,应该注意将数据库的打开和关闭放在While循环之外,避免每次循环都要对数据库进行不必要的操作而影响速度[6]。通过操作数据库可以方便的对数据进行读取,分析,插入等操作。数据库存储和上位机网络流采集程序框图如图6所示。
图6 上位PC机存储和网络流读取程序图
4 实验验证
在实验室对数据采集卡进行直流电压输入,通过采集卡采集数据,将写好的下位机VI通过FPGA编译工具包下载到FPGA背板中,通过缓冲区FIFO上传到实时控制器RT中,将RT中的采集数据以同步采样速率存储到外挂硬盘中,RT与PC机通过网络流进行数据交互,在PC机VI中对数据进行参数修正和处理,在实时显示界面有修正前和修正后的数据对比以及实时曲线,经过实际对比,数据精确可靠,系统主界面如图7所示。
图7 数据采集系统主界面示意图
利用数据库技术,根据起始时间和终止时间查询想要的数据,历史曲线如图8所示。
由运行的前面板和历史曲线显示可以看出,原始数据输入为直流5 V,显示采集结果为4.997 72 V,对数值进行修正乘以系数0.499 5之后得到处理数据为2.498 86 V,将采集的数据存入到数据库中,通过历史曲线面板调用某一时间段的数据,图中显示为2.490 52~2.502 1之间,满足精度和准度要求。
5 结 论
本数据采集系统采用先进的实时控制器RT和4通道高速数据采集卡,采用灵活的FPGA编程模式,实现了芯片的虚拟化,程序的可重复配置,通过FIFO实现了FPGA与实时控制器RT的数据高速传输,通过网络流实现了RT与工控机之间的数据传输,解决了它们之间由于工作频率不同而造成的数据交换不同步和数据丢失的问题,实现了数据实时显示,数据存储,历史报表等。
图8 数据库历史曲线显示示意图
参考文献
[1] 陈树学,刘萱.LabVIEW宝典[M].北京:电子工业出版社,2011.
[2] 王利强.计算机测控系统与数据采集卡应用[M].北京:机械工业出版社,2007.
[3] 连海洲,赵英俊.基于 LabVIEW 技术的虚拟仪器系统[J].仪器与测控,2001(8):21?23.
[4] 刘君华.基于 LabVIEW的虚拟仪器设计[M].北京:电子工业出版社,2003.
[5] 杨乐平,李海涛.Lab VIEW 程序设计与应用[M].北京:电子工业出版社,2001.
[6] 吴伟.双通道3GSPS数据采集模块硬件设计[D].成都:电子科技大学,2011.
网络流可实现两个LabVIEW应用之间发送数据的两种通信方式。网络数据流不损耗数据,是单向的一对一通信通道,由写入和读取端点构成。每个网络流端点均使用FIFO缓存传输数据。网络流引擎(NSE)使用LogosXT将数据从写入端点的FIFO缓存传输至读取端点的FIFO缓存[1]。通过网络流可以快速准确实现RT与上位机之间的数据通信,图4显示了网络流中的数据流。
图4 网络流数据流向示意图
要实现RT与上位机的数据通信,需要以下几个函数:
(1) 创建网络流写入/读取方端点。通过创建网络流写入/读取方端点函数找到读取方统一资源定位(Uniform Resource Locator,URL)或该函数的写入方URL。在创建时需要知道URL使用的协议,端点所在计算机的项目别名、DNS名或IP地址,该部分的默认值为localhost,即连接至端点所在的计算机的网络位置,本设计系统中为所用RT的IP地址192.254.4.42。
(2) 向流中写入/读取单个或者多个数据。
(3) 刷新流。保证流中的数据实时刷新。销毁流。
(4) 销毁读取方和写入方端点后,可完全销毁流,释放流占用的内存。
上位机网络流和下位机类似,不同的是从下位机读取流中的数据,实时控制器RT端网络流示意图如图5所示。
图5 控制器端网络流结构图
3.2.3 数据库存储
LabVIEW本身并不具有数据库访问的功能,利用LabVIEW免费提供的LabSQL工具包。将ADO和SQL的操作封装在各个VI当中,无需了解内部结构,易于调用。
数据库采用SQL Server 2005作为存储软件,数据存储工具包主要使用ADOCreate Conn.vi,ADO Open Conn.vi建立数据库的连接,ADO SQL Execute.vi中使用Insert语句来实现将数据插入到数据库中,应该注意将数据库的打开和关闭放在While循环之外,避免每次循环都要对数据库进行不必要的操作而影响速度[6]。通过操作数据库可以方便的对数据进行读取,分析,插入等操作。数据库存储和上位机网络流采集程序框图如图6所示。
图6 上位PC机存储和网络流读取程序图
4 实验验证
在实验室对数据采集卡进行直流电压输入,通过采集卡采集数据,将写好的下位机VI通过FPGA编译工具包下载到FPGA背板中,通过缓冲区FIFO上传到实时控制器RT中,将RT中的采集数据以同步采样速率存储到外挂硬盘中,RT与PC机通过网络流进行数据交互,在PC机VI中对数据进行参数修正和处理,在实时显示界面有修正前和修正后的数据对比以及实时曲线,经过实际对比,数据精确可靠,系统主界面如图7所示。
图7 数据采集系统主界面示意图
利用数据库技术,根据起始时间和终止时间查询想要的数据,历史曲线如图8所示。
由运行的前面板和历史曲线显示可以看出,原始数据输入为直流5 V,显示采集结果为4.997 72 V,对数值进行修正乘以系数0.499 5之后得到处理数据为2.498 86 V,将采集的数据存入到数据库中,通过历史曲线面板调用某一时间段的数据,图中显示为2.490 52~2.502 1之间,满足精度和准度要求。
5 结 论
本数据采集系统采用先进的实时控制器RT和4通道高速数据采集卡,采用灵活的FPGA编程模式,实现了芯片的虚拟化,程序的可重复配置,通过FIFO实现了FPGA与实时控制器RT的数据高速传输,通过网络流实现了RT与工控机之间的数据传输,解决了它们之间由于工作频率不同而造成的数据交换不同步和数据丢失的问题,实现了数据实时显示,数据存储,历史报表等。
图8 数据库历史曲线显示示意图
参考文献
[1] 陈树学,刘萱.LabVIEW宝典[M].北京:电子工业出版社,2011.
[2] 王利强.计算机测控系统与数据采集卡应用[M].北京:机械工业出版社,2007.
[3] 连海洲,赵英俊.基于 LabVIEW 技术的虚拟仪器系统[J].仪器与测控,2001(8):21?23.
[4] 刘君华.基于 LabVIEW的虚拟仪器设计[M].北京:电子工业出版社,2003.
[5] 杨乐平,李海涛.Lab VIEW 程序设计与应用[M].北京:电子工业出版社,2001.
[6] 吴伟.双通道3GSPS数据采集模块硬件设计[D].成都:电子科技大学,2011.
网络流可实现两个LabVIEW应用之间发送数据的两种通信方式。网络数据流不损耗数据,是单向的一对一通信通道,由写入和读取端点构成。每个网络流端点均使用FIFO缓存传输数据。网络流引擎(NSE)使用LogosXT将数据从写入端点的FIFO缓存传输至读取端点的FIFO缓存[1]。通过网络流可以快速准确实现RT与上位机之间的数据通信,图4显示了网络流中的数据流。
图4 网络流数据流向示意图
要实现RT与上位机的数据通信,需要以下几个函数:
(1) 创建网络流写入/读取方端点。通过创建网络流写入/读取方端点函数找到读取方统一资源定位(Uniform Resource Locator,URL)或该函数的写入方URL。在创建时需要知道URL使用的协议,端点所在计算机的项目别名、DNS名或IP地址,该部分的默认值为localhost,即连接至端点所在的计算机的网络位置,本设计系统中为所用RT的IP地址192.254.4.42。
(2) 向流中写入/读取单个或者多个数据。
(3) 刷新流。保证流中的数据实时刷新。销毁流。
(4) 销毁读取方和写入方端点后,可完全销毁流,释放流占用的内存。
上位机网络流和下位机类似,不同的是从下位机读取流中的数据,实时控制器RT端网络流示意图如图5所示。
图5 控制器端网络流结构图
3.2.3 数据库存储
LabVIEW本身并不具有数据库访问的功能,利用LabVIEW免费提供的LabSQL工具包。将ADO和SQL的操作封装在各个VI当中,无需了解内部结构,易于调用。
数据库采用SQL Server 2005作为存储软件,数据存储工具包主要使用ADOCreate Conn.vi,ADO Open Conn.vi建立数据库的连接,ADO SQL Execute.vi中使用Insert语句来实现将数据插入到数据库中,应该注意将数据库的打开和关闭放在While循环之外,避免每次循环都要对数据库进行不必要的操作而影响速度[6]。通过操作数据库可以方便的对数据进行读取,分析,插入等操作。数据库存储和上位机网络流采集程序框图如图6所示。
图6 上位PC机存储和网络流读取程序图
4 实验验证
在实验室对数据采集卡进行直流电压输入,通过采集卡采集数据,将写好的下位机VI通过FPGA编译工具包下载到FPGA背板中,通过缓冲区FIFO上传到实时控制器RT中,将RT中的采集数据以同步采样速率存储到外挂硬盘中,RT与PC机通过网络流进行数据交互,在PC机VI中对数据进行参数修正和处理,在实时显示界面有修正前和修正后的数据对比以及实时曲线,经过实际对比,数据精确可靠,系统主界面如图7所示。
图7 数据采集系统主界面示意图
利用数据库技术,根据起始时间和终止时间查询想要的数据,历史曲线如图8所示。
由运行的前面板和历史曲线显示可以看出,原始数据输入为直流5 V,显示采集结果为4.997 72 V,对数值进行修正乘以系数0.499 5之后得到处理数据为2.498 86 V,将采集的数据存入到数据库中,通过历史曲线面板调用某一时间段的数据,图中显示为2.490 52~2.502 1之间,满足精度和准度要求。
5 结 论
本数据采集系统采用先进的实时控制器RT和4通道高速数据采集卡,采用灵活的FPGA编程模式,实现了芯片的虚拟化,程序的可重复配置,通过FIFO实现了FPGA与实时控制器RT的数据高速传输,通过网络流实现了RT与工控机之间的数据传输,解决了它们之间由于工作频率不同而造成的数据交换不同步和数据丢失的问题,实现了数据实时显示,数据存储,历史报表等。
图8 数据库历史曲线显示示意图
参考文献
[1] 陈树学,刘萱.LabVIEW宝典[M].北京:电子工业出版社,2011.
[2] 王利强.计算机测控系统与数据采集卡应用[M].北京:机械工业出版社,2007.
[3] 连海洲,赵英俊.基于 LabVIEW 技术的虚拟仪器系统[J].仪器与测控,2001(8):21?23.
[4] 刘君华.基于 LabVIEW的虚拟仪器设计[M].北京:电子工业出版社,2003.
[5] 杨乐平,李海涛.Lab VIEW 程序设计与应用[M].北京:电子工业出版社,2001.
[6] 吴伟.双通道3GSPS数据采集模块硬件设计[D].成都:电子科技大学,2011.