04-15-2011 01:44 PM
We are in the design phase of setting up a CRIO 9024 Embedded Controller to send data captured to a PXIe-8105 Controller over ethernet. The data will be be 2D arrays of double precision. This data will need to be sent to the pxi at the end of each test step. Each step will have different number of channels and sample rates.
For example, Test Step 1 will have 5 channels of Analog inputs that will be sampled at 100,000 KHz for 1 second. This data will be coming from the CRIO FPGA. The data will get post processed by the CRIO 9024 and analyzed for pass or fail metrics. Then, the CRIO controller will send the 2D Array of Data (500,000 data points 5 X 100,000) and the results of all the metrics (a 1D array) to the PXI.
The connection to the PXI will be using Ethernet.
Keep in mind that the PXI will also have to send the CRIO some values to tell the CRIO when to start the test and when the test sequence is complete.
I was thinking TCP/IP would work best because of the 2 way communication needed. But then I was looking at Network Streaming or even using Shared Variables.
If anyone has any ideas or suggestions please please post them.
Solved! Go to Solution.
04-15-2011 05:07 PM
Hi Spark,
I would probably stick with TCP/IP. It is a pretty large data set for a shared variable and you still need something else to signify when that has been updated. Quite commonly I would send something like:
<test1>data</test1> then
<test2>data</test2>
That way on the PXI you can have a state machine that recieves the string and pick out what the data is associated with e,g, test1 or test2. Then that can select the correct state to deal with that particular set of data. I have used this particular models several times.
Cheers,
04-15-2011 08:32 PM
Thanks James, I have some more questions moving further on the Network Design.
1. For this configuration should we us Normal TCP functions in the LV2010 library or use Simple Messaging (STM) library?
2. Calculating throughput and the time it may take to transfer the data, should I consider calculating the double data type in the 2D Array? OR Calculate using the String data type? How can this be calculated?
Thanks again!
04-16-2011 03:07 AM
Hi,
You could use either. Whichever you are more comfortable with really. The STM method will have slightly less overhead over my XML style of tagging the data but it will be very little given the data size. Probably go with STM as it just has most of the work done for you.
In terms of data size the way you should normally transfer data like this is to flatten to string. If you convert to a string of human readable numbers you will either lose precision, increase size or both. Given that, the string after being flattened will be the same size as the original array anyway so quick calculation based on your previous post 500,000 doubles (8 bytes) is 4 miB (3.8MB)
Cheers,