APP下载

基于LabVIEW平台的信号实时采集与处理系统

2014-05-11郭天宇代中华张志涛范新刚

声学技术 2014年6期
关键词:板卡C语言信号处理

郭天宇,代中华,张志涛,范新刚



基于LabVIEW平台的信号实时采集与处理系统

郭天宇,代中华,张志涛,范新刚

(上海船舶电子设备研究所,上海 201108)

基于LabVIEW平台的信号实时采集与处理系统,相对于传统的基于Visual C++或VxWorks的系统,具有软件开发和修改快捷、可快速实现数据可视化、与通用平台或设备接口方便等优点,使科研人员能够将主要精力集中于实验而非编程。介绍了一种基于LabVIEW平台的信号实时采集与处理系统。首先介绍了该系统的硬件组成和软件设计方法,之后详细介绍了将不同厂商的硬件板卡集成到LabVIEW平台上,并由LabVIEW统一控制的方法——生成动态链接库。该系统已成功应用于某型水声装备的效能评估试验中。

LabVIEW平台;实时采集与处理;动态链接库

0 引言

实时信号采集与处理系统是进行水声试验所必需的设备。它一般由主控、信号调理、模拟输入、信号处理、模拟输出、网络通信等设备组成。国内外现有的实时信号采集与处理系统大多采用Windows&Visual C++或VxWorks作为软件平台,此类平台的缺点是:编写显示和控制程序复杂,无法快速实现不同阶段的数据可视化,无法快速修改程序以满足不断变化的试验需求。

本文所介绍的系统,将主控、模拟输入、信号处理、模拟输出、网络通信等不同类型、不同厂商的设备集成到LabVIEW平台上。该平台具有如下优点:开发显示和控制程序快捷,能快速实现各个阶段的数据可视化,可根据试验需求快速完成程序的修改,提供大量的常用信号处理函数,能直接与大多数平台或设备接口,如串口、网络通信接口、Matlab等。该系统的信号处理部分,除了采用传统的基于多片DSP的并行处理技术外,还增加了基于Matlab的集群并行处理技术,该处理方法是直接将Matlab信号处理程序分成若干程序片段,分配给多台计算机的多个CPU核,使这些程序片段并行执行,从而省去了把Matlab程序转换为C语言的中间环节,提高了信号处理程序的开发效率。

NI公司自己生产的硬件板卡,都会提供现成的可在LabVIEW下直接调用的驱动函数。但是对于非NI公司的硬件板卡,一般并不提供这种驱动函数,但是可以把硬件制造商提供的C语言驱动函数打包成动态链接库(Dynamic Link Library, DLL),从而实现在LabVIEW下对这些驱动函数的调用。本系统所使用的硬件板卡均不是NI公司的,正是运用了上述方法使所有硬件设备能够整合在LabVIEW平台上,由LabVIEW统一控制。

本系统能够使试验研究人员从繁重的软件编程工作中解脱出来,快速组建和修改软件,把主要精力集中在对试验结果的分析和信号处理算法的改进上。

1 系统硬件平台

本系统的硬件平台基于CPCI总线,主要由6U CPCI总线机箱、CPCI总线主控板、PMC总线数据采集卡、CPCI总线多DSP信号处理板、PMC总线反射内存网卡等设备组成。

系统原理框图如图1所示,粗虚线框括起的部分为本系统的硬件组成,其中,细虚线框括起的部分为系统的扩展设备。

使用的硬件:

CPCI总线主控板:GE公司,Intel Core 2多处理器1.66 GHz and 2.0 GHz;

PMC总线数据采集卡:General Standards公司,18 bit,32通道,差分,1.0 MSPS;

CPCI总线多DSP信号处理板:BittWare公司,8片ADSP-TS201 TigerSHARC DSPs;

PMC总线反射内存网卡:GE公司,174 MB/s 采样率。

图1 系统原理图

系统实物图如图2所示:

图2 系统照片

2 系统软件平台

本系统以NI公司的LabVIEW作为软件平台,所有硬件设备包括主控板、数据采集卡、数字信号处理板、反射内存网卡,都统一由LabVIEW控制,完成信号采集、信号处理、板卡间的通信、结果显示、数据保存、网络通信等功能。

2.1 LabVIEW简介

LabVIEW是美国国家仪器公司开发的图形化开发环境,同时它也是一种编程语言——G语言。它采用了比传统的文本编程语言更高效的图形化编程方式,主要特点如下:

