LabVIEW Idea Exchange

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

The Current Situation:

 

In a LabView Real Time program Control References cannot be used because the front panel is removed (even if debug mode is enabled). In order to write to a control in a cluster, the only options are to use unbundle/bundle or variants. It is preferrable to be able to programmatically write to any control within the cluster when one is required to be able to change any value within a large multi-level cluster that has many controls. Using variants and drilling down into the cluster to access and change a value causes execution issues in a Real Time program.

 

The Idea:

 

Have a Control Reference Terminal on the Data Value Reference Read Node on the InPlace Element Structure. This is shown in the code below.

Control Reference terminal on InPlace Element Structure.PNG

This would allow the value (and whatever other properties make sense to be accessible) to be programmatically modified inside the InPlace Element Structure. This would work in the Real Time environment too.


Labview has a way of creating the equivalent of static variables in a VI similar to static variables in OO languages or function-scoped static variables in C. This way is through the use of uninitialized shift-registers in single-iteration loops (i.e dummy loops).

If multiple instances of a VI is created and the VI contains such a static variable, the value of the static variable persists from one instance to the next. I can see why this is useful, but I think it would also be useful if there was an option to make static variables of different instances of a VI separate.

Static variables are primarily useful for VIs that have some concept of state and you don't want to explicitly create a state variable or cluster that the user has to manually feedback with outside signals. For example, if you created a VI for a PID controller or a state machine, and you wanted to use an uninitialized shift register to store that state, you can not create multiple instances of that VI with out having the two instances intefere with each other. The two instances cannot maintain independent state.

I ran into this problem while creating a VI to implement a moving window of values. (as a side not, it would be useful to have a moving window VI)

Granted that I’am a new user of LabVIEW 8.2, I wonder if you could define the parameters skweness and curtosis not only using moments but also using K-statistics (there’s a bit difference).

 

I apologize for my English.

Luca De Vecchi

The second element in the ROI cluster is an array of Contours yet many sub vis will only act on the first contour in the array. Both the required contour descriptors(line and annulus) are available in the example image, but since the first element is a line, the circular edge find - which wants the annulus - throws an error. 

 

All it would take would be a simple index and logical test to fix this issue.

Ich hätte gerne die Möglichkeit, in einem Diagramm mit 2 Y-Achsen 2 Graphen darzustellen,

die unterschiedliche Einheiten haben, z.B.: Spannung[V] und Volumen[m^3]

I have been working a lot with the Microsoft office add-on toolkit for report generation and noticed a few missing functions. One thing was that if you had a template that has tabs in the workbook that were charts ( when asked where you want to display the data when creating a graph you have the option for in the worksheet or in a separate chart) the worksheet selector does not recognize these tabs. So if you needed to change the worksheet name based on say a test name or configuration it will just skip over the tab. Or if you wanted to change the data going to the graph it will not let you select it with the select worksheet sub vi in order to further process it.

 

A second problem I had was replacing the Title of a graph in excel sheets. Apparently you can only manipulate graphs created by Labview using the toolkit. Ones that are already present in templates that are loaded are not changed by the toolkit functions. This means graphs are pretty much useless unless you write a lot more code that grabs data from sheets and creates graphs in different workbooks. It can be done, but for a workbook like mine that had 64 tabs it can be a nightmare. Just a thought I had that would save a lot of time and be useful for a lot of people interested in manipulating excel sheets and doing post processing on them. Still love Labview though.

For those measuring differential signals, having balanced inputs on both the Spectrum Analyser and the Distortion Meter would be an invaluable asset.

The Oscilloscope has this mind boggling feature, would so useful if it were added to the afore said instruments.

 

Thanks,

 

Keith 

Using the Distortion Meter and Spectrum Analyser for measuring signal distortion will give a definitive numerical value, but what does the distortion

look like? In the case of a sinusoidal waveform, is it clipping or crossover distortion for example. This needs to be known so one knows which part

of the circuit design needs closer inspection.

 

One can, as I often do, use a resistive network to sum an output signal to a reversed polarity input signal. However, it is a real pain adjusting the

two signals to balance to a null at the resistor centre point. Ah, you might say, use the differential  inputs of the Oscilloscope to subtract the signals

and view the error. This has two gotchas. One being there is no variable Y gain on the Oscilloscope to finely null the two signals, the other problem

is there will more than likely a time/phase difference between the inputs, thus preventing complete cancellation.

 

For the above reasons, if the Distortion Analyser had an output which showed the residual signal upon which it’s distortion figure is measured,

I would be a very happy bunny.

 

