LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

How does referencing a property of top-level control effect a sub-VI's timing?

I've got a Graphic User Interface (GUI) with some buttons and text controls. First I bundle the references to these controls into a cluster and send it to a utility sub-VI where the cluster is saved in a switch register (the process called functional global). Then I have a 10 Hz loop in the GUI VI to monitor the controls locally. In a separate loop, I start a sub-VI that eventually leads to the utility sub-VI with the control references. When I use these references with the "Property | Value" it seems to effect the timing of the sub-VI.

Currently I'm running the entire application using LabVIEW's default priority and execution system. It appears that when the sub-VI encounters the Property Node reference to an external control, the sub-VI loses its place at the head of the CPU queue, thus allowing other VI's to process.

I'm considering assigning the utility sub-VI a higher priority and/or execution system but I'm not sure of the ramifications. I've read Application Note 114, "Using LabVIEW to Create Multithreaded VIs for Maximum Performance and Reliability", but it's dated July 2000 and does not seem to cover Property Nodes.

Is there a connection between using Property Nodes for external controls and system timing or is my testing flawed?
0 Kudos
Message 1 of 4
(2,749 Views)
Property nodes and the VIs which use them all are forced to run in the User Interface execution system. This is what causes the change in your VI timing.

To change the value of an indicator without "moving" the subVI to the UI execution system, try passing the data to the GUI VI by means of a queue. This should allow updates without waiting for the subVI to finish and without causing the slowdown. The Enqueue qnd Dequeue functiosn are quite fast so the added ovehead should have minimal effect on your timing.

Lynn
0 Kudos
Message 2 of 4
(2,743 Views)
If the Property node in the sub-VI is enclosed within a case statement so that the Property node is rarely referenced (let's say 1 out of 100,000 calls), does the entire sub-VI run in the User Interface execution system?
Or does that one Property node reference suspend execution to resolve the reference?
0 Kudos
Message 3 of 4
(2,729 Views)
I believe the answer to your question is yes...the entire thread will run in the UI exe system. LV compiles the block diagram before executing so that thread should get allocated to the UI system.

How many controls are you updating on your FP?

-Brett
0 Kudos
Message 4 of 4
(2,716 Views)