RIO IsIOUnitCommEnabled not working?

Wow, that is a scary issue… do the comms. pass by any switches? if so, is any of the switches a managed one? I seen some issues with manage switches when not properly set up, in general I try to avoid them as much as possible.
Having to clear ram is perplexing.

no managed switches :confused:

Jakes, have you tested the 5 volt power? Try doing so when brain is fully loaded, I do normally keep 5.2 volts at the terminals, once I have a brain going nuts at 4.9 volts.

First thing I do from experience is check the 5V, thanks mate. Voltage and Amps checked to be normal.
I am going to this site soon and will investigate further. Too many factors at play to pinpoint anything specific at this moment. My only worry was having to clear EPIC controller memory to get it going again.

Hello, is there any conclusion to this thread?

I am using latest firmware RIO 3.3.0 and EPIC 3.3.2, the strategy works fine, but when I disconnect and reconnect the ethernet cable (POE) I cannot reestablish communication to the RIO without reinitializing strategy, using the DisableCommunicationToIoUnit(RIO); and enabling again does not seem to work once the communication physically interrupted.

In addition to that, the method IsIoUnitReady(RIO) always return a TRUE statement, which is clearly incorrect.

Reliable wiring cannot solve this problem, I think we need a software method to verify readings are updated, and take action if not.

After making a few try and error combinations, I found that the following works to identify a wrong comm status, and restart of comms to the remote device, there might be an easier and better way of doing it, but so far seems to work as I require it.

if (IsErrorOnIoUnit()) then
“Trigger some error if needed”
DisableIoUnitCausingCurrentError();
EnableIoUnitCausingCurrentError();
ClearAllErrors(); // Selected errors would be preferred, but need to clear to avoid constant
disable/enable
endif

if (IsIoUnitReady(RIO)) then
Module_Available[11] = 1;
else
Module_Available[11] = 0;
DisableCommunicationToIoUnit(RIO);
EnableCommunicationToIoUnit(RIO);
endif

Looks good.
The only thing I would mention is perhaps have a small 50ms to 100ms delay between the disable and enable commands. You want the unit to get and process each command rather than just pounding on it. There is a bit of ‘work’ each of those commands evokes (tearing down and rebuilding a TCP stack).