郭天宇,代中華,張志濤,范新剛
?
基于LabVIEW平臺的信號實時采集與處理系統(tǒng)
郭天宇,代中華,張志濤,范新剛
(上海船舶電子設(shè)備研究所,上海 201108)
基于LabVIEW平臺的信號實時采集與處理系統(tǒng),相對于傳統(tǒng)的基于Visual C++或VxWorks的系統(tǒng),具有軟件開發(fā)和修改快捷、可快速實現(xiàn)數(shù)據(jù)可視化、與通用平臺或設(shè)備接口方便等優(yōu)點,使科研人員能夠?qū)⒅饕杏趯嶒灦蔷幊獭=榻B了一種基于LabVIEW平臺的信號實時采集與處理系統(tǒng)。首先介紹了該系統(tǒng)的硬件組成和軟件設(shè)計方法,之后詳細(xì)介紹了將不同廠商的硬件板卡集成到LabVIEW平臺上,并由LabVIEW統(tǒng)一控制的方法——生成動態(tài)鏈接庫。該系統(tǒng)已成功應(yīng)用于某型水聲裝備的效能評估試驗中。
LabVIEW平臺;實時采集與處理;動態(tài)鏈接庫
實時信號采集與處理系統(tǒng)是進(jìn)行水聲試驗所必需的設(shè)備。它一般由主控、信號調(diào)理、模擬輸入、信號處理、模擬輸出、網(wǎng)絡(luò)通信等設(shè)備組成。國內(nèi)外現(xiàn)有的實時信號采集與處理系統(tǒng)大多采用Windows&Visual C++或VxWorks作為軟件平臺,此類平臺的缺點是:編寫顯示和控制程序復(fù)雜,無法快速實現(xiàn)不同階段的數(shù)據(jù)可視化,無法快速修改程序以滿足不斷變化的試驗需求。
本文所介紹的系統(tǒng),將主控、模擬輸入、信號處理、模擬輸出、網(wǎng)絡(luò)通信等不同類型、不同廠商的設(shè)備集成到LabVIEW平臺上。該平臺具有如下優(yōu)點:開發(fā)顯示和控制程序快捷,能快速實現(xiàn)各個階段的數(shù)據(jù)可視化,可根據(jù)試驗需求快速完成程序的修改,提供大量的常用信號處理函數(shù),能直接與大多數(shù)平臺或設(shè)備接口,如串口、網(wǎng)絡(luò)通信接口、Matlab等。該系統(tǒng)的信號處理部分,除了采用傳統(tǒng)的基于多片DSP的并行處理技術(shù)外,還增加了基于Matlab的集群并行處理技術(shù),該處理方法是直接將Matlab信號處理程序分成若干程序片段,分配給多臺計算機(jī)的多個CPU核,使這些程序片段并行執(zhí)行,從而省去了把Matlab程序轉(zhuǎn)換為C語言的中間環(huán)節(jié),提高了信號處理程序的開發(fā)效率。
NI公司自己生產(chǎn)的硬件板卡,都會提供現(xiàn)成的可在LabVIEW下直接調(diào)用的驅(qū)動函數(shù)。但是對于非NI公司的硬件板卡,一般并不提供這種驅(qū)動函數(shù),但是可以把硬件制造商提供的C語言驅(qū)動函數(shù)打包成動態(tài)鏈接庫(Dynamic Link Library, DLL),從而實現(xiàn)在LabVIEW下對這些驅(qū)動函數(shù)的調(diào)用。本系統(tǒng)所使用的硬件板卡均不是NI公司的,正是運用了上述方法使所有硬件設(shè)備能夠整合在LabVIEW平臺上,由LabVIEW統(tǒng)一控制。
本系統(tǒng)能夠使試驗研究人員從繁重的軟件編程工作中解脫出來,快速組建和修改軟件,把主要精力集中在對試驗結(jié)果的分析和信號處理算法的改進(jìn)上。
本系統(tǒng)的硬件平臺基于CPCI總線,主要由6U CPCI總線機(jī)箱、CPCI總線主控板、PMC總線數(shù)據(jù)采集卡、CPCI總線多DSP信號處理板、PMC總線反射內(nèi)存網(wǎng)卡等設(shè)備組成。
系統(tǒng)原理框圖如圖1所示,粗虛線框括起的部分為本系統(tǒng)的硬件組成,其中,細(xì)虛線框括起的部分為系統(tǒng)的擴(kuò)展設(shè)備。
使用的硬件:
CPCI總線主控板:GE公司,Intel Core 2多處理器1.66 GHz and 2.0 GHz;
PMC總線數(shù)據(jù)采集卡:General Standards公司,18 bit,32通道,差分,1.0 MSPS;
CPCI總線多DSP信號處理板:BittWare公司,8片ADSP-TS201 TigerSHARC DSPs;
PMC總線反射內(nèi)存網(wǎng)卡:GE公司,174 MB/s 采樣率。
圖1 系統(tǒng)原理圖
系統(tǒng)實物圖如圖2所示:
圖2 系統(tǒng)照片
本系統(tǒng)以NI公司的LabVIEW作為軟件平臺,所有硬件設(shè)備包括主控板、數(shù)據(jù)采集卡、數(shù)字信號處理板、反射內(nèi)存網(wǎng)卡,都統(tǒng)一由LabVIEW控制,完成信號采集、信號處理、板卡間的通信、結(jié)果顯示、數(shù)據(jù)保存、網(wǎng)絡(luò)通信等功能。
LabVIEW是美國國家儀器公司開發(fā)的圖形化開發(fā)環(huán)境,同時它也是一種編程語言——G語言。它采用了比傳統(tǒng)的文本編程語言更高效的圖形化編程方式,主要特點如下:
(1) 提供了大量的用于顯示和控制的圖形控件,只須簡單編程即可快速實現(xiàn)數(shù)據(jù)可視化和數(shù)據(jù)分析;
(2) 提供了大量常用的信號處理函數(shù);
(3) 提供了與動態(tài)鏈接庫(DLL)的接口。這樣就可以用LabVIEW控制那些僅提供C語言驅(qū)動函數(shù)的非NI公司定制的硬件設(shè)備;
(4) 能直接與大多數(shù)平臺或設(shè)備接口,如串口、網(wǎng)絡(luò)通信接口、Matlab等。
基于上述特點,使用LabVIEW作為系統(tǒng)軟件平臺,將會顯著提高系統(tǒng)開發(fā)效率和試驗效率。
在LabVIEW下控制硬件,對于NI公司自己生產(chǎn)的板卡,可以在LabVIEW下直接調(diào)用該公司提供的驅(qū)動函數(shù);而對于非NI公司的板卡,廠商通常不提供這種函數(shù),需要將其提供的C語言驅(qū)動函數(shù)轉(zhuǎn)化為動態(tài)鏈接庫(DLL),再由LabVIEW調(diào)用。以下以一個C語言的加法函數(shù)為例,介紹如何在Visual C++中生成動態(tài)鏈接庫文件,及如何在LabVIEW中調(diào)用動態(tài)鏈接庫中的函數(shù)。
2.2.1 生成動態(tài)鏈接庫
假設(shè)已經(jīng)有了一個實現(xiàn)兩個浮點數(shù)相加的C語言函數(shù),文件名add.c,程序如圖3所示:
圖3 C語言表達(dá)的add函數(shù)
打開VC,新建一個“Win32 Dynamic-Link Library”工程,命名為“add”,把a(bǔ)dd.c添加到工程中。
在函數(shù)體第一行添加關(guān)鍵字:
“_declspec(dllexport)”:
編譯生成動態(tài)鏈接庫“add.dll”,如圖4所示。
圖4 添加關(guān)鍵字后的add函數(shù)
2.2.2 調(diào)用動態(tài)鏈接庫
以LabVIEW8.2為例,在函數(shù)模板中選擇“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”中把動態(tài)鏈接庫文件添加進(jìn)來,詳見圖7、8。
圖7 “Call Library Function Node”配置窗口
圖8 添加動態(tài)鏈接庫文件
在“Function name”中選擇要調(diào)用的函數(shù),這里的動態(tài)鏈接庫文件中只有“add”一個函數(shù),實際中可能不止一個,見圖9。
圖9 添加“add”函數(shù)
選擇“Parameters”,為“Call Library Function Node”添加函數(shù)參數(shù),見圖10。
首先添加“add”函數(shù)的輸入?yún)?shù)a。單擊“+”號,在右邊的“Current parameter”區(qū)域做如下設(shè)置:
圖10 函數(shù)參數(shù)配置窗口
“Name”:添加參數(shù)名稱,這里是“a”;
“Type”:選擇“Numeric”,表示數(shù)值型;
“Data Type”:選擇“4-byte Single”,表示單精度浮點數(shù);
“Pass”:這里參數(shù)不是指針,選擇“Value”,如果是指針,比如參數(shù)c,則選擇“Pointer to value”,見圖11。
圖11 配置函數(shù)參數(shù)“a”
參數(shù)b和c的添加與上面類似,所有參數(shù)添加完后,單擊“OK”。
在LabVIEW的框圖窗口中為“Call Library Function Node”添加輸入輸出控件,如圖12所示。
圖12 添加輸入輸出控件
在前面板的輸入控件a和b中分別輸入1和2,運行程序,輸出控件c會顯示3,如圖13所示。說明動態(tài)鏈接庫文件添加成功了。
圖13 前面板窗口
實際的C語言驅(qū)動函數(shù)的參數(shù)可能會有數(shù)組或結(jié)構(gòu)體等不同的數(shù)據(jù)類型,相應(yīng)的C語言函數(shù)體中函數(shù)參數(shù)的數(shù)據(jù)類型及在LabVIEW中對“Call Library Function Node”的參數(shù)配置方法會有所不同,具體可參考LabVIEW安裝目錄下的examples dlldata passing文件夾下的“Call Native Code.llb”和“CLF_Example.dsw”,里面涉及所有數(shù)據(jù)類型。
本系統(tǒng)的軟件采用多線程編程技術(shù),創(chuàng)建了3個獨立的線程:數(shù)據(jù)采集線程、數(shù)據(jù)接收與顯示線程、DSP處理線程(雖然它屬于DSP內(nèi)部運行的程序,但由于它與另外兩個線程獨立并行執(zhí)行,這里也把它稱為“線程”)。在程序運行過程中,他們并行執(zhí)行,保證了系統(tǒng)的實時性。線程的流程圖如圖14所示。
圖14 程序流程圖
LabVIEW的部分框圖程序如圖15、16所示。軟件主界面如圖17、18所示。
圖15 LabVIEW框圖程序1
圖16 LabVIEW框圖程序2
本系統(tǒng)有兩個擴(kuò)展功能:DA輸出和Matlab并行處理,見圖1中的細(xì)虛線部分。
如果實驗需要把信號處理后的結(jié)果通過DA卡轉(zhuǎn)換為模擬信號發(fā)射出去,可以在系統(tǒng)中添加一塊DA卡,見圖1細(xì)虛線框“1”。然后按照前面介紹的添加動態(tài)鏈接庫的方法對DA卡進(jìn)行控制。
目前,較為復(fù)雜的并行信號處理程序大多數(shù)是在多片DSP上運行,程序的開發(fā)步驟分為:設(shè)計信號處理算法、編寫Matlab程序、將Matlab程序轉(zhuǎn)換成DSP C語言并行程序。本系統(tǒng)的信號處理部分就是采用上述方法。該方法的缺點是需要把Matlab程序轉(zhuǎn)化為C程序移植到多片DSP中。如果程序較復(fù)雜,工作量很大。
圖17 軟件主界面1
圖18 軟件主界面2
下面介紹一種新的并行信號處理的實現(xiàn)方法,該方法的硬件平臺不是基于DSP,而是多核計算機(jī)。較新版本的Matlab如Matlab2009b,支持安裝Parallel Computing Toolbox,即并行計算工具箱。使用該工具箱,可以在多核計算機(jī)上直接開發(fā)基于Matlab的并行程序,其原理是將順序執(zhí)行的程序拆分并分配到不同的CPU核上,使這些拆分后的程序片段在各個CPU核上并行運行,如果CPU核足夠多,就可以滿足程序的實時性要求。該方法的優(yōu)點是用Matlab直接編寫并行程序,省去了向C語言移植的中間環(huán)節(jié),可以極大地提高程序開發(fā)效率,缺點是需要單獨配置若干多核計算機(jī),攜帶不夠方便。該方法可以作為本系統(tǒng)實現(xiàn)并行信號處理的另一種選擇,見圖1中細(xì)虛線框“2”。
本文提出了一種新的針對實時信號采集與處理系統(tǒng)的系統(tǒng)集成方法,即基于LabVIEW平臺,把不同廠商(非NI公司)的硬件板卡整合到LabVIEW平臺上、在LabVIEW統(tǒng)一控制下生成動態(tài)鏈接庫。此外,還介紹了一種實現(xiàn)并行處理程序的新方法:在多核計算機(jī)上開發(fā)基于Matlab的并行程序,該方法可以極大提高并行處理程序的開發(fā)效率。
在某型水聲裝備的湖上靜態(tài)半實物仿真試驗中,本文所介紹的系統(tǒng)作為核心分系統(tǒng),與其他分系統(tǒng)配合,成功實現(xiàn)了對該裝備各項性能指標(biāo)的測試和效果的評估。
[1] 阮奇幀. 一個NI工程師的十年編程經(jīng)驗[M]. 北京: 北京航空航天大學(xué)出版社, 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 程序設(shè)計教程[M]. 北京: 電子工業(yè)出版社, 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