Ooh, whilst I am here, if an NI MultiSim developer happens to have nothing to do for a day or two, could a variable gain be added the Y input attenuator

of the Oscilloscope?  🙂

 

Thanks,

Keith   

I was wondering if anyone else would like to see some bootstrapping and permutation test functionality added to labview.  I find myself having to use MatLab's statistical toolbox which has a solid amount of statistical resampling methods.

In the series "Intended versus expected" (or blue versus orange), this is a discussion of a not very helpful feature of the Ramp Pattern VI:

 

ScreenHunter_001.jpg

 

If you ask for a single sample (samples = 1) from the Ramp Pattern AND do not set "exclude end?" to True, the VI returns an error -20006: "Analysis:  The number of samples must be >= 2."

The Help specifies that: " If samples is 1 and exclude end? is TRUE, the VI returns an array with one element of start."

It doesn't say anything about the situation I described previously, but most likely the error comes from the likely following definitions of the array {xi} of values (in the linear case):

 

1) exclude end? xi = xs + i*(xe-xs)/N, where i = 0,..., N-1 and (xs, xe) are the start and end points respectively

2) do not exclude end: xi = xs + i*(xe-xs)/(N-1).

 

In the second case, N = 1 results in a division by zero, hence an error.

 

So far so good, but here is the catch: Suppose I want to build a curve with equidistant abscissa (number N), comprised between a start and end points xs and xe (both included). It seems like the Ramp Pattern has been designed for me, right?

 

Wrong. If I set xs = xe and N = 1, I would expect a single point, equal to xs = xe. Instead, I get an error. So my first contention is that this should be a detected case: xe = xs AND N = 1, should result in a single element array equal to xe = xs.

 

Now, what I would suggest is that if xs != xe AND N = 1, then the Ramp Pattern could return a single element equal to (xs + xe)/2 (and a similar definition for a logarithmic ramp).

I've posted an idea, but didn't add any pic to explain:
http://forums.ni.com/t5/ideas/v2/ideapage/blog-id/labviewideas/article-id/16975/tab/rich

 

 

I've attached an image with this idea. Sorry for the duplicate posts.

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.

 

Best


 

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

I am a big fan of the built in logging added to the daqMX library, and would like to see NI build upon this model of adding common dq programming tasks without the need to do anything more than flip a few properties on a task.

 

The set of properties I would like to see is a section on task.read called processing that would apply signal processing to the incomming signal prior to reading.  Some examples would be filtering (low, High, band, selectable windows....) FFT, sthresholing, edge detection (returns booleans instead of analog signal).  If this was implemented in a slick way the driver could possibly offload the processing to a FPGA folowing the cRIO model.  Since this is a property added to a task, the task could decide if there are hardware resources avaliable or software processing only. 

 

The programmer can simply select the processing for the task type and now have a daq task with built-in signal processing simplifying the code development cycle (IMHO).

 

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'd be usefull to explicitly see the figures as they look like coded in different FP formats and flavours. The main set of FP format is:

 

 

Floating-point precisions

IEEE 754:
16-bit: Half (binary16)
32-bit: Single (binary32), decimal32
64-bit: Double (binary64), decimal64
128-bit: Quadruple (binary128), decimal128
Other:
Minifloat · Extended precision
Arbitrary precision

 

The new VI(s) would be greatly welcomed.

Hi,

 

Can any one help me in converting Date/TIme(String ) to floating point number and vice verse. I have attached a file which contains the details.

 

regards,

nikhil.

I would like to see the call chain information of the Errors generated by the LabVIEW primitive VIs. In case of the user generated errors As a standard practice we add the Call chain information as part of the source string.

I'd like to have the ability to wire a cluster directly to the selector.  Values of the Cluster could be wrapped with brackets [], or {}, and elements separated by semicolon ; to make the various separations easier to distinguish..  

Add Non-Uniformly Spaced Vector Interpolation to Mathscript or Labview

(Similar to Matlab's griddata function) so the attached data set can be plotted on a contour plot in labview:

 

 

clear all;

x = 0:0.01:20;

y1 = 200*exp(-0.05*x).*sin(x);

y2 = 0.8*exp(-0.5*x).*sin(10*x);

plotyy(x,y1,x,y2);

axis([0,20,-200,200]);

xlabel('Time (\musec)');

ylabel('Fast decay');

title('Multiple Decay Rates');

 

Please help,

1. how can I make the 2nd y label ('Slow decay')?

2. how do I set 2nd y maximum and minimum axis?

Thank you very much in advance.