LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Passing Data with Many Senders at Multiple Rates for Logging

Solved!
Go to solution

@apok wrote:

did you look at this in the find example>>Queue Multiplexer.vi....."Many-Into-One" Smiley Wink


 

I went ahead and re-did the example according to what I will be using it for.  It logs a TDMS file to disk wherever the VI is located.

There are tons of 0's throughout the data, which I can't have in the data set (because this data will also go through a calculations phase and the 0's will kill my calcs).  The only thing I can think to do is multiple independent streams.  I'm still not sure how the calcs will work out, but this logging will not work.  (I did this example with just 1 channel group.  My final will have multiple channel groups according to the logging rate.  I was just trying to see how the single pipe with all the data would work for this example).  Thanks for any help.

 

--------------------------------------------------

Nathan - Certified LabVIEW Developer
0 Kudos
Message 11 of 23
(2,627 Views)

Hi,

 

how about changing the 0's in the cluster constant ton NaN, then make the writes in the Data Retrieval Loop conditional and check for NaN.

Nice loop labeling by the way. Smiley Happy

 

Regards

Florian

0 Kudos
Message 12 of 23
(2,613 Views)

Nathan_S wrote:
I went ahead and re-did the example according to what I will be using it for.  It logs a TDMS file to disk wherever the VI is located.
There are tons of 0's throughout the data, which I can't have in the data set (because this data will also go through a calculations phase and the 0's will kill my calcs).  The only thing I can think to do is multiple independent streams.  I'm still not sure how the calcs will work out, but this logging will not work.  (I did this example with just 1 channel group.  My final will have multiple channel groups according to the logging rate.  I was just trying to see how the single pipe with all the data would work for this example).  Thanks for any help.

 


whats happening is you are introducing no data on the rest of the elements in one loop, like wise on the other two loops...therefore "0"s on the end results. assign a different queue for each data enqueued....

 

Spoiler
parsed_VI_BD.png

 

Message 13 of 23
(2,593 Views)

That's what I figured it would boil down to, I've beating my head against the wall all day trying to figure the most elegant way to do this (this is just a small subset of the problem, I'm trying to keep the number of queues and such down to a minimum, notifiers with the 1:N way of doing things might become my friend).  Thanks for the help.

--------------------------------------------------

Nathan - Certified LabVIEW Developer
0 Kudos
Message 14 of 23
(2,590 Views)
Solution
Accepted by topic author Nathan_S

You can avoid writing the zeros with one small mod

1!.PNG

 


"Should be" isn't "Is" -Jay
Message 15 of 23
(2,583 Views)

Jeff,

 

think yours is the answer!....an elegant way?

elegant_VI_BD.png

 

0 Kudos
Message 16 of 23
(2,580 Views)

This is great.  Thanks everyone for the help.

--------------------------------------------------

Nathan - Certified LabVIEW Developer
0 Kudos
Message 17 of 23
(2,554 Views)

@Nathan_S wrote:

This is great.  Thanks everyone for the help.


You are quite welcome. 

Multiple producer multichannel consumer loops such as this one  Several producers, each with its own destination, but constrained by a common element (Bus, File, etc...) almost have to contain source info in the queue data.  A hard lesson to learn from scratch and, trust me you can go down many dead-ends and dark allys finding the trick!  One of the best features of these forums is the ability to learn best methods and practices for these trickier problems.  Glad I could help.


"Should be" isn't "Is" -Jay
Message 18 of 23
(2,536 Views)

Well said Jeff.

0 Kudos
Message 19 of 23
(2,514 Views)

Jeff,

Would you post vi for the solution? 

Thanks!

 

0 Kudos
Message 20 of 23
(2,201 Views)