From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Adapting Signal Express routine to LabVIEW for multichannel measurement with DSA board

I'm new to LabVIEW and am trying to adapt and extend a processing routine from Signal Express.

 

I need to accurately measure transients of a weak bipolar square wave signal superimposed on a non-zero DC background. [I'm using a PXI-4495 16 channel DSA board and PXI-8106 controller with 4 GB of RAM.] The frequencies are very low (0.5 to 7.5 Hz) but precisely controlled so stacking and robust signal processing works very well in extracting very low amplitude signals in a noisy environment. As an added complication, the sensors used have a 15.6 kHz sinusoidal driving frequency of comparable or greater magnitude than the low frequency signal of interest that has to be removed.

 

The naive approach of simply measuring at a suitable sampling frequency (in this case, 7800 Hz) and letting the DSA antialiasing filters handle things does not work well and creates strong ringing around signal steps. By trial and error, I found acceptable results in SE by 12x oversampling at 93.6 kHz, applying a multitap Butterworth FIR low-pass filter, then carrying out a simple 12 point average to obtain a clean waveform. This works fine for short sampling intervals, but I need to sample for at least 300 seconds on three to fifteen channels. SE cannot handle the memory requirements.

 

I've been going through the help files, discussion forums, shipping examples and am still running into roadblocks. Can anyone tell me if it's feasible to do the following, and if so offer some hints about how to get started? Each individual step seems straightforward, but getting the continuous high-speed sampling in a 300 second loop is the first problem, and I'm not sure if that's even the best approach.

 

1) sample 15 analog voltage channels at 93.6 kHz for 300 seconds (28M points exceeds DAQ Assistant Express VI limit of 16.78M)

2) apply a 31-tap FIR low-pass filter to each channel

3) downsample all channels to 7800 Hz using simple 12 point averaging

4) stream the 15 channel filtered, downsampled data to disk in TDMS format

 

Mark

0 Kudos
Message 1 of 4
(2,528 Views)

Hi Magma,

 

I do not see any reasons as to why you would not be able to accomplish steps 1-4.  For continuous input, the DAQ Assistant Express vi is not always optimal.  As such, to avoid the memory issues, use standard DAQmx functions, referring to the continuous acquisition shipping examples for techniques.  Steps 2 and 3 can be accomplished with the signal processing functions in LabVIEW, while step 4 can be accomplished with the file i/o functions.

David
Applications Engineer
National Instruments


Digital Multimeters
0 Kudos
Message 2 of 4
(2,495 Views)
Thank you David. I wanted to ensure I wasn't wasting too much time working on dead ends. I've been working from the shipping examples, but haven't managed to get them to play well with each other yet. LabVIEW is full of "sort-of" intuitive features that don't necessarily do what newcomers think they do.
0 Kudos
Message 3 of 4
(2,489 Views)

Hi Magma,

 

This data acquisition tutorial may be of some help moving forward.

David
Applications Engineer
National Instruments


Digital Multimeters
0 Kudos
Message 4 of 4
(2,470 Views)