LabVIEW Idea Exchange

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

We have a Round towards -Infinity  (3.8 becomes 3,  -3.8 becomes -4)

We have a Round towards +Infinity (3.2 becomes 4, -3.2 becomes 3)

We have a Round to Nearest (Rounds up or down to nearest integer, if 0.5, banker's rounding to even integer)

 

Why is there no Round towards Zero?  Basically a truncate.  (3.2 becomes 3, -3.2 becomes -3)

I have a use for that right now, but it takes several primitives to work. 

 

As a corollary, a Round Away from Zero.  (3.2 becomes 4, -3.2 becomes -4)

 

 

Message Edited by Ravens Fan on 01-19-2010 04:53 PM

Having a native polymorphic PlusAndMinus function would clean up so many of my diagrams.  Anything where you are programmatically resizing and centering front panel objects or objects in the picture control toolkit would benefit the most, but there are plenty of other uses.

 PlusAndMinus.png

I need a format into string that is capable to format numeric with thousands separators.

Like this  (Visual Aides - Numeric Separators) idea but also for the conversion and scan functions.

 

Looking at the syntax

 

%[$][-][+][#][^][0][Width][.Precision || _SignificantDigits][{Unit}][<Embedded information>]Conversion Code

 

 

the  <Embedded information>  currently used only for time formats would be ideal to extend to a more general form. 

 

Something like <+ nnn nnn.ddd ddd> would be nice 🙂 ( the d is already occupied ... # or whatever .... maybe similar to the excel format syntax or maybe there is a (better) standard??? )

 

Currently I use the attached vi to add the separators, however it would be nice to have it in a general form 

 

 

 

(A while ago I suggested to post this idea, but it has not happened so I do it. :D)

 

The Akima Spline (For example explained here) seems to have some desirable features compared to all the interpolation and fitting algorithms available. It should be added to the LabVIEW functions, at least to interpolate 1D

I would like to have the ability to set the compare aggregates mode for comparisons involving containers (arrays certainly, clusters would be a nice bonus) and a scalar value.  This includes the comparisons to 0 functions as well.

 

compareAggregatesIdea.png

Please add the circle constant tau, to the Math & Scientific Constants palette.  Happy Tau day!  (see more at http://tauday.com/)

 

Tau Constant

I recently found out that LabVIEW uses the Wichmann-Hill (1984) random number generator.

http://digital.ni.com/public.nsf/allkb/9D0878A2A596A3DE86256C29007A6B4A

 

...which in some fields is completely unacceptable for not being random enough (cycle length of 6.9536e12?)

A much better (and arguably a much more currently standard one) would be Mersenne Twister (cycle length of 2e199371).

http://www.mathworks.com/help/matlab/ref/randstream.list.html

Hello,

 

In many of my applications i had to run dynamic assynchronous VIs using a VI path.

 

When the VI you want to launch has some problems (VI broken, missing ressources, ... ) you get the generic error 1003. (The VI you want to launch may be broken ... ? )

 

This error can be easily solved when you are using LabVIEW IDE. Smiley Happy

 

But sometimes, this error can occured in an executable you have deployed to your final user computer.

And then, the error 1003 (The VI you try to call may be broken ... ) is a little bit poor in order to analyse the problem. Smiley Frustrated

This error occurs, for example, when the dynamic VI tryes to access missing DLL's.

 

It would be nice, if the error 1003 message, could be filled out with and additionnal "error description", giving more informations about the error source.

For example, an error list, like the error list in the LabVIEW IDE. (Broken arrow error list !)

 

Thanks a lot.

 

Manu.

The updated to IEEE 754 adds a half-float and a platform independent quad float. We have a project where a data source will be giving us values in half floats (16-bit). It would also be nice to support quad floats (128-bit) since the current EXT datatype is platform dependent.

When producing a 3D plot with an array containing NaN values, the plot should not interpret these as zero. Rather, these points should be disregarded so that the black lines do not appear. Given the way Labview handles arrays, there is no way to remove these elements given the way that the data is generated and as such it must be left up to the plotting algorithm.

 

3d plot NaN.PNG

From an AE:

 

I confirmed with the Product Support Engineer for the PID Toolkit that the toolkit does not officially support the Mac OS X and therefore, we do not have an installer available for it. However, she also did mention that the PID Toolkit is created using LabVIEW code, so it is possible that you would be able to open VIs that come with the PID Toolkit in the Mac OS. I can submit a product suggestion for you to request Mac OS support for the PID Toolkit in the next release.

 

So here is the product suggestion. NI has gone to the trouble of building a cross platform set of VIs for PID and then stumbled in merely packaging it. Just build an installer.

Allow boolean for indexing.

This way a quick array selection can be made without the need for building loops.

(for those familiar to matlab: matlab indexes like this)

 

 

 

Boolean indexing.PNG

Add the possibility to enable or disable the indexing for a string at the entry of any loop.

The result would be only one char by one char, and would be really usefull !

 

Of course, the same possibility at the exit would create ("build") the string from a char or a string...

String in Char.PNG

I would like to have an XY Chart that has the same functionality as the Waveform Chart, but with x and y inputs instead of just the y.  The XY Graph is not efficient to be used inside of a loop, mainly because it redraws the plots each iteration, and I've had a hard time trying to make a buffer that is as efficient as the waveform chart.  The Waveform Chart does not allow you to define the x-axis as anything that is not an interval.  For example, I might want to plot pressure vs. flow rate.  Many customers also request the ability to change the sampling rate during an experiment.  this would be much easier to handle with an XY Chart.

It would also be nice to have the buffer size included in a property node.

It would also be nice to have the ability to change the size of the graph palette.

It would also be nice to have the nearest plot coordinates (x and y values), or interpolated values, to mouse movements over the plot area as a "visible item" in the shortcut menu (this should show a dot over the plot's trace)...  I've done this with an X Control, but I'd like the ability built into the new XY Chart on a lower level to improve effiecency.

 

I think it would be cool to be able to define custom units in the build unit string function.  For example (%, dB, or Dan's).  The ability to include custom units would remove the burden to include every unit in this dialog.  Adding custom units would also help people who have large complex calculations.

 

Unit Dialog.png

The goal of this idea is to make it easy for the LabVIEW ecosystem to create reusable libraries for LabVIEW that would be type independent. Let's think for a second dictionaries, also called as key-value stores. Dictionaries are data structures that allow storing and retrieving values with a specific key. To create a generic reusable strongly typed dictionary is currently impossible with the LabVIEW type system. One can create a dictionary that is type specific but then it's not reusable. Or one can create a reusable dictionary but then it's not strongly typed. Type Parameters and Parametrized Generic Types as explained in this idea would allow creating strongly typed dictionaries that are widely reusable across applications. Specifically type parameters and parametrized generic types would allow LabVIEW ecosystem to develop highly reusable strongly typed components to solve various common programming problems. This would allow National Instruments to put more focus on the core of the language as the LabVIEW ecosystem could solve much wider range of problems that preivously have required National Instruments to contribute.

 

Add a new control type Type Parameter to LabVIEW that augments the current Control, Type Def and Strict Type Def control types. The Type Parameter type would act like a regular Type Def control with one special and important distinction. You could wire anything to an input terminal expecting a specific Type Parameter type and the downstream type would adapt at compile time to the type wired to the type parameter input.

Type Parameter Definition

 

In a single VI type parameter could be used in multiple places but all instances of the type parameter would adapt to the same type.

 

Type Parameters

 

When a VI that uses Type Parameters in the front panel is used on a block diagram, the template VI is replaced by the compiler by a type specific instance that has adapted the type parameters to the type wired to the Type Parameter input. Notice below how in our VI the control and the indicator were of type Type Parameter with a default type of DBL and the instance got adapted to type U32 that was wired to the input.

Calling a VI with Type Parameter Inputs

The same type parameter could be used on multiple inputs of a VI.

Multiple Inputs of The Same Type Parameter

And all of the type parameters would adapt to the same type when the VI is being used.

Calling a VI with Multiple Type Parameter Inputs of the Same Type

Note that in the above example we chose the element of the array to be a specific type specified by a type parameter. However the arrays themselves could as well have been specified by a type parameter.

 

So far we have focused on VI boundary where type parameters adapt the whole VI to specific type or types if multiple different type parameters are being used in the connector pane of the VI. Type parameters can also be used in composite types (e.g. arrays, clusters, classes) and the downstream composite types would adapt to what is wired to the type parameter input.

 

Type Parameters with a Cluster

Note that x and y as instances of the same type parameter have to be of the same or compatible type.

Type Error With Type Parameters

 

Type parameters can also be used in class private data to create parameterized custom types. This is where type parameters become extremely powerful. Let's assume that we have a class 3D Vector.lvclass that has three instances of a "Data Element.ctl" Type Parameters. The default type of the Data Element is set to be DBL. The cluster private data has three instances of the Data Element, one for each of X, Y and Z.

Type Parameters in Class Private DAta

 

Now we could create a Create 3D Vector method VI for this class that allows us to construct type parametrized instance of the class type.

Creating a Type Parametrized Object

Now calling this Create 3D Vector.vi with string as the inputs for type parametrized inputs X, Y and Z will create an instance of class 3D Vector with compile time type 3D Vector[String].

Calling a VI that Creates a Type Parametrized Object

 

And this is where we now start seeing the superpowers of type parameters and parametrized types as well as generic type parameterized VIs that go along with them. Now we have a capability of creating custom VIs and custom types that both can adapt to different parameter types at usage time.

 

Let's get back to the question of dictionaries. We could easily construct a dictionary that allows the key type to be parametrized with one parameter and the value type to be parametrized with another parameter. For example we could use the dictionary with I32s as keys and Strings as values. Or we could use it with Strings as keys and File Paths as values. Constructor for such custom type would be trivial to create.

Type Parametrized Create Method for a Dictionary

 

Once we have constructed the dictionary we would naturally like to use it. We could now use method VIs of the Dictionary class to add and fetch elements from the dictionary. As an example Get Element By Key would look something like this in it's simplest form.

 

Get Element From Dictionary

 

 

Note that Dictionary In is type parametrized with two different type parameters Key Type and Value Type. In the class library there is a Type Parameter control Key Type.ctl and Value Type.ctl. Now type parameter Key Type.ctl is used both inside the private data of the class and on the fron panel as the Key input, the type of these two must be the same. The same is true for the Value Type element of private data and the Value indicator that both derive from Value Type.ctl type parameter. The has function is any function that can convert any LabVIEW types to some strings that we can use as keys for the variant attribute node. We are using variant attributes as the store implementation is this basic example.

 

Calling the Dictionary with integer as the type parameter and string as the value would look something like this.

 

Calling a Type Parametrized Dictionary

 

As you can see the 0 and empty string will define propagate as type parameter types for Key Type and Value Type in the dictionary wire. Now Add Element.vi would have to adapt to these elections for Key Type and Value Type the moment the Dictionary wire is connected. The Key input immediately change to type INT32 and the Value input to type String. Similar would be true if the wires would be connected in reverse order. Connecting University of Texas string to the Value input of Add Element and connecting number 1 of type INT32 to the Key input of the Add Element would immediately adapt the Dictionary in and Dictionary out inputs to be of type Dictionary[Key Type = INT32, Value Type = String]. A type error would occur if Dictionary in would be of different type.

 

Type Parametrized Generic Types are an extremely powerful concept to incldue in a language and this idea describes a feasible way to implement them in a visual dataflow model of LabVIEW. This is and has been for maybe ten years my absolute #1 feature I have wanted to see in LabVIEW. I think the time is right for me to officially make this request. Ideally Type Parameters can be bounded but that's a topic for a whole other idea post.

It would be nice to have an VI to delete groups and channels in .tdms files with all data belonging to the channel and group.

 

I have inherited a huge LabVIEW project which is full of the following construct. Since this may be unreliable can a test be added to VI Analyzer to check for it?

 

Capture.PNG

 

Option on the build array function to pad concatenated arrays of different sizes with NaN instead of 0.

I think everyone under the sun must have written there own degrees to radians function or vice versa.  Its not hard to do but perhaps it should be available natively as part of the maths palette.