(1) 提供了大量的用于显示和控制的图形控件,只须简单编程即可快速实现数据可视化和数据分析;

(2) 提供了大量常用的信号处理函数;

(3) 提供了与动态链接库(DLL)的接口。这样就可以用LabVIEW控制那些仅提供C语言驱动函数的非NI公司定制的硬件设备;

(4) 能直接与大多数平台或设备接口,如串口、网络通信接口、Matlab等。

基于上述特点,使用LabVIEW作为系统软件平台,将会显著提高系统开发效率和试验效率。

2.2 动态链接库(DLL)的生成方法[1,2]

在LabVIEW下控制硬件,对于NI公司自己生产的板卡,可以在LabVIEW下直接调用该公司提供的驱动函数;而对于非NI公司的板卡,厂商通常不提供这种函数,需要将其提供的C语言驱动函数转化为动态链接库(DLL),再由LabVIEW调用。以下以一个C语言的加法函数为例,介绍如何在Visual C++中生成动态链接库文件,及如何在LabVIEW中调用动态链接库中的函数。

2.2.1 生成动态链接库

假设已经有了一个实现两个浮点数相加的C语言函数,文件名add.c,程序如图3所示:

图3 C语言表达的add函数

打开VC,新建一个“Win32 Dynamic-Link Library”工程,命名为“add”,把add.c添加到工程中。

在函数体第一行添加关键字:

“_declspec(dllexport)”:

编译生成动态链接库“add.dll”,如图4所示。

图4 添加关键字后的add函数

2.2.2 调用动态链接库

以LabVIEW8.2为例,在函数模板中选择“Connectivity”中的“Libraries&Executables”,再选择“Call Library Function Node”,将其放在框图窗口中,见图5、6。

图5 框图窗口中的“Call Library Function Node”界面

图6 “Call Library Function Node”的显示框

双击“Call Library Function Node”,在“Function”中的“Library name and path”中把动态链接库文件添加进来,详见图7、8。

图7 “Call Library Function Node”配置窗口

图8 添加动态链接库文件

在“Function name”中选择要调用的函数,这里的动态链接库文件中只有“add”一个函数,实际中可能不止一个,见图9。

图9 添加“add”函数

选择“Parameters”,为“Call Library Function Node”添加函数参数,见图10。

首先添加“add”函数的输入参数a。单击“+”号,在右边的“Current parameter”区域做如下设置:

图10 函数参数配置窗口

“Name”:添加参数名称,这里是“a”;

“Type”:选择“Numeric”,表示数值型;

“Data Type”:选择“4-byte Single”,表示单精度浮点数;

“Pass”:这里参数不是指针,选择“Value”,如果是指针,比如参数c,则选择“Pointer to value”,见图11。

图11 配置函数参数“a”

参数b和c的添加与上面类似,所有参数添加完后,单击“OK”。

在LabVIEW的框图窗口中为“Call Library Function Node”添加输入输出控件,如图12所示。

图12 添加输入输出控件

在前面板的输入控件a和b中分别输入1和2,运行程序,输出控件c会显示3,如图13所示。说明动态链接库文件添加成功了。

图13 前面板窗口

实际的C语言驱动函数的参数可能会有数组或结构体等不同的数据类型,相应的C语言函数体中函数参数的数据类型及在LabVIEW中对“Call Library Function Node”的参数配置方法会有所不同,具体可参考LabVIEW安装目录下的examples dlldata passing文件夹下的“Call Native Code.llb”和“CLF_Example.dsw”,里面涉及所有数据类型。

2.3 软件设计介绍

本系统的软件采用多线程编程技术,创建了3个独立的线程:数据采集线程、数据接收与显示线程、DSP处理线程(虽然它属于DSP内部运行的程序,但由于它与另外两个线程独立并行执行,这里也把它称为“线程”)。在程序运行过程中,他们并行执行,保证了系统的实时性。线程的流程图如图14所示。

图14 程序流程图

LabVIEW的部分框图程序如图15、16所示。软件主界面如图17、18所示。

图15 LabVIEW框图程序1

图16 LabVIEW框图程序2

3 系统扩展功能介绍

本系统有两个扩展功能:DA输出和Matlab并行处理,见图1中的细虚线部分。

3.1 DA输出

如果实验需要把信号处理后的结果通过DA卡转换为模拟信号发射出去,可以在系统中添加一块DA卡,见图1细虚线框“1”。然后按照前面介绍的添加动态链接库的方法对DA卡进行控制。

