For GOD sake, this is my VI, please help me, i know TCP is better, but i just wanna see it working with UDP, so what shall i change to not see this error message anymoreIt means a piece. A bit. A portion.......of the file.
#21
Posted 22 April 2012 - 08:45 PM
#22
Posted 22 April 2012 - 11:30 PM
Short of writing it for you (and it is not my home-work), there is not a lot else I can tell you. Perhaps someone else can explain it better than I
Edited by ShaunR, 22 April 2012 - 11:32 PM.
Founder and general mischief maker on www.labview-tools.com.
SQlite aficionado and websocket zealot.
If it 'aint in LabVIEW, then you 'aint got a clue!
#23
Posted 23 April 2012 - 01:10 AM
http://forums.ni.com...ol/td-p/1958549
Now is the right time to use %^<%Y-%m-%dT%H:%M:%S%3uZ>T
#24
Posted 23 April 2012 - 05:19 AM
For GOD sake, this is my VI, please help me, i know TCP is better, but i just wanna see it working with UDP, so what shall i change to not see this error message anymore
You'll find that getting angry at people trying to help you here won't get you far, especially if it is a homework assignment and the goal is for you to figure it out on your own. I agree with Phillip, the information here + some Googling will get you where you need to go.
Lead Software Engineer
Certified LabVIEW Developer
#25
Posted 23 April 2012 - 05:33 AM
You are loading the ENTIRE FILE then trying to transmit (all 600MB presumably) in one go. To remove the error you need to send a maximum of 1500 bytes of the file A BIT AT A TIME by reading the first 1500 bytes, write that to the UDP port then reading the next 1500 bytes and write that .... and so on - a method of which I demonstrated to you in the image posted for bluetooth earlier (the code for which you can download from the Code Repository).
Short of writing it for you (and it is not my home-work), there is not a lot else I can tell you. Perhaps someone else can explain it better than I
There is nothing wrong with your explaining skills! There are however people who do not want things to be explained to them but instead things being done for them. Or English is not the native language but the posts look pretty ok to me in grammar, so why someone with such a grasp of the language never has heard about "chunks" is beyond me.
Also while reading a file in chunks and sending it over UDP will probably work in a local network, I'm pretty sure the resulting file on the receiver end will be damaged after being transmitted like that over a more complex network infrastructure. That is unless one adds also packet sequencing code to the transmission (and in doing so more or less reimplements the TCP protocol on top of UDP).
Rolf Kalbermatter
CIT Engineering Netherlands
A division of Test & Measurement Solutions
#26
Posted 23 April 2012 - 01:56 PM
i knwo what "chunks" are, but how to build them in labview!!, i don't want people to do work for me, i just need some help
There is nothing wrong with your explaining skills! There are however people who do not want things to be explained to them but instead things being done for them. Or English is not the native language but the posts look pretty ok to me in grammar, so why someone with such a grasp of the language never has heard about "chunks" is beyond me.
Also while reading a file in chunks and sending it over UDP will probably work in a local network, I'm pretty sure the resulting file on the receiver end will be damaged after being transmitted like that over a more complex network infrastructure. That is unless one adds also packet sequencing code to the transmission (and in doing so more or less reimplements the TCP protocol on top of UDP).
#28
Posted 23 April 2012 - 05:50 PM
#29
Posted 23 April 2012 - 09:08 PM
Attached Files
#30
Posted 23 April 2012 - 10:15 PM

POPULAR
wow, now it is working, but the received file seems to be corrupted due to packet duplication or miss-order, i tried to improve the performance using queues but i didn't get what i want, any suggerstions so far??
UDP is not a reliable protocol. Unless you intend to do A LOT of extra error handling, packet sequence management, lost packet retransmission and what else, you can forget to use it for transfering a file that needs to stay consistent.
Rolf Kalbermatter
CIT Engineering Netherlands
A division of Test & Measurement Solutions
#31
Posted 24 April 2012 - 01:23 AM

