A couple months ago, I worked with Jacob on a machine that was behaving very strangely. It had 4-5 Yaskawa drives and 3 or so Beckhoff I/O cards. If everything was connected to the EtherCAT network, the network would fail to start. If I removed any node from the network, it would start and function correctly. Jacob did a cursory inspection and noted that we didn’t have anything obviously misconfigured. One of the I/O cards was unnecessary, and we needed to ship the machine, so I just removed the card and hoped it was a fluke.
I’ve got a different machine exhibiting (perhaps) analogous behavior. It’s got 5 identical axes (EverCNC Titanio) and some Beckhoff I/O cards (DI8, DI8, DO8). The network starts, but the inputs are not getting to my application. They look good in RapidSetup, but my application is basically getting stale values for them all. (We’re using recorders to get inputs so that lots of different threads/code points can get the “current” state of the input without calling into the RMP library.)
If I remove any one of the drives from the network, this problem doesn’t happen, and I get all the inputs correctly.
The addresses I’m giving the recorder APIs are coming from
NetworkNode->DigitalInAddressGet(...). I haven’t made any changes to this code in over a year, and it seems to have worked fine on dozens of machines (with varying configurations) that we’ve set up in the past and all our current test machines.
Do you have any suggestions for ways to diagnose this problem?