LabVIEW Idea Exchange

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

I suggest the Background priority (lowest) option be removed from the priority selector in the Execution page of VI Properties:

 

BPrioRem.png

 

The reason for this is that NI (much to my surprise) confirms that this execution priority is ignored. A VI set to background priority simply runs at normal priority:

 

http://forums.ni.com/t5/LabVIEW/Is-background-priority-in-VI-Properties-ignored/m-p/1637750/highlight/false

 

Cheers,

Steen

Using inline subVIs allowed a very time critical waveform generating VI to be much more readable with subVIs yet without unacceptable performance loss Smiley Happy.  It's a shame NI has not figured out a way to still allow a probe to be used in an opened inlined subVI during execution of the calling VI.  To me it seems there must be some way to do this, since an inlined subVI just becomes essentially a portion of the calling VI code during execution.   

An uninitialized feedback node will always start with the default value if its data type.Then you can select if the feedback node should initialize once on compile or load, or if it should initialize on every first call. The latter option is only available when you wire something to the initializer terminal though, else it's grayed out:

 

NoFirstCall.png   WithFirstCall.png

 

I suggest that the Initialize On First Call option should always be selectable. If you haven't wired anything to the initializer terminal, the initialization value should just be the default value of the feedback node's data type (as usual). You may argue that you can always just wire a constant to the initializer terminal, but if that constant doesn't differ from the default value, it shouldn't be necessary, and such constants might even take up considerable block diagram real estate (clusters, arrays, or refnums for instance).

 

Cheers,

Steen

I noticed an odd (undesired) behavior where my SR/FB node acted oddly.

First I created a simple !32FB node

1.png

Next I added a +1 primitive to make it a counter....

2.png

-  and Smiley Mad my data type changed!  This behavior was undesired and looking through the node RCM and Properties I could not select representationSmiley Surprised

In fact I had to add a conversion. Simillarlly the same thing occured with a USR

3.png

I propose adding the ability to select representation to the RCM and Properties pages of SRs and FBNs

SR RCM                                        FBN Property browser

untitled2.PNGuntitled.PNG

When building Installers for an updated version of an executable, you can't select whether or not to overwrite the current source files directory. The reason this is a problem is when distributing to computers that need different configuration files that are installed with the original version but have since been customized to the specific computer. If you try to only include certain source files and not others then it still overwrites the entire directory and you lose the files you were trying to save. If there was an option in the Source File Settings window to "Overwrite", it could be automatically checked for the same default functionality but you could uncheck it to allow writing into existing directories.

 

Source File Settings.png

 

If you like this idea then give me some Kudos and hopefully we can get it in the next version of LabVIEW!

 

Peter W.

Applications Engineering

National Instruments

www.ni.com/support

With the Historical Trend Viewer you can display time-related data. When searching for an event with a sampling rate of 1 kHz it can be very difficult and time expensive to find spikes when the time range is unknown. For a speed-up of the error diagnostics a preview of the data (interpolation of e.g. one day) will help to reduce time. The XGrapher (UI Contest Winner) is a nice example for an implementation. The selected time range from the preview is loaded into the non-filtered area.

 

 

Download All

There are lots of people who are working on solutions to be able to dynamically create a storage space for a variable and access it by its name. Publically we have the Current Value Table and the VIRegister, but behind the scenes I'm sure people are recreating this wheel quite often (instatiation of functional globals e.g.). Shared variables offer some of this functionality, but it is not quite the same, nor is the way they are accessed as user friendly as the CVT/VIRegister.

 

The problem when implementing these with the existing primitives however is the fact that no matter how much you try the solution will have performance issues and be less user-friendly due to lack of full polymorphism. People will continue to improve their solutions within the limits of the tools they have available, but why not provide an optimal solution for such a common architectural element instead - by adding this as a set of primitives/in-built functions?

 

(The tag engine of the DSC module might be a close relative to this, but is it too close?)

When debug application with modal dialog, if I run main form (non modal) and forget open a modal dialog I cannot do nothing (all is locked) and I must kill LabVIEW.exe

 

Try with to open this project, then open modalDialog.vi then open and run main.vi!

 

Is possible implement a way to kill modal vi form project explorer?

 

My LabVIEW is 2010 sp0. OS windows Xp professional.

 

Regards.

Based on customer use, there was a "print options" available in Executables back in LabVIEW 7.1, but that is no longer available in 2010.

 

This feature is available in a VI as shown here:

PrintOptions2010.png

 

In executables, there is not a Tools>>Options to select Printing features such as not printing in grayscale.  Can this feature be added back into the Application Builder?

 

Executable.png

 

Thanks!

 

Download All

Often I have to open quickly a project see how things are done and close it. Sometimes due to different LabVIEW versions or small changes, it ask to save the project. It first takes time to search for which files have been changed and proposes to save them, which is often not wanted.

 

I regurarly use the shortcut ctrl + w to close the project, but it would be nice to close the project without saving the files. And thus save much time.

Other proposals only relate to close a VI without saving or the Do Not Save Option, but are too limited to single files and the revert option already functions well.

 

Suggestion

- use ctrl + shift + w or ctrl + alt + w to close a project without asking for saving and discard changes in project and VIs in the project immediately.

Therefore, my suggestion is to add functionality to a probe to provide the ability to replace the data passing through that point with the value of the developer’s choosing, either for a single iteration, or for multiple itterations.

 

Occasionally I have found instances where is would greatly helpful to be able to inject a value into a 'wire' for either a single iteration or for every iteration, overwriting the value that would be naturally set by the previous operation. This may be a desire to insert an erroneous value to test my code's response to unexpected values without disrupting the code that is in place, or, as I hate to admit, to recover a runaway thread without disrupting the execution of the remainder of the application and any associated, unsaved data.

 

