LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

One Interesting observation about Waveform Chart

Hiiii, All
 
             I have came across an interesting observation about the waveform chart, while displaying online trend on the chart, whic is displaying Real-time data and X-axis is my Time axis. The observation show me that "Bigger the Length of X-axis" larger the time to update 1 sec, mean if the length of X-axis is Relatively big in Length it will take 1.253 sec (GPS synchronise time), to update only one second on the graph and if length is small it will take 0.942 sec to update one sec on the graph and it also depends on the speed of processor, can anybody tell me why this  is happening and waht is the solution for it? it wold be great appreciation.
 
Thanks,
Nishant
0 Kudos
Message 1 of 26
(4,931 Views)
Hi Nishant,
 
That sounds like strange behavior, but I haven't been able to replicate it.  Would you mind posting a VI that demonstrates what you're describing?  I'd definitely like to look into this.
 
Thanks!
Megan B.
National Instruments
0 Kudos
Message 2 of 26
(4,897 Views)
It would be interesting to know more details.
  1. What is the size of your chart history?
  2. Are you sending millions and millions of points to the graph every second?
  3. Could it be that the enlarged graph overlaps (even slightly) with other front panel elements? Overlapping FP elements will impose a large performance penalty.
  4. Is the chart possibly set to "synchronous display"?
  5. What exactly determines your loop rate?

 

0 Kudos
Message 3 of 26
(4,890 Views)

Hiii, Megan and Altenbach,

            First of all thanks for the reply.

           Dear Megan, As you told me i am attaching the file which includes the trend but it cant possible for you to run, because it contains many numbers of global variable, and reference to other vis are also given, and another main thing is i a taking the data from the PCI card, then after i am processing those data and then after displaying online trend, thats why its a big project and i wont be able to attach you all of the vis. anyways  i am attaching you that vi.

          Hey Altenbach, here i am iving you answers of the questions that u ve asked in its respective order.

         1. Chart History size is normal, i havent done any kind of modification for that in the chart.

         2. I am sending 100 records per second taken from the PCI card, and sending continously.

         3. I couldn't understand this question clearly, could you please describe something about it?

         4. No Chart is not set for the synchronous display.

         5. Actually i m taking a data at the 10ms fromt the card and thats why i am requiring the online trend of 100 records in the one second and thats why i have put the delay of only 10 ms, which could be the loop rate.

           Hey guys, as per your interest in this post i would like to inform you another interesting observation on this. In this vi i have used the tab for each and every individual gaph, but first i was not doing this, i had taken all the charts which are showing analog values in the one tab and all the charts which are showing digital values in another tab, so i am aking 8-charts for Analog in one tab and 4-charts for digital in another tab, now suppose there are four graphs currently visible on the screen out of that 8, and suppose more than one of them are showing the online trend then, time in all of them will not update as real-time at which it should update the time, instead if the re is only graph is showing the Real time online trend then on that graph time will update at the real-time, at the time on which it should update, and i think that is the problem of monitor or processor, not refreshing that fast. isnt it? i think so but i also wnat you psople's pole on that. 

Thanks,

Nishant

Message 4 of 26
(4,874 Views)

1. Well, your chart histories are all set to 360000 points, that is a lof of data (and is NOT normal)!!! You have eight charts with 360000x8bytes in the analog charts alone. Then you have four digital charts (I16) with the same history length. This is nearly 30MB that you are trying to shuffle in 10ms intervals. Then you do everything with global variables, each again creating extra data copies.

Also try to limit writing all these property nodes, they are expensive. For example, the "Xscale.multipler" nodes always get the same value. You need to write these exactly once outside the loop and not every 10ms! I don't have enough information to decide if the max and min properties are always needed.

3. You DO have overlaping elements on your front panel (see image). For example, most charts overlap the text indicators (e.g. hover over the "description" fields and you will see that the handles are below the chart). This will cause significant extra cpu load redrawing the panel.

Some other comments:

  1. Have you found the stop button for the loop?? It is a few screens down and right, below the loop border. It makes little sense to have a hidden control that is never used, delete it and use the output of the exit button for the lop terminal.
  2. For all the digital graphs, you do a boolean to I16 conversion. Since this operation is the same in each case, it belongs outside the case structure.
  3. Why are you creating an unneeded boolean output in the property nodes outside the loop to create a data dependency. Just use the error cluster for that purpose.

Ideally, you would only need a single analog graph and a single digital graph. Keep all your data in a 2D buffer, then display the desired slice as a function of tab position and channel selection. It would be much more efficient

Message Edited by altenbach on 03-20-200610:49 PM

Message 5 of 26
(4,868 Views)

Dear Altenbach,

         Thanks for the solution man, and i havent concentrate on these things ever, actually i am relatively new to these tings, another thing i am still confused about the chart history length cos i havent set it.....Smiley Sad, anyways thanks man, ill implement all these solutions and if anything goes wrong, i ll comeback to you.., anyways thanks man, thanks very much.

Thanks,

Nishant

0 Kudos
Message 6 of 26
(4,862 Views)
Good luck!
 
Sorry, I don't know who gave your post a "one star" rating, it definitely wasn't me. I don't agree with that rating, because asking a question or providing detail is always good! Questions should not get rated, only answers. 😉
Message 7 of 26
(4,842 Views)

"Questions should not get rated, only answers."

So a question that leads to new knowledge should not be rated?

CC's Q here seems like an exception to that rule.

http://forums.ni.com/ni/board/message?board.id=170&message.id=117389&a#M117389

 

Ben

Retired Senior Automation Systems Architect with Data Science Automation LabVIEW Champion Knight of NI and Prepper LinkedIn Profile YouTube Channel
Message 8 of 26
(4,836 Views)
Ben, maybe I should have written a multipage tome instead of a one sentence little blurb. 🙂
 
Of course there are questions that lead to fundamental discoveries and spirited discussions, and they should get highly rated. Then there are simple beginners questions, e.g. "how do I stop a while loop?". Then there is anything in-between. 😮 Where do we draw the line? If everything gets rated, we again loose the contrast and the truly remarkable threads no longer stick out.
 
In my book, anything that deserves a rating, deserves a five-star rating, I don't like that completely uncalibrated grey scale of 1-5 stars at all.
Message 9 of 26
(4,810 Views)

Hii, Altenbach and Ben,

               Altenbach, let us not concentrate on the rating rather than our questions and answers, we should concentrate on the knowledge rather than that.

              i have implemented 3-4 solutions, but it doesnt have change my the basic problem of updating one second, another iimportant thing i want to talk to is i haven't reduced the size of the chart history in any of the cases, because User wants it, should it be affect the time of updating the time?

          Another thing you have written is: "Ideally, you would only need a single analog graph and a single digital graph. Keep all your data in a 2D buffer, then display the desired slice as a function of tab position and channel selection. It would be much more efficient." whats that, i dont get anything out of that sentence instead of using only one graph for 8-Analog and another one for 4_Digital but dont get another procedure, and hey have you read the discussion point i have written in the reply 4 about problem of refreshing rate of monitor or cpu? please refer to that and tell me the solution about using only one graph, will it still possible for me to take one graph?

Thanks,

Nishant

Message 10 of 26
(4,795 Views)