LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Waveforms data transfer

Hi, everyone. I am using Tektronix MDO34 oscilloscope as an analog data acquisition card and trying to transfer waveform data to PC via Labview.

My goal is trying to fetch waveforms as fast as possible continuously .  And by adjusting some offical examples of Tektronix DPO MSO 2000 4000 Series, I can gain about 30 waveforms data per second. But it is still not enough. I need help !!!😫  Here is some details of my test.

(1)  USB connection with PC and oscilloscope. 

(2)  Sample rate is about 50~100Ms. Record length is 1k~10k.

(3)  I have put some basic configuration such as increament, origin and offset outside the acquisition loop. And by using NI I/O trace tool, I found that every time when the command ":CURVe?" sends out from VISA_WRITE vi, the next VISA_READ vi takes about 20~30 ms. And it is the most significant delay in this loop. Is there something I can do to change this ?

(4) The mannual says that, After ":CURVe?" command, the next data read from device should be like "#42000", which indicates the following data size. And then the binary block can be read. But binray data block transfer only takes about 3 ms.

 

I would really appreciate your help !

 

捕获.PNG

 

0 Kudos
Message 1 of 8
(1,626 Views)

@RickLab2022 wrote:

I can gain about 30 waveforms data per second. But it is still not enough.

 

 

 

 

 

What would be enough? 

 

______________________________________________________________
Have a pleasant day and be sure to learn Python for success and prosperity.
0 Kudos
Message 2 of 8
(1,616 Views)

Have you download the Tektronix MDO34 driver from NI ?

http://sine.ni.com/apps/utf8/niid_web_display.model_page?p_model_id=34606

 

George Zou
0 Kudos
Message 3 of 8
(1,600 Views)

It's hard to give any help when there is no code. But here are some suggestions to try:

  1. Turn the Header Off in the Replies, if you haven't already. No need to give a verbose reply.  This should be done before transfer; only once is needed. The command is something like head off;:verb off
  2. Make sure you are downloading is the most efficient format, most likely ENC RIB;:BYT_N 2; Not sure of the bit depth of your scope, but it may be possible to get by with a raw data stream of a single byte. I always default to 2 bytes in case the user was "averaging data" on the scope.
  3. Convert raw data to scaled on your computer in another loop.
0 Kudos
Message 4 of 8
(1,599 Views)

Thanks and Yes, I have done that.

0 Kudos
Message 5 of 8
(1,566 Views)

Thanks for your advise.    Maybe I didn't clearify my point.

 

(1) The main problem in this data acquirement loop, is still the time delay of the first preamble information reading process after the "CURVe?" command, which contains strings like "#520000".

(2) Actually, I don't need this string information. I know how it should be. Since it always consume 20~30ms, I want to get rid of it. But I didn't notice any other command which just transfer waveform data rather than "CURVe?".

(3) And I also tried the C++ program. And meet the same problem. 

 

0 Kudos
Message 6 of 8
(1,494 Views)

Thanks for your warning. 

It is a quick project in my school. And we got the enterprise edition license.

 

And I wish that I could obtain more than 100 waveforms in one second on Tektronix MDO34. 

Is that possible ?

0 Kudos
Message 7 of 8
(1,535 Views)

It's hard to give any help when there is no code. (Don't save for anything more recent than 2020) 

0 Kudos
Message 8 of 8
(1,509 Views)