LabVIEW Idea Exchange

Community Browser
cancel
Showing results for 
Search instead for 
Did you mean: 
Post an idea

 

                When an object is locked, we can not change, neither his position, nor its size.
                                           but we can still change its color. This is not logical.

 

                                                           i disagree with this behavior


              When an object is locked, we should not be allowed to change its color(s).


 

                    original5.png      393.gif

                    (sorry for my broken english, i try to do my best)

 

Add an option to the right-click menu that allows a developer to "lock" a constant value on the block diagram.  Typedefs can currently provide this functionality, but in many circumstances constants don't demand their own control.  This would provide the developer with a small assurance that a constant hasn't been accidentally changed.

 

The constant could be "unlocked" via the right-click menu as well.

It's not possible to delete a plot from the graph legend after you extended the legend to a specific number. For example, extend your graph legend to say 10 plots. Later you want to use only 9 plots.  You are allowed to prepare your legend for showing only these 9 plots but the 10th plot is still inside the graph. These behavior troubles me especially when using the scroll bar of the legend. In case of this you will always see the 10th Plot, which you don't want to use anymore.

 

My suggestion: Deleting unused plots should be possible inside the properties menu.

 

 

I have an event case for value changes for each of several clusters on my front panel. I would like to react differently to each of the controls in the cluster that triggers the event. It would be good if the event data node had a terminal for the number of the control in the cluster that triggers the event that could be wired into a case structure to handle each control's change. Currently, there are a couple of examples that discover the changed control by iterating through the cluster's Control[] property comparing NewVal and OldVal (decibel.ni.com/content/docs/DOC-3492, decibel.ni.com/content/docs/DOC-20306). However, once it is discovered, you still have to do something with it. It seems the whole discovery step could be eliminated if the triggering control's number could be passed into the event case.

There are alot of applications that require the use of Booleans, and when the boolean expression gets complicated or large it will be a headache on the programmer.

LabVIEW should try having a De Morgan law "function" or at least a way to simplify complicated Boolean expressions. Although it won't be used as much, it will be a handy tool for any electronics/programming course.

For instance, Partial fraction expansion isn't used regularly but when it's used it helps save time.

 

These are simple examples but can get more complicated. For example, usage 2 can have more input (e.g. 4) it will have 16 possibilities which have different simplified code.

 

USAGE 1: User wires some input on the block diagram, when the simplify button is used, it simplifies the complicated code to a simple one ( noting that it is not the unique solution as shown in USAGE 3)

USAGE 2: If for the application, the user changes the value of the input and he gets different output; this table can get the simplified; or the "best fit" for the number of data present.

 

In http://forums.ni.com/t5/ideas/v2/ideapage/blog-id/labviewideas/article-id/16975/tab/rich, I wanted to compare that  Partial fraction expansion vi is not widely used except for certain applications yet it is important and beneficial.

Same goes for this idea.

 

Simplifying Boolean.png

When pulling the diagramm disabled structure to the block diagramm, it would be quite handy to choose whether it is ENABLED or DISABLED, e.g. by pressing CTRL for ENABLED state.

I would like to drag items such as the iteration terminal and conditional terminal to the corners of a structure(i.e. while loop) and have the snap to their default locations,much like the way labels will snap to their respective controls, indicators, and constants when you drag them near the item.  This becomes a problem when you wire something to one of these terminals and then resize the loop or structure.  The terminals remain where they are currently located instead of moving with the structure boundary. 

I think it would be more convenient if the Source Name for timed loops whas changed to an enumerator instead of a string. So the user could easily select the source from the block diagram or front panel. I guess external clocks would be a different story.

 

Timed loop source enum.JPG

When using the Number of Rows property of a tree control, as shown below, the number of row returned does not reflect the number of rows with actual data. As you can see in Front Panel screenshot, the tree control has only 3 rows of data, but the property node indicates that there are 12 rows. This is because in the Properties window for the tree control, the number of rows is set the 12. The Number of Rows Property Node help file indicates that this property counts "partial rows" which means this property node is used correctly. However, it would be useful to have a property node which displays the rows with data.

 

For example, I was trying to implement a function to move a tree index down in the tree control. I wanted to implement functionality so that when the current row + 1 was greater than the maximum number of rows, set the new row to 0. However, since the maximum rows property is 12, not 3, in the below screenshot, the program would throw an error with this logic.  

 

RowProblem2.PNG

RowProblem.PNG

Hi All,

 

I'd like to put up an idea I had about a 'pass through' node for case structures. I had the idea when working with the in-place element. What I would like is a pair of nodes - like shift register nodes - where the input and output are identical unless the inner loop is wired. In this way it would be like a shift register on a FOR LOOP when the index is wired to zero.

 

The idea of this would be to clean up case structures - in particular where you might have 3 or 4 wires going through multiple cases in a state machine. You have to make sure they are all wired up and they clutter up your block diagram. With these nodes you only have to work on the wire you are actually changing in a particular case and then ignore the rest of them.

 

