When I change the settings of a labview object (by double clicking on the object and changing values on its front panel), these settings are changed for all instances of that same object.
For example, I open and name four motors in Begin.vi. When I try to invert one of them through its front panel (by clicking on the invert button), I end up inverting all of them.
At first I thought this behavior was because I copied and pasted all my motors, but it’s not. Even when I create new objects through the menu system this non-distinct behavior remains.
Clearly my mental model of how labview works is off. I thought that creating a new object in a block diagram would be the equivalent of instantiating a new object in java: MyClass myObject = new MyClass(); But this is not the case.
So how does it work? What’s going on instead? Is there even a way to instantiate new objects the way you would in an object oriented language?
When you call a VI as a sub-vi, all front panel objects become connectors on the sub-vi icon. You can then wire constants to the connectors. The individual connector values are not shared between sub-vis.
I’d suggest looking through the videos on http://frcmastery.com
LV icons do not represent objects. The icons represent function calls. Thus when you open a subVI definition and change that definition, all calls are modified.
Not to complicate things, but LV does support objects, and again they are not represented by icons, but by data instances such as constants or elements returned by other functions or methods.
LabVIEW is a data-flow language. It works a little bit “inside out” from the way you’re trying to think of it. Variables (and by extension objects) are represented by the wires between blocks. As Greg said, the blocks represent function calls.
I think it’s best not to try to understand it based on what you know of other languages. The more knowledge you bring to the task, the more you will have to unlearn before you can get to know LabVIEW on its own terms.
In your specific example of the Motor Open, you shouldn’t be doing anything with the vi front panel. You should create a constant wired to the Invert input of the vi icon (right-click the connector on the icon and choose Create->Constant from the popup menu) and set that constant to be either T or F.