For example, a while loop that has managed to miss its exit condition due to an unforeseen race condition, holding up a weekend’s worth of data collection from being saved to disk. Rather than being forced to click the dreaded Abort button, it would be nice to be able to simply force the next evaluation of the conditional terminal to be True, exiting the while loop and freeing the execution of the remainder of the application

 

During the final project development stages I have made it a practice to search for coercion dots & replace with proper conversion modules. This does not necessarily mean that I do not consider coercion dots during development itself. I do take care but a possible data type change at some point can introduce this. So it will be great if there is an utility to search for coercion dots in an hierarchy of VIs.

 

Priyadarsini S

Hello,

 

it would be nice to have an option to choose which features should the "suite" of IMAQ Setup Learn Geometric Pattern + IMAQ Learn Geometric Pattern + IMAQ Get Geometric Template Features return. Currently it is returning all of the features, which needs more time.

 

(please compare with IMAQ Extract Curves + IMAQ Get Geometric Features from Curves which has this option and is much faster (among other differences).

 

[actually a customer's idea]

 

Thanks!

Zenon

While in most cases it is possible to write a code with built-in timeouts, but there are cases when you do not have means to do that, so It would be nice to be able to specify how much time would you like to let particular VI (function) to have for execution.

 

Attached example has 1ms resolution and forced to use VI server calls to pass data to and from VI to make it work with STOP command.

Natively it can be done with much tighter resolution (us, or better) and without server calls.

 

Timeout_Watchdog.png

P.S. Sorry for just PNG but Snippet for this VI was not capturing code correctly, Boolean property node end up losing its link...

Download All

The Get Queue Status function will return all the elements in the queue - if you remember to set the "return elements" bool input to True. It's set to F as default. Why would I not want all the handy information from Get Queue Status but not want the elements? Smiley Indifferent

If you identify some part of the Toplevel VI can be reused and you want to create subVI out of it, you will use the select the code and go to Menu bar Edit--> Create subVI.

Current behavior :

                  1) The connector pane is based on the no of wires required for input and output.

                  2) The SubVI does not have Error case.

New Idea:

             The connector pane should be fixed 4x2x2x4

              The code should contain Error in and error out with Error structure as shown below

Image-4.png

While using Highlight Execution for debugging, we end up scrolling the code to know which part of the code is currently executing, and loose context of the code due to scrolling. We could avoid this by letting 'Execution Highlighting' do the scrolling for us. Execution Highlighting with Auto Scrolling can be invoked on demand. The default behavior of the Highlight Execution will not Scroll. We should provide mechanism for users to disable or enable this while executing the code.

 

Also in case of state machine,

  • Current Behavior - If one highlights in the middle of execution and when a sub VI is executing, then the highlight will reach the case only after the control returns to top level VI.
  • This feature should also address the above mentioned behavior by switching to the case(state) in which the sub VI is executing.

It is 2011, and everyone is either making the transition to 64bit, or have already done so. Yet LabView on Linux is still stuck in 32bit, and this means that for modern Linux installations you have to install a ton of 32bit support libraries just to run LabView. Not to mention missing out on all the 64bit fun that everyone else enjoys these days, such as access to more memory. Please do something about this.

Getting the best performance while accumulating array values for display can take up a bit of space.  I propose a new primitive, either an array primitive or a node structure (like the feedback node) that accumulates an array of a specific size.  It should be smart and size itself automatically if dropped into a loop, the way indexing output tunnels do.  It should also keep track of how many times it has been called and return only the points collected, or the last N points if the size input is wired.  It is functionally equivalent to the "Collector" express VI, but has the ability to automatically size itself, accept a wired size input, and is truly polymorphic.  It would also put the best of memory management to work by NI's clever engineers to maximize performance. Here is my best shot at its implementation as an array primitive:

 

 

node.png

Deallocate Queue Memory.PNG

 

Many people do not realize that memory allocated by a queue is never deallocated until the queue is destroyed or the call-chain that created the queue stops running.  This is problematic for queues that are opened at the beginning of the application and used throughout because all of the queues will always retain their maximum size, causing the application to potentially hold a lot of memory that is currently unused or seldomly used.

 

Consider a consumer that occassionally lags behind and the size of a queue will grow tremendously.  Then the consumer picks back up and services the elements out of the queue in a short period of time.  It is unlikely the queue will be this large again for quite some time, but unfortunately no memory will be deallocated.

 

I'd like a primitive that will deallocate all of that memory down to just the current number of elements in the queue.  Since the queue won't need that much memory again for a long time and the queue will auto-grow again as needed, I'd like to recover that memory now instead of waiting for the application to be restarted (which is currently the only time the queue is created.)

 

The alternative is to add some code to periodically force destroy the queue and have the consumer gracefully handle the error and open a new reference.  Then replicate this change for all queues.  Seems messy and puts too much responsibility on the consumer.  I'd rather just periodically call a 'deallocate queue memory' primitive on the queue reference within the producer, perhaps once every few minutes, just to be sure none of the queues are needlessly holding a large amount of memory.

 

I believe this will:

  • Improve performance in other areas of the application because less time will be spent looking for available memory to allocate.
  • Reduce the chance of Out of Memory errors because large blocks of memory will not be held [much] longer than they are needed.
  • Improve the common user opinion that LabVIEW applications are memory hogs or leaky.

I realize this will hurt enqueue performance when the queue begins to grow quickly again, but this area is not a bottleneck for my application.

 

Thanks!