I also though that if you wire a cluster to a 'pass through' node you could have the option to 'Unbundle/Bundle Elements' similar to the option in the InPlace Element Structure. Please note this change I'm suggesting is cosmetic/useability - I don't think this should have inplaceness associated with it. I reused the nodes because they were easy to copy and paste.

 

I've added an example of what it could look like - this is a simple case structure to initialise a cluster, increment it and exit the state machine. In the initialise state the inside of the 'pass through node' is wired and then goes into the shift register. For the increment case it is unbundled, incremented, rebundled and passed back out. Note that for both these cases the False boolean is passed through the shift register - without a wire - and then enters the stop node. In the exit case the cluster data is passed through the case without a wire and could be read outside the loop by wiring to the shift register (if I'd thought to draw it) whlie in this case the boolean now reads true and the loop is stopped.

 

LV_Case_Structure.png

 

 The second change I'd like to suggest is to allow a case structure node to be associated with a specific element in a cluster. Allow us to wire a cluster - which contains at least one string, enum, boolean etc - straight to the case structure node and out the other side. Then right click on the case structure node to choose which element the case structure reads!

 

LV_Case02.png

 

 And of course allow the 'case structure node' to double as a 'pass through node' also and I would be very happy programmer! 

 

I look forward to your comments - and Kudos,

 

Thanks,

Dave

 

 

 

 

PS if anyone has a better name than 'pass though node' please holler - it sounds worrying like a laxative;-)

 

For speed of development and ease of reading code I would like to add a contitional array build function.  I use a build inside of a case structure where the true case appends on to the array and the false case does nothing,  why even have the case structure to hide empty code and clutter up the block diagram, the could be easly grouped into a singel function (see below).  I am for anything that cleans up block diagrams and speeds up coding.

 Conditional Build.png 

If you use a big cluster connected through many SubVIs I sometimes have the situation that I would like to know were element x of the cluster will be read or written.

 

Example:

 

lv_1.PNG

 

Now I'd like to know which SubVIs write the value "Measurement Started" (like the function to find the SubVI calles from the project explorer). In this example it should list "SubVI 1".

 

Some times I have parallel while loops. In this case, it would be useful if I could switch between the different loops, as in a case loop, without the program code changes.

This would be much easier than the endless down- and upscroll...

 

Loop struct.JPG

 

Thanks!

In reference to this knowledge base article:

http://digital.ni.com/public.nsf/allkb/A7DBA869C000B5AE862570B2007C4170

Along with my own personal experience trying to develop an RT program.

 

Choosing to force deployment as a zip file is incredibly obtuse and needlessly adds dead time to the development cycle. Now, when building a networked UI, if changes are required to the Real Time code, I must open, edit, build source, FTP, then run. Why can't I just build the Real-Time application and run it programmatically with a simple VI reference?

 

Alex

We are all used to creating arrays with a for loop.  I have always wondered why there wasn't a simplier way to do this.

 

What about simplfying array creation with a more advanced Initialize Array.  Add another terminal that is just "increment" or "delta".  In the example below a double array of length 1000 with a starting value of .004 and an increment of .004 per element.

 

newarray.png

It would be nice to be able to include default values for indicators and controls when creating VI documentation.

"Specify the maximum values for the PID gain schedule in ascending order. This VI uses the first set of PID gains in the array for all gain scheduling values less than the corresponding maximum value."

 

Say I've got an oven whose response to control inputs is temperature dependent, due to factors like heater loading, changes in convection with case temperature, etc.  I want to use gain scheduling so it will be controlling optimally at the low, middle, and top parts of its operating range.

 

If I run the Autotune wizard on my oven at 200F, 400F and 600F and put the resulting values into a PID gain schedule, the result I got tuning at 400F will be used from 200F to 400F, then there will be a sharp change to the 600F values at 401F.  This is nothing like what is physically happening at the oven.  Moreover, the sharp changes in control parameters could potentially result in some odd behaviors when controlling near the transition point.

 

I'd much rather have it be that at, say 350F, the control parameters would be a linear interpolation between the 200F and 400F values.  The current behavior below the first entry and above the last would be unchanged.

 

This could be implemented as an optional Boolean input, default "off," to avoid breaking existing code that depends on the current behavior.

The "profile" that this VI takes as an input is an array of time/value pairs.  Two sequential points with the same time make a step, two sequential points with increasing time make a ramp or soak.

 

Currently, two sequential points with decreasing time cause unpredictable behavior.  I suggest they should cause the VI to throw an error instead.

It's fairly common for an operator to want to pause or extend a process at a certain step (e.g. "extend the oven preheat until I get back from break").

 

Add a boolean input to the PID Setpoint Profile VI called "pause" (default false).  When true the profile elapsed time doesn't increment, and the setpoint output is the last unpaused value repeated.

Would it be nice/useful if you move the mouse over a subvi in the BD, the "Context Help" not only displays the name, icon and connectors, but also the "Description" of the subvi?