LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

parallel sequences with differing durations

Hello
I have one test stand with 8 lines. They run multiplexed through one external controller. So it's basically 'tell #1 what to do' - 'see what #1 does' - 'change control valve a little' - 'change to # 2' - cycle on.

I used to run 8 setpoints, each eventually different from the others, but constant over time. Worked fine.

Now I want to change to running profiles, i.e. setpoints varying with time. Again, each profile with individual ramps.
My attempt was to use arrays of
time 1,0 setpoint 1,0 e.g 0 s 100 l/min
time 1,1 setpoint 1,1 10 s 50 l/min
.
time 1,m setpoint 1,m 200 s 100 l/min

time 2,0 setpoint 2,0 0 s 0 l/min
.
time 2,n setpoint 2,n 230 s 50 l/min
etc., with n <> m.
or whatever user wants. The loops will obviously start in phase, but run out of phase as loop times are not equal.

So it may be 8 arrays of different lenghts that would have to be editable at runtime. I thought to stuff these into a cluster and cycle through the cluster elements. Loading the array, interpolate a setpoint and do the control. Then change to the next array.

However, I cannot access a cluster element programmatically. Changing from Cluster to array will force me to use equal number of setpoints for all lines, which seems not what I want to do.
Did any one else run into such aproblem before, with a solution maybe?

Thanx in advance
Michael
0 Kudos
Message 1 of 7
(2,870 Views)

Hi Michael,

is it possible for you to create parallel processes? If yes you can create a vi template which you can configurate over queues. So you have only one vit on which you make your internal changes, but you can load it 8 times with different configurations.

Hope it helps.
Mike

0 Kudos
Message 2 of 7
(2,865 Views)

@nimic wrote:

However, I cannot access a cluster element programmatically.

What do you mean you can't access it programmatically? Have you looked at the Bundle/Unbundle functions?
Message 3 of 7
(2,854 Views)
Hi, everybody Thank you for your suggestions. Yes, I tried un-/bundling, but I cannot select different cluster elements to use at runtime. I cannot convert it to array as elements are different in length. But, queue was the cue! I now have 8 sub-VIs interpolating their individual setpoint(t) to fill an array of queues (of length 1) with a current value, and the multiplexer reads the queue contents, selecting by index the desired test system line. The attached .emf gives an idea of the different ramps.
0 Kudos
Message 4 of 7
(2,819 Views)


nimic wrote:
The attached .emf gives an idea of the different ramps.

Your attachment is missing. Smiley Surprised
- Partha ( CLD until Oct 2027 🙂 )
0 Kudos
Message 5 of 7
(2,817 Views)
Right you are:
0 Kudos
Message 6 of 7
(2,815 Views)

@nimic wrote:
Yes, I tried un-/bundling, but I cannot select different cluster elements to use at runtime.

That is correct. Just like you can't change at runtime the selection of which property of a structure element in text-based code.


I cannot convert it to array as elements are different in length.

I think you mean the number of elements. In situations like this an array of clusters of arrays is often used. In other words the outer array is the number of stations. The element of the array is a cluster which acts as a shell. The cluster element is an array which is the array of setpoints. This allows you to have a varying number of setpoints for as many stations as you want.



Message Edited by smercurio_fc on 06-18-2008 09:10 AM
0 Kudos
Message 7 of 7
(2,800 Views)