LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Simultaneous DAQ and display of large data sets

I have looked all over the posts but cant seem to find a good answer to this question.
 
I have a vi that acquires/generates 10,485,760 (1024x1024x10) U16 data points in blocks of 1,024 points over 10 seconds (i.e. a loop repeats 10,240 times in 10 seconds, generating 1,024 points on every loop). The loop has an option to save the data to disk in every iteration. I also graph the 10,485,760 points using a sweep chart in which each sweep overwrites the previous 10,485,760 points. That all works just fine.....but here is what I want to do.....
 
1) I want the x-scale on the chart to show 0 to 10,485,760 on every sweep. That way, if I stop the vi and zoom in on the chart then the x-scale will tell me exactly which of the points I am looking at. I have tried using x-scale-range-start with no avail. I have even placed a fake scale (slider) in place of the x-scale of the chart and then scaled it using the mod of the true x-scale (does that make sense?) but this has other drawbacks. I have tried storing all the data in a shift register (and using replace array subset so that it is a rolling buffer of fixed size) and displayed the data with a waveform graph. That works fine except redrawing the waveform graph on every loop slows the vi WAY down. I tried routing the data into a global (again a rolling buffer of fixed size) and reading the global from a separate slower while loop, even a separate vi, except that in this case the read and write to the global on every loop slows the vi WAY down. Does anyone have any suggestions? Sometimes all it takes is a new idea. The program must not slow down since it is an acquisition program, it must continually move 2MB/sec of data. Oh yeah, and one more condition: the 10,485,760 points is only the maximum. At other times I will want 2,621,440 (512x512x10) or 655,360 (1024x64x10).
 
2) From my understanding, most data analysis packages use a form of decimation to display the data to the screen. That way it doesnt have to graph 10.5M points all the time but instead a decimated subset which looks just the same to the user. Then as the user zooms in, the decimation factor is reduced but so are the number of points to display, so again it only displays a subset. Does labview do this? The speed of the sweep chart indicates that it does, but I have noticed some slowing, especially when the chart begins to accumulate all 10.5M into its history. This obviously becomes more apparent on slower machines. Any ideas on how to speed up the display in a way similar to this, without losing data in the history? Decimation works for the display, but then the history doesnt hold all the data. Again, using a shift register to hold the data worked very nicely, but I couldnt find a way to display the data in the shift register as fast as a chart does. Any comments would be appreciated.
 
I tried playing with priority levels and subvis to solve these problems, but after many crashes gave this up.
 
Any help would be appreciated, or else guide me to the correct thread, or tell me if this question has already been answered.
 
Thanks for all the help,
Don
0 Kudos
Message 1 of 1
(2,495 Views)