PLC A timeout affecting PLC B scripts and Transaction Groups

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.

Am I missing a config setting somewhere?

If you're on an earlier version, consider upgrading to 8.1.3 (or later) which include this fix:

Platform - Tags: Data Model: Use separate batches for writes to different OPC servers to prevent a slow-responding server from blocking an unrelated write to a fast-responding server.
(From Ignition Release Notes for Version 8.1.3 | Inductive Automation)

1 Like

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.

Make separate tag groups for each PLC.

Image of Transactions
image
Is this what you mean?

Image of Tags
image

If I can’t get this to work I feel like I need to go down another route.

What version of Ignition are you using?

Yesterday I went through the process of updating and updating modules. Thanks.

Something must have gone wrong that process, because the current version of Ignition is 8.1.20.

I’d try upgrading, there was a change in ~8.1.15 related to delays when a device wasn’t connected.

If that doesn’t work, or you can’t upgrade, consider using direct OPC items in the transaction groups, instead of OPC tags.

Thank you very much. I was able to update to 8.1.20. Everything works great. For my own info how do you create an OPC item instead of the OPC tag? Thanks again.

https://docs.inductiveautomation.com/display/DOC81/Item+Types#ItemTypes-CreatingaNewItem

I assumed from your screenshots you are using tag reference items. if that’s not the case then you can ignore this suggestion.