NI Home
Cart Cart | Help
Hello Events Academic NI Developer Zone Support Solutions Products & Services Contact NI MyNI
You are here: 
NI Home > NI Developer Zone > NI Discussion Forums


Reply
Active Participant
Hillman
Posts: 1,263
0 Kudos

5122 - Capture X milli-seconds worth of waveform every X seconds

[ Edited ]

Hi All,

 

I am having trouble implementing some functionality for a NI-5122 Digitizer - I am more familiar with NI-DAQ than NI-Scope.

 

I already have code which retunes the downconverter (5600) and mixes the signal to the IF. How do I configure the NI-5122 to capture a burst of the waveform every X seconds? Currently I just have a VI which continuously acquires the waveform.

 

Thanks,

James

Kind Regards
James Hillman
Applications Engineer 2008 to 2009 National Instruments UK & Ireland
Loughborough University UK - 2006 to 2011
Remember Kudos those who help! :smileywink:
Trusted Enthusiast
DFGray
Posts: 2,569
0 Kudos

Re: 5122 - Capture X milli-seconds worth of waveform every X seconds

If you already are acquiring continuously, you can get the functionality you want by throwing away the data you are uninterested in (assuming you want a time based, not signal based periodic acquisition).  Alternate possibilities are using a timed loop to acquire periodically (timing will be subject to operating system issues) or use a function generator or signal from the 5600, if any, to digitally trigger the scope periodically.  If you want a signal based acquisition, either use the triggering modes of the scope itself or examine your continuous signal for custom trigger conditions and select the signal subset yourself.

 

Post your code attempts next time if you need more help so we can give better feedback.

Using LabVIEW 2009 - 2012 on Windows 7 64-bit
Active Participant
Hillman
Posts: 1,263
0 Kudos

Re: 5122 - Capture X milli-seconds worth of waveform every X seconds

Thanks for the reply. The problem with the method you outline - chucking away samples is that the buffer is very full. This makes it difficult to get all the samples back to LabVIEW and then check the time stamps. I need to get 50ms of a waveform every three seconds. My digitizer is sampling at 50MHz and hence 50ms is 2.5MSamples per capture. The three seconds must be very accurate - hence the blackplane is locked to an antomic clock module within the PXI system.

 

Either way, if I trigger to get 50ms or just locate the 50ms of interest, this is a lot of data to read back from the module - what is the best way (fastest) way to do this? I also need to downconvert to baseband? My thoughts from thinking about it today is that I should have been given RF products rather than NI Scope products by the company.. thoughts?

 

Thanks,

James

Kind Regards
James Hillman
Applications Engineer 2008 to 2009 National Instruments UK & Ireland
Loughborough University UK - 2006 to 2011
Remember Kudos those who help! :smileywink:
Trusted Enthusiast
DFGray
Posts: 2,569
0 Kudos

Re: 5122 - Capture X milli-seconds worth of waveform every X seconds

The best way is going to be highly dependent on your hardware.  Given your previous comments, I assume you have a PXI system.  I would create a ring buffer of a bit over three seconds of data and continually stream from the digitizer to the ring buffer (ring buffer is a shift register in a different loop than the streaming acquisition - hopefully you have a dual core or hyperthreaded processor).  You will need to establish a timestamp on your initial acquisition, but after that, you can use the number of samples taken to increment your timestamp.  When you get a trigger match, finish out your 3 second acquisition into the ring buffer, then copy to whatever processing you are doing later.  This can be done in parallel to the continued acquisition, so you do not miss another trigger.  A few things to note:

 

  1. You will not be fetching more than about 100kSamples to 500kSamples at once from the digitizer.
  2. You will have at least three loops in the application
  3. This may take a fair amount of chunk size tuning to get it to work optimally.  Suboptimal performance can be orders of magnitude under optimal performance.

You may end up with a bottleneck in the PCI bus transfer rate.  If you do, try reducing your data size to 8-bits instead of the default 16-bits.  This will reduce your PCI bus throughput from 100MBytes/sec down to 50MBytes/sec.  Since the theoretical max of PCI is 133MBytes/sec, you are currently dangerously close to this.

 

Does your timing module support periodic digital trigger outputs?  If so, this would be a much easier way to go to get your data.

 

Good luck!

Using LabVIEW 2009 - 2012 on Windows 7 64-bit
By using this web site, you accept the Terms of Use for this web site. Please read these Terms of Use carefully before using any part of this site. Please go here for information on ni.com's copyright infringement policy.
My Profile | Privacy | Legal | Contact NI © 2011 National Instruments Corporation. All rights reserved.    |    E-Mail this Page E-Mail this Page