I am having an issue where PLC A going offline is causing my writes to PLC B to wait until the timeout period has elapsed.
I created a project that communicates with two PLCs. The project primarily consists of some timed gateway scripts that write data to tags, as well as transaction groups logging data to a database based on a PLC trigger.
I noticed that if PLC A is offline, PLC B’s scripts do not execute and neither does the transaction group until the operation times out. The timeout is defined by the Request Timeout in the OPC-UA Client Connection Settings. The scripts are Timed Gateway scripts which use system.tag.write(). So, when the write fails on timed script for A, the writes for script B do not occur. The writes are in two totally separate scripts and threads.
This behavior doesn’t really make sense to me. I do not see why a tag write script to PLC A failing (in a dedicated thread) should be affecting a write to PLC B (in another separate dedicated thread) as well as my transaction groups not writing back the Success confirmation signal to PLC B.
The fix has been to check for tag quality before writing to avoid sitting in purgatory as we wait for the timeout to expire, but this seems like a band-aid.
I am having the same issue even after updating. Is there a way to change the timeout?
On the OPC Clients I am able to change the ‘Request Timeout’ to 5000 and that allows all of the Transactions to not be delayed. My Allen Bradley PLC are on OPC UA using the Logix Driver. If I unplug 1 of 8 PLC the ‘Last Duration’ goes to 30 seconds holding up communication to the other 7.