06-13-2013 03:18 AM
I am not sure if it has the tcp package lost. The incoming data rate is over 100M.
Is there a way to check if there is tcp lost, since some waveform is joint by 2 wave together.
Any suggestion
06-13-2013 03:35 AM - edited 06-13-2013 03:39 AM
What are the units of 100M (MBytes/sec, Mbits/day, A million waveforms/month?). A data "rate" needs a time unit!
Or are you simply quoting the plain network speed specification?
Since you are erasing all errors, you might not know if an error occurred?
Can you show us some actual code instead (attach a VI instead of a picture).
Does the receiving end know exactly how much data to expect?
Is the sending partner also a LabVIEW program or something else?
How large are the transmission?
What is the definition of a "package"? (TCP "packets" are defined on a much lower level, you have no control over it)
Is the transmission in short bursts or sutained over long periods?
06-13-2013 04:32 AM
It is around 200Mbit/second and higher. It will keeping sending. The other side is fpga.
Need to find out where the package is lost, in fpga, tcp or LV.
06-13-2013 04:59 AM - edited 06-13-2013 05:03 AM
TCP Read with Immediate mode will not read any packages but will return as soon as there is any data present (even a single byte) or the timeout expired. In your case that means your code ends up returning always immediately with a fraction of the 100000 bytes you asked for, resulting in the Read function retrieving MANY small chunks of data from the TCP data buffer. That is certainly not the way to maintain a fast data transfer of around 25MB/s, but even when waiting for the full 100000 bytes to arrive, which would be at most after 4ms, you will likely tax the CPU immensely. Also what FPGA hardware are you using? Unless you are using one of the 908x chassis I don't think there is any cRIO hardware with a network interface working at higher speeds than 100Mbit/s and that is raw data, not netto user data.
06-13-2013 10:07 PM
Thanks a lot, I am not sure how big is the tcp stack or buffer for windows, or can I set it bigger.
I will try to change my setting.
06-13-2013 10:20 PM
If I set to every read interval of 1ms, then every read should read back max 1Gbit/1000/8=125000.
06-13-2013 11:43 PM
Did you change the mode yet?
06-14-2013 12:32 AM
So you have a cRIO 908x module???
And 1GBit is the maximum raw network troughput. In practise TCP has a certain overhead for the IP and TCP frames. Also the collision detection retry nature of Ethernet will NEVER allow to reach the full raw throughput of the network but slow down the actual throughput considerebly if your network reaches a certain saturation. Typically any attempt above 70 to 80 % of the maximum throughput will in fact slow down your network transfer to less than that due to many collision/retry attempts. And this throughput is shared by any party on the network, so if you don't happen to use a single cable between your computer and your FPGA target, your data will have to compete with everyone else on that network.
All in all, you have provided to little information so far and are likely trying to do something that is physically almost impossible with your hardware.
06-14-2013 09:18 AM
The fpga is 3rd party. It may also has a fibre output later.