3.2 Matlab并行信号处理

目前,较为复杂的并行信号处理程序大多数是在多片DSP上运行,程序的开发步骤分为:设计信号处理算法、编写Matlab程序、将Matlab程序转换成DSP C语言并行程序。本系统的信号处理部分就是采用上述方法。该方法的缺点是需要把Matlab程序转化为C程序移植到多片DSP中。如果程序较复杂,工作量很大。

图17 软件主界面1

图18 软件主界面2

下面介绍一种新的并行信号处理的实现方法,该方法的硬件平台不是基于DSP,而是多核计算机。较新版本的Matlab如Matlab2009b,支持安装Parallel Computing Toolbox,即并行计算工具箱。使用该工具箱,可以在多核计算机上直接开发基于Matlab的并行程序,其原理是将顺序执行的程序拆分并分配到不同的CPU核上,使这些拆分后的程序片段在各个CPU核上并行运行,如果CPU核足够多,就可以满足程序的实时性要求。该方法的优点是用Matlab直接编写并行程序,省去了向C语言移植的中间环节,可以极大地提高程序开发效率,缺点是需要单独配置若干多核计算机,携带不够方便。该方法可以作为本系统实现并行信号处理的另一种选择,见图1中细虚线框“2”。

4 结论

本文提出了一种新的针对实时信号采集与处理系统的系统集成方法,即基于LabVIEW平台,把不同厂商(非NI公司)的硬件板卡整合到LabVIEW平台上、在LabVIEW统一控制下生成动态链接库。此外,还介绍了一种实现并行处理程序的新方法:在多核计算机上开发基于Matlab的并行程序,该方法可以极大提高并行处理程序的开发效率。

在某型水声装备的湖上静态半实物仿真试验中,本文所介绍的系统作为核心分系统,与其他分系统配合,成功实现了对该装备各项性能指标的测试和效果的评估。

[1] 阮奇帧. 一个NI工程师的十年编程经验[M]. 北京: 北京航空航天大学出版社, 2009: 115-165.

RUAN Qizhen. Ten-year coding experience of a NI engineer[M]. Beijing: Beijing Aviation and Aerospace University Press, 2009: 115-165.

[2] 江建军, 刘继光. LabVIEW 程序设计教程[M]. 北京: 电子工业出版社, 2008: 207-212.

JIANG Jianjun, LIU Jiguang. The course of LabVIEW programming design[M]. Beijing: Electronic Industry Press, 2008: 207-212.

A real-time signal acquisition and processing system based on the platform of LabVIEW

GUO Tian-yu, DAI Zhong-hua, ZHANG Zhi-tao, FAN Xin-gang

(Shanghai Marine Electronic Equipment Research Institute, Shanghai 201108, China)

Compared with traditional systems which are based on Visual C++ or VxWorks, the real-time signal acquisition and processing system based on the platform of LabVIEW has many advantages in easy developing and modifying software, quick realizing data visualization and easy connecting with general-purpose platforms or equipments. This system can make the scientific researchers focus their energies on experiments rather than programming. A practical real-time signal acquisition and processing system based on the platform of LabVIEW is introduced in this paper. The hardware constitution and the software designing method about this system are firstly described, and then the method to generate a dynamic link library(DLL) is explained, which is used to integrate hardware cards from different manufacturers onto LabVIEW. This system has been successfully used in the experiment to evaluate the effectiveness of a certain kind of underwater acoustic equipment.

LabVIEW platform; real-time acquisition and processing; Dynamic Link Library(DLL)

TB556

A

1000-3630(2014)-06-0548-06

10.3969/j.issn1000-3630.2014.06.014

2013-08-13;

2013-11-04

郭天宇(1979-), 男, 黑龙江人, 硕士研究生, 研究方向为水声对抗仿真。

郭天宇, E-mail: 493984463@qq.com

猜你喜欢

板卡C语言信号处理
基于Visual Studio Code的C语言程序设计实践教学探索
基于PCI9054的多总线通信板卡的研制
基于FPGA的多通道模拟量采集/输出PCI板卡的研制
基于C语言的计算机软件编程
《信号处理》征稿简则
《信号处理》第九届编委会
《信号处理》征稿简则
《信号处理》第九届编委会
高职高专院校C语言程序设计教学改革探索
一种基于光纤数据传输的多板卡软件程序烧写技术