Thanks for the great advice everyone!
And especially Vit for letting me know I'm not alone. I can't believe I forgot to include "target was disconnected" happening immediately after a successful deployment. Infuriating!
One common theme is that LV 2021 seems more stable that previous versions - I'm on LV 2020 right now, so upgrading might move to my short list.
@rolfk wrote:
DNS has proven problematic as the DNS server can decide to assign a new IP address to hardware at any time and connecting from the LabVIEW project by DNS name is not something that seemed to be very reliable in the past.
I've worked with our IT department to configure this so that the DHCP server always gives the same IP address to my hardware's MACs. This is the best of both worlds, because they can still manage the equipment and I can use DNS, but the IP doesn't change (which could otherwise confuse software that used the old DNS/IP mapping).
My PC and cRIO are on the same 1G switch and I see almost no network traffic, so I assume the network isn't causing these issues in my case.
@Bob_Schor wrote:
I stopped using Shared Variables about a decade ago, replacing it with Network Streams (multiple, two for Host to Target and Target to Host Messages, others to transfer data from the RIO to the Host. Works quite well, haven't had the kind of problems you've described.
I tried this (technically using Actor Framework messages over Network Streams) but had issues with it. For my application, I want the PC to know the cRIO's latest state; I don't care if samples drop. Since Network Streams are lossless, I found that any client hiccup (Adobe/Windows checks for updates, etc.) could create a backlog that was hard to recover from. Over the course of a week, it would sometimes build up and the PC was showing values from 4-5 minutes ago, which is dangerous. Maybe you could share a bit more how you do this successfully?
@Bob_Schor wrote:
We have tried to make both the Host and Target code as simple and "State"-driven as possible, so our Host and Target routines appear to be fairly simple (they all fit on a standard Laptop screen).
This is interesting. Could you elaborate on what you mean by "state-driven"? I've written PC-based LabVIEW code for years, and about once a month I wonder if I'm approaching cRIO-based development all wrong as a result of that original experience.