LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Indicator Validity

I'm working with a lot of sine waves of differing phases, so I made a quick oscilloscope VI. It has a zero crossing detector to act as a trigger so the display is stable and an input to specify the number of points to sample.

 

Simple enough, I got the thing working quickly but I ran into trouble making a standalone vi with a generic array output instead of having the display control embedded in the loop where the Output Array is in the diagram below.  . Issue was, unless I hook up a strobe signal (circled) which is only true when the display updates and put a waveform graph control update in a little T/F case statement a waveform graph mostly displays a blank, every now and again you can see the display flash briefly. If the waveform graph is strobed the display is as expected.

 

I thought that if an array was put in a case statement it was updated when the case executed and the value remained (i.e. was latched) until the next update. This one does not act that way, the variable goes invalid or "not executed" most of the time.

 

If anyone can shed light on what I am not understanding about how LabVIEW updates and holds values I would really appreciate it. My code is working, but I wasted a lot of time on this and it does not seem to make sense.

 

Thanks in advance,

Bill

 

The code showing the output array and strobe pins for the output to display case:

 

oscope_display_data.PNG

 

Necessary code to get the display to be viewable, the local variable 1GEN... is a Waveform Graph:

 

oscope_display_output_wiring.PNGoscope_display_description.PNG

0 Kudos
Message 1 of 8
(2,707 Views)

The documentation is wrong, should say output array not cluster. Fixed...

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

Untill we see the other cases of that action engine we can't really figure out what the values that come out of the case tunnels and feed into the uninitiallized feedback nodes are (nor can we look at the initiallization options of the feedback nodes)

 

But, that should at least point you to a few possible areas where you can find trouble with your codeSmiley Wink


"Should be" isn't "Is" -Jay
0 Kudos
Message 3 of 8
(2,684 Views)

Hi Jeff,

Diagrams below for cases zero and 1, case 2 is above. vi also attached.

Thanks in advance,

Bill

 

Case zero: Waiting for zero cross

oscope_display_case0-notTriggered.PNG

 

Case zero: Got zero cross

oscope_display_case0.PNG

 

Case 1: Gathering samples to show on the scope

 

oscope_display_case1-after_zero_cross_getting_samples.PNG

 

Case 1: All samples in

oscope_display_case1-all_samples_in.PNG

0 Kudos
Message 4 of 8
(2,673 Views)

Do you have the Clear Indicators When Called option turned on?

 

EDIT:  Never mind.  Just looked at your VI.


GCentral
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
"Not that we are sufficient in ourselves to claim anything as coming from us, but our sufficiency is from God" - 2 Corinthians 3:5
0 Kudos
Message 5 of 8
(2,668 Views)

No, it's unchecked.

 

oscope_display-properties.PNG

0 Kudos
Message 6 of 8
(2,653 Views)

@crossrulz wrote:

Do you have the Clear Indicators When Called option turned on?

 


No, but the logic in the "Accumulate Data" case is invertedSmiley Surprised  (Replace data if new sample count is less than the current number of samples)


"Should be" isn't "Is" -Jay
0 Kudos
Message 7 of 8
(2,652 Views)

Jeff,

I think not. The snippet in question is:

oscope_display-oops01.PNG

 

in the >= node, top node is X, bottom node is Y, output is true only if X >= Y which is what I want, if it's less then the array is being built and we don't display the array.

 

The code does work. If you put the Waveform Graph control right inside the Display Data case then all is fine. However, if you don't to make it more general then the display is no good unless you use the strobe.

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