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