Front Panel Control default values and interactive use

Today a few of us were discussing how front panel editing and execution works in LabVIEW, what it’s good at and where we could improve things. I’d be curious as to how people developing in LabVIEW day to day use some of these features and what works well for them and what doesn’t.

How Things Work Today

In general (ignoring the case of multiple instances of a VI Front Panel for re-entrant VIs or those targeted to multiple embedded devices) there is a one to on mapping between a Front Panel and a Block Diagram. On a Front Panel each control has a default value associated with it.

The following is really about interactive execution not use of a VI as a sub-VI:

  1. I run a VI the first time interactively it uses the default values on controls and gives me a result.
  2. I run the VI continuously or because there’s a for loop and while running the VI I can change the value of controls (inputs).
  3. When the VI stops the control retains that value.
  4. I run it again it keeps that updated value and runs again.
  5. Now I close the VI and open it again it starts up with the default value.

Some Things that can Cause Confusion

There are a couple of interesting things that happened in this simple example.

  • In Step 4 and 5, did I really want to make those values the default value. Since the VI stopped running and it looked like it was in “edit mode” and I then save and close it there are times some people expect that value to be saved. Now this isn’t desirable in the case where this is really a sub-VI where I want the default value to remain as it was since that impacts programmatic behavior.
  • Step 2, 3 and 4 can be a process I repeat multiple times when I’m characterizing a chip or a component. In that case I’d like to be able to see a history of that information and I only see the latest values.

What are the Different Ways People Need This to Work

Note: The above two examples I cited are really just two out of a very long list of use cases, we’ll keep discussing those but for now I’m interested in how people are affected by these.

I’m curious about how people make use of the interactive execution mode for VIs and default values and the data logging option with VIs. When do you use it in your regular work and which situations have you been confused by the current behavior? I’d like to make use of this information to help prioritize and guide some of our internal brainstorming on these topics so we can use these as validation use cases. Look forward to your thoughts.


One comment

  1. It would be nice to be able to launch a data panel that would show the history of inputs and outputs caused by every run. Other than that, I don’t see how else to show the history. The data logging option is a cryptic feature enabled on subvis and, in my opinion, should be removed as a feature.

    I think if a VI is running as a subvi, it should always run using the set defaults.

    I understand your questioning of the current workflow but I’m worried that changing it might cause more problems, than it solves. I think it would be nice (if technically feasible) to retain the front panel data even after a VI has been removed from memory however I don’t want that data to be saved as default. Perhaps you could put an orange halo around the controls that have different values than the defaults?

    One thing I *would* like to see is the ability to show the front panel data of a VI after it has been executed as a subvi. Right now you can only see the front panel data if you had already previously opened the VI. I’d like to doubleclick a subvi and see the last data executed on the front panel.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s