POPULAR
http://www.pes-psrc....%2002282012.pdf
I liked the next to the last slide best:
The woods are lovely, dark, and deep:
After several weeks of research, the conclusions are:
- Results are significant but not statistically so.
- It is clear that UDP can be made reliable.
- Packet loss was due to buffer issues and not network congestion.
- Software architecture has an impact on buffer maintenance.
- More discovery/research needs to be done regarding:
- Optimum signaling for threads receiving UDP.
- What is the interaction of buffering between VMs and the Host.
- What is the impact of different NIC driver parameters on buffering/responsiveness.
- Need for education (e.g. back to basics)
The author indicates that dropped messages are statistically insignificant. They were never able to eliminate them completely.
If you're just starting out with LabVIEW, this is going to take you some time, and I would wager that you will never achieve zero data loss using UDP.
Edited by Phillip Brooks, 24 April 2012 - 01:32 AM.
Now is the right time to use %^<%Y-%m-%dT%H:%M:%S%3uZ>T
#32
Posted 24 April 2012 - 06:47 AM

POPULAR
wow, now it is working, but the received file seems to be corrupted due to packet duplication or miss-order, i tried to improve the performance using queues but i didn't get what i want, any suggerstions so far??
Really?
.........
UDP does not guarantee ordering, non-duplication or even delivery of "chunks", so you would need to make sure each write contains enough information to completely identify which part of which file it is. That way you could reassemble them on the other side. Even then you may not get them all, so probably want a way to ask for some part of the file to be resent.
These are things that TCP would take care of for you. Do you really need to use UDP?
Just read 65k bytes (or 1500 bytes is better for the reasons Rolf outlined) from the file at a time and write it using the UDP write. However. As GregR stated. It is not guaranteed to be recieved in the correct order, or indeed a chunk to be received at all! So that's not a lot of good for files, but usually acceptable for audio or video where a lost frame or two doesn't matter too much.
The easy solution, as others are saying, is to use TCPIP where all the ordering and receiving reassembly is handled for you (as well as other things UDP doesn't do out-of-the-box such as congestion control, re-transmission of lost packets etc). If you really must use UDP then you will have to code all that yourself (unless missing or incorrectly ordered file chunks is acceptable-for TDMS it wouldn't be). There are a few examples of reliable UDP (RDP). Noteably UDT and NORM. I am not aware of anyone doing this in Labview however, since it is just easier to use TCPIP.
And going beyond 1500 bytes MTU is only an option if you are on a controlled network where you do know about all routers involved between the two parties. Once you go outside of that, such as an internet connection, the maximum MTU is entirely out of your hands and going beyond the default of 1500 bytes is really playing chances that the communication will actually work, unless you do a lot extra work in reassembling the incoming packages into the right order on the receiving end. And that is something that is even on embedded devices usually handled much more efficiently by the TCP protocol level, so why go to the hassle of UDP in that case?
Founder and general mischief maker on www.labview-tools.com.
SQlite aficionado and websocket zealot.
If it 'aint in LabVIEW, then you 'aint got a clue!
#33
Posted 24 April 2012 - 08:18 AM
Decided to Google IEC61850 and UDP. I found this interesting PowerPoint presentation in PDF form.
http://www.pes-psrc....%2002282012.pdf
To me it looks like IEC61850 is not about transfering large files consistently over the network. To do that over UDP is really not a smart idea as you have to implement on top of UDP something similar what TCP does already for you.
An interesting side node to this: A while back I was looking at the network protocol used by Second Life and other compatible virtual world environments. They used to have the entire communication over UDP with their own sequence handling, acknowledgement and retransmission requests. The reason to go for UDP was supposedly the low overhead that was required to make movement and interaction in a 3D virtual world possible at all. However a few years ago they did introduce a new mechanisme for non-realtime critical messages and are porting slowly more and more of the messages over to this new mechanisme. It is basically a HTTP based protocol where the packet load is usually a data structure in their own LLSD format, which is in many ways similar to JSON.
And yes I have implemented some basic messages in LabVIEW that got me as far as logging into a virtual world server.
Rolf Kalbermatter
CIT Engineering Netherlands
A division of Test & Measurement Solutions
#34
Posted 24 April 2012 - 09:44 AM
I googled it too and that was my conclusion. There were clearly tasks that cried out for UDP, broadcasting time-critical small pieces of information, but there was nothing suggesting one had to use UDP for sending large files.To me it looks like IEC61850 is not about transfering large files consistently over the network.
#35
Posted 24 April 2012 - 11:11 AM
Finally it seems like someone understands what is our focus from insisting on UDP, this is really encouraging; in fact our approach starts from the GOOSE model, we want to make UDP as reliable as possible by adding a small algorythm, just a light one to not decrease the speed of transfer. we have found that labview is the best tool to do so. IEC61850 is new standard that still needs a lot of work to be fully accepted in industry, we know it may look meaningless to insist on UDP, but at least, let's tryDecided to Google IEC61850 and UDP. I found this interesting PowerPoint presentation in PDF form.
http://www.pes-psrc....%2002282012.pdf
I liked the next to the last slide best:
The author indicates that dropped messages are statistically insignificant. They were never able to eliminate them completely.
If you're just starting out with LabVIEW, this is going to take you some time, and I would wager that you will never achieve zero data loss using UDP.
And this is the point my friend, we want to build anew UDP based protocol, you can say like UDT, to be used in power substations just like the GOOSE, i already said that i have a good theoritical knowledge with both TCP and UDP and the differences between them, however, i just don't know how to implement them using labview at the time my supervisor insists on using this programming language
To me it looks like IEC61850 is not about transfering large files consistently over the network. To do that over UDP is really not a smart idea as you have to implement on top of UDP something similar what TCP does already for you.
An interesting side node to this: A while back I was looking at the network protocol used by Second Life and other compatible virtual world environments. They used to have the entire communication over UDP with their own sequence handling, acknowledgement and retransmission requests. The reason to go for UDP was supposedly the low overhead that was required to make movement and interaction in a 3D virtual world possible at all. However a few years ago they did introduce a new mechanisme for non-realtime critical messages and are porting slowly more and more of the messages over to this new mechanisme. It is basically a HTTP based protocol where the packet load is usually a data structure in their own LLSD format, which is in many ways similar to JSON.
And yes I have implemented some basic messages in LabVIEW that got me as far as logging into a virtual world server.
because you have just read what other people suggested for this new technology, IEC61850 is still under development, and the trend now is toward UDP based protocols, just look for more details about IEC and you will understand why we are insisting on UDP instead of TCPI googled it too and that was my conclusion. There were clearly tasks that cried out for UDP, broadcasting time-critical small pieces of information, but there was nothing suggesting one had to use UDP for sending large files.
#36
Posted 24 April 2012 - 11:16 AM
Could you explain why in a short paragraph, please?just look for more details about IEC and you will understand why we are insisting on UDP instead of TCP
#37
Posted 24 April 2012 - 11:27 AM
And this is the point my friend, we want to build anew UDP based protocol, you can say like UDT, to be used in power substations just like the GOOSE, i already said that i have a good theoritical knowledge with both TCP and UDP and the differences between them, however, i just don't know how to implement them using labview at the time my supervisor insists on using this programming language
You haven't shown much so far that would have made me believe that you have much of a technical understanding of those protocols.
And wanting to do something is a nice thing, but if it is a useful exercise an entirely different one. Considering some notices in the paper about how the difference in calling socket functions can have a significant influence in lost buffers, I think LabVIEW might be not the ideal environment to tackle this research. You have no control whatsoever, in how LabVIEW handles the socket calls. In addition it adds it's own network data buffering that you can only influence in limited ways from the LabVIEW nodes. And no I'm not talking about controlling socket attributes by calling socket API functions directly, but how LabVIEW calls recvfrom() and friends itself.
Rolf Kalbermatter
CIT Engineering Netherlands
A division of Test & Measurement Solutions
#38
Posted 24 April 2012 - 12:50 PM
http://forums.ni.com...1868231#M633636
Maybe you could contact your NI rep and get more info or help them test their driver..
Now is the right time to use %^<%Y-%m-%dT%H:%M:%S%3uZ>T
#40
Posted 25 April 2012 - 05:08 AM
Also tagged with one or more of these keywords: file transfer, udp
Software & Hardware Discussions →
LabVIEW (By Category) →
Application Builder, Installers and code distribution →
NI Service Locator not installedStarted by hilbert00 , 14 Feb 2013 |
|
|
||
Software & Hardware Discussions →
LabVIEW General →
UDP Read of Variable Size PacketsStarted by JimboH , 04 May 2012 |
|
|












