LabVIEW Web UI Builder and Data Dashboard

cancel
Showing results for 
Search instead for 
Did you mean: 

data dashboard update rate

I'm trying to use data dashboard to display data on an Android tablet.  Ideally the display would show a waveform.  I've taken a look at the examples which seems to poll the onboard accelerometers or gyroscopes.  The data is displayed on the chart smoothly, but anytime I try to do the same thing with numeric values from a VI using a shared variable the updated value seems erratic and jumps around.  I think the values it shows are valid it just seem like it's not consistent.  I'm wondering what is the maximum data rate the data dashboard can display from a shared variable and what's the best way to send it, perhaps from a while loop with a timed wait command to keep the intervals regular?

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

Jeff, 

 

Yes, you'll need to control your publishing rate of the shared variables with a structure like a wait statement. It isn't meant for highspeed data viewing. How fast are you trying to update the value?

 

Data Dashboard is only single point updates currently so internal network speeds could reach 1ms turn around but if you go off network usually the latency of the connection will impede your updating. Shared variables are not a lossless method form of transmitting values. 

Kyle Hartley
Senior Embedded Software Engineer

0 Kudos
Message 2 of 8
(8,129 Views)

We are sampling at 2048 S/s but that doesn't mean we necessarily need to display that rate.  I have been averaging samples before it goes to the shared variable to reduce the data rate. I would just like to update as fast as possible with reliability.  Essentially we want to be able to see relatively slow waveforms, much like the example gives from the accerlometer when I move it back and forth.  It just seems no matter what rate I send, it is erratic. 

0 Kudos
Message 3 of 8
(8,120 Views)

Shared variables are not really intended to be used for streaming applications because they don't guarantee that every value is received. For that reason we do not intend the chart control in Data Dashboard to be used to view waveforms. It can be used to display a single point value with some history, but it is not meant to view a full signal.

 

Also, in order to prevent shared variables with high update rates from flooding the UI (and essentially hanging the application) we throttle the update rate at 200ms. Essentially we receive updates in one thread and then poll the latest value in another thread at a maximum of 200ms per iteration. That means if you even wanted to try to view a signal in your chart then you would only be able to show at most a 5Hz sample rate.

 

For your use case you would ideally want to just send an array of points containing a snapshot of the signal at different times. You can't do that right now, but we are looking into adding capabilities like that in the future.

0 Kudos
Message 4 of 8
(8,112 Views)

Thanks.  I've placed a timed wait of 200ms and everything seems better.  Is this information documented somewhere.  I looked but couldn't find it.  I believe it would be useful for users to know.  

 

The demos included with the data dashboard app that polls the onboard accelerometers seem to suggest that what I'm trying to do is a possibility with the app or even a feature, that is displaying waveforms on a chart. That's sort of why I went down this road when I saw that.  Knowing the update rate however gives me a better idea of what is possible.  Thanks again.

0 Kudos
Message 5 of 8
(8,103 Views)

Hello, my program is running at a frequency of 1000Hz and data dashboard is unable to stream the signal real-time. I tried implementing it as a network shared variable and also as a web server. I see AdamKemp has mentioned accumulating an array and sending snapshot of the signal. I am new to LabVIEW, I was wondering if you could tell me how do I make an array that collects 500 samples, sends it to data dashboard, and then collects new 500 data points. My program is recieving data from Xbee, and the output numeric values (in a graphical format) onto data dasboard is present in a while loop which runs continiously. Please help.

0 Kudos
Message 6 of 8
(7,471 Views)

Hello, my program is running at a frequency of 1000Hz and data dashboard is unable to stream the signal real-time. I tried implementing it as a network shared variable and also as a web server. I see AdamKemp has mentioned accumulating an array and sending snapshot of the signal. I am new to LabVIEW, I was wondering if you could tell me how do I make an array that collects 500 samples, sends it to data dashboard, and then collects new 500 data points. My program is recieving data from Xbee, and the output numeric values (in a graphical format) onto data dasboard is present in a while loop which runs continiously. Please help.

0 Kudos
Message 7 of 8
(7,470 Views)

First, be aware that you are not going to be able to stream data losslessly to Data Dashboard. Data Dashboard supports two protocols: Shared Variables and Web Services. Neither one of those protocols supports streaming. They are both intended for viewing snapshots of data.

 

If you want to view a set of datapoints in a way that makes it possible to see the shape of the signal then the best option is to take periodic snapshots of that data within your LabVIEW application and make those snapshots accessible to Data Dashboard through either a shared variable or a web service. I recommend web services for this use case. To learn how to use web services in 2013 and later please take a look at this tutorial: http://zone.ni.com/reference/en-XX/help/371361K-01/lvhowto/build_web_service/

 

For 2012 and earlier see this tutorial instead: http://www.ni.com/white-paper/13757/en/#toc4

0 Kudos
Message 8 of 8
(7,452 Views)