07-25-2017 10:57 AM
We have a project consists at least 5 cRIO Linux RT targets, located remotely from each other. Can anyone advise us for the best Labview network technique to communicate between these RT targets over ethernet please?
We understand the network-published shared variable method is easiest to implement, but it requires a Windows machine to host SVE, therefore we cannot use it.
Could we use Network Stream or TCP? Or CCC and any other methods? Any practical advice by experience would be appreciated.
Many thanks for your help.
Solved! Go to Solution.
07-25-2017 11:23 AM
Have you looked at the Distributed Control and Automation Framework (DCAF) ? It's supposed to supersede CCC , CVT, and the other old machine control architecture stuff.
Actually you do not need a windows machine to host the SVE, the variables can be hosted by the cRIO. It is kind of confusing how some kb articles talk about using a windows machine to host the SVE-- you can host them either on Windows machine or the cRIO. I believe the windows hosting was for performance reasons in the past but the newer cRIOs have enough performance to host shared variables.
07-25-2017 01:05 PM
I am a fan of the STM library. I use TCP/IP with the STM for communicating between my systems.
You could use UDP for broadcast values.
Do note that NPSVs are for Tag data (single point values, only carrying the latest value). They tend to be really slow as well.
07-25-2017 04:55 PM
Thank you very much for your comments.
Are you sure SVE can run on Linux cRIO? It didn't work in our system. As to DCAF, have you used it and how easy is it to pick up? Thanks.
07-25-2017 05:34 PM
well I'm sure the SVE can run on a linux cRIO, I've done it many times. I am just now starting to use DCAF but it looks pretty well thought out and engineered. As for how easy to pick up it is, it seems that most of it can be set up through the configuration utilities it comes with which is easy, below the hood it looks complicated but you can ignore that for the most part.
07-26-2017 03:31 AM
Thanks very much for your comments. It seems TCP/IP and STM are hard to code. I am not an experienced Labview programer. What do you think Network Stream for our application comparing with TCP/IP STM? UDP isn't reliable enough for us by the way. Many thanks for your help.
07-26-2017 04:05 AM
STM is quite simple after you spend 5 minutes looking at the examples.
Network Streams are not much different as far as complexity. But they do handle network blips (connections lost for a short time) for you.
07-26-2017 05:08 AM
Hi, Thanks for the suggestions. STM looks good, but how does STM handle losing connections?
07-26-2017 05:33 AM
@Noriker wrote:
Hi, Thanks for the suggestions. STM looks good, but how does STM handle losing connections?
You will have to handle the reconnections by detecting an error, closing the connection, and then go back to connecting. But if you have a loop just for the connection and communication, it just turns into a simple state machine.
Or you can figure out the Network Streams and it handles most of that for you. If memory serves the network stream will handle quick interrupts in connection. But if a cRIO goes completely down, you will get errors.
08-02-2017 03:01 AM
Thank you for your advice. We will implement it.