LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

post processing using NI6225

Hi Clint Eastwood (!),

You can do almost anything in LabVIEW - but finding the most efficient way is what the art is. You CAN indeed access the properties of the element INSIDE the array. I have shown this in the attached "ChangingProperties.vi" as the first part. The problem with changing the properties of an element inside the array is that once you change one element, you change ALL elements. This is because the array simply stores the "type" information for one element and the difference between each element therefore only can be the value.

So what if you actually use 960 indicators in the front panel? Other than taking you a month to manually create the front panel, there is actually a way to access the properties of a certain indicator - without having to create 960 Property Nodes. In the "ChangingProperties.vi" I am accessing one of two indicators using only the name of the indicator to specify which indicator to access. You will then have to do the code that decides exactly which indicator you need to change.

Okay, the above two solutions both have issues in terms of development time, readability, maintainability and scalability. I definitely see the best solution in your case to be the use of two 2D-arrays on top of each other. One array (let's call it "Array 1") will show the actual value of the channels in numbers and the other array ("Array 2") will show different colors depending on the different states that you want. I chose to use a Color Box as the element in Array 2 to give you more than the two options (True/False) you would have had if you used a Boolean indicator instead. In the attached "MultiArrayColors.vi" I compare the values of each element in Array 1 with the specified Threshold value and colors (green or red) the Array 2 according to the result. I also compare with a second condition to color some of the elements a third color (blue).

The hardest part of the third solution is to color every part of Array 1 transparent. It is done fastest by coloring the element and the empty array shell transparent before you insert the element into the array shell. After that you just put Array 1 on top of Array 2 and use the "Reorder » Move To Back" option from the toolbar to make sure that Array 2 is places behind Array 1.

Let me know what you think, thanks.


Have fun - and more of it with LabVIEW 8!

Message Edited by Philip C. on 12-07-2005 02:49 PM

- Philip Courtois, Thinkbot Solutions

Thinkbot Solutions
Download All
Message 11 of 48
(1,819 Views)

Philip,

You're a "proven active veteran" so I'm sure this will work.  Give me some time to try it.  I'm a big advocate of LV.  I tell everyone whatever they can do in CVI I can do in LV.

 

Clint

Message 12 of 48
(1,802 Views)

Philip,

Can I customize the elements in the array you sent me ?  Right now they're colored rectangles.  Can I make them round and a specified radius?  On that same note can you specify the radius size ??  I'm trying to overlay the digits into the rectangular array elements and without trial and error I don't know how big to make them so that one fits inside the other.

0 Kudos
Message 13 of 48
(1,790 Views)
Hi Clint,

Thanks for the nice words.

Your new requests will not be as easy to implement as the solution I already provided you. The "Color Box" control that I used in the array as the background, only comes in rectangle shape. You therefore can't use the "Color Box" as your round object, sorry.

If you REALLY need a round shaped color background, there's one other solution and that's to use a "Picture Ring" as the element in the 2D-array as the background. You can then insert three different images of round, colored shapes created in another application (for example Microsoft Paint). You can then choose different pictures in the "Picture Ring" by specifying the index number of the image you want to show. Since you are using images, the size of the round shape has to be specified in the application you use to create the image with. If you use my rectangle solution, you can easilly change the size of the elements by using the "Resize Objects" menu in the toolbar.

I hope you'll be able to get some good results...


- Philip Courtois, Thinkbot Solutions

Thinkbot Solutions
0 Kudos
Message 14 of 48
(1,775 Views)
Ryan,
Does this allow for full BW ( 250 KHz) when each channel on each card is read ?
0 Kudos
Message 15 of 48
(1,841 Views)
Clint,

Actually, for our E and M series devices (but not S Series), we multiplex each channel into the ADC. The 250kS/s must be shared among all channels. If you are scanning 80 channels, your maximum rate for each channel will be approximately 3.125kS/s. Please note that even if you did have a DAQ card that could sample each channel at 250kS/s, you would have an aggreate data rate of around 500MB/s (250kS*2B/S*80channels*12cards), which exceeds the theoretical PCI bus bandwith of 127MB/s. What is the greatest frequency you need on each channel? Looks like you might have to wait for PCI Express. Smiley Wink

Hope this helps,
Ryan Verret
Product Marketing Engineer
Signal Generators
National Instruments
0 Kudos
Message 16 of 48
(1,833 Views)
Ryan,
I'm putting the read each channel into a for next loop with the index associated with the proper channel and card.  I want to concatenate the index to produce the proper output format  which will correspond to the channel.  I hope this way it will access each channel on an individual card at full BW. 
 
Haven't tried it yet.
0 Kudos
Message 17 of 48
(1,832 Views)
Clint,

I'm not quite sure what you wish to accomplish here. Are you trying to sequentially read a finite amount of data off of each channel on your board? I think we may be confusing "bandwidths" here. Basically, your card has a fixed analog input bandwidth. The rate at which you can acquire a signal is determined by your sample clock. And since we have to obey Mr. Nyquist, it is up to you to make sure that there is no frequency content on your analog input signal higher than half of your sampling rate.

If your signals have information up to 125kHz, then you must sample at 250kS/s. In order to do this for sequential channels, and quickly, I would set up finite tasks for each channel that you plan to use, then "Verify" them all with the "DAQmx Control Task VI." Then, all you need to do is sequentially call the "DAQmx Read" for each of these tasks, with "number of samples" set to -1. This will automatically start the acquisition on the board on the specific channel for the task, and acquire the exact number of samples specified. I would use for loops with shift registers to accomplish all of this. And of course, in your case, repeat this 12 times.

Hope this helps,
Ryan Verret
Product Marketing Engineer
Signal Generators
National Instruments
0 Kudos
Message 18 of 48
(1,814 Views)

Ryan,

I'm working w another Engineer who called National to get a SR#.  Is there any way you can take control of that SR# so we can discuss this over the phone ??

( SR# 749607)

 

Thanks

0 Kudos
Message 19 of 48
(1,736 Views)
Clint,

I've spoken with the Engineer who has been helping your colleague. I brought him up to speed on what we have discussed and you are certainly welcome to phone him regarding this issue. Alternatively, I would be more than happy to continue helping you here for the benefit of others.

Regards,
Ryan
Ryan Verret
Product Marketing Engineer
Signal Generators
National Instruments
0 Kudos
Message 20 of 48
(1,685 Views)