High-Speed Digitizers

cancel
Showing results for 
Search instead for 
Did you mean: 

Jumps in Waveform with NI5922

Solved!
Go to solution

HI

 

I use NI5922 Digitizer with NIScope 3.8.1 and LabView 10.0.1 (64-bit) Software.

 

If I have other activities on Windows (like changing to other Windows, open another program) I get jumps (steps) in my waveform graph (see attached picture Front Panel).

 

A) What is the reason for that (my Hardware is really fast)

B) Is there a workaround?

 

Attached Front Panel and Block Diagram

 

Greets

Tobias Broger

IMM

Download All
0 Kudos
Message 1 of 6
(6,303 Views)

Hi,

 

could you please tell us, what Windows version (Windows 7, 64bit?) your are using. Is this the NI-SCOPE version you are using?

 

NI-SCOPE 3.8.1 - Windows 7 x86/Vista x86/7 64 bit/XP x86/Server 2003 R2 (32-bit)/Vista x64/Server 2008 R2 (64-bit)

https://www.ni.com/en/support/downloads/drivers/download.ni-scope.html#307031

 

best regards

0 Kudos
Message 2 of 6
(6,282 Views)

Are you using the PCI-or PXI NI 5922? This could also be helpful.

0 Kudos
Message 3 of 6
(6,279 Views)
Solution
Accepted by topic author wickiwau

Could you post your actual code?  From the screenshots, there are several issues you may want to address.

 

  1. Is your data display a graph or a chart?  If it is a chart, the behavior is expected (you will get multiple waveforms on a single display, and you are not acquiring continuous data).  If a graph, we need to look at your block diagram.
  2. Your code to check for the stop condition is continually polling.  This will starve one thread of your execution system.  I would recommend you use an event structure for I/O interaction.  At the very least, put a 100ms delay in this loop.  This could be the cause of your issue.
  3. You are using a timed loop for your display.  The queue will ensure that the loop runs at exactly the same speed as the data acquisition loop.  At worst, the display will be unable to keep up with the acquisition.  Using the loops to specify a processor will not work in this case, since all your timed loops have UI components, forcing them all to use the UI thread or generating a lot of thread thrashing, which could also be the issue.

I would recommend you separate your functionality a bit differently to make this work well.

 

  1. Put all your data entry code into a single loop running an event structure.  When something changes (e.g. vertical range of the scope), the event structure sends a command (via queue) to one of the other loops.
  2. Put your hardware acquisitions in separate loops (your already have this) run by queued command processors with state.  For example, in the scope case, a change in vertical range would set the value into a local shift register.  If the acquisition was running (state=running), the value is also sent to the scope.
  3. Put your displays in separate loops fed by queues (you did this for the scope data).  I am unfamiliar with how IMAQ refreshes front panel images, so a queue may be inappropriate there.

If you want an example of this type of architecture, check out this post and those leading up to it.  Good luck.  Let us know if you need more help.

Message 4 of 6
(6,272 Views)

Hi and sorry for my late answer (short holiday 🙂

 

@MHoffmann: Windows 7 (64-bit), PCI-NI-5922 

 

@DFGray:

Thanks again for your hints!

It was a Chart, I now posted the code including both: Chart and Graph and without queue (I only did the queue because I thougt this may help to solve the issue). I also excluded the IMAQ to make it simpler.

Problem: I would like to have multiple seconds of the signal and a second time scale on the x-scale (i try to use x-scale-multipliers to get seconds). The Chart can display multiple seconds,  whereas the Graph only displays a short period (the last fetch?). I guess I really should change to a continous signal. 

 

 I will use the proposed architecture and post it here asap!

 

Thanks

Tobi

 

 

0 Kudos
Message 5 of 6
(6,244 Views)

You can get a second scale on the X-axis by right clicking the current X scale and selecting Duplicate Scale.  You will probably want the new scale on the other side of the plot, so right click on the new scale and select Swap Sides.

 

You can select which data goes with which scale with either the graph properties dialog or using property nodes.

 

Yes, you will need to take data continuously to get a continuous plot longer than one acquisition.  The NI-SCOPE examples should show you how to do this.

 

You may want to explore the graph axis formatting a bit more, as well.  A "hidden" feature is the Ignore Timestamp feature of the graph.  Right click the graph (not the axis) and note that this option is normally checked, meaning the graph will ignore your initial timestamp.  If you select it, your data timestamps will now be used, but you also get an automatic change of the X-axis to a log-centric format.  Right-click the X-axis and change the data formatting back to three digit SI or something similar, which is more appropriate for NI-SCOPE use (waveforms usually have relative, not absolute timestamps).

 

Let us know if you have more issues.  Good luck!

0 Kudos
Message 6 of 6
(6,235 Views)