# Ignition OPC UA Client Failover Problem

**URL:** <https://forum.inductiveautomation.com/t/ignition-opc-ua-client-failover-problem/108384>\
**Category:** Ignition\
**Tags:** redundancy, opcua\
**Created:** [July 11, 2025, 6:11pm UTC](https://forum.inductiveautomation.com/t/ignition-opc-ua-client-failover-problem/108384 "2025-07-11T18:11:43Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![vitor\_andrade](https://avatars.discourse-cdn.com/v4/letter/v/dbc845/32.png) [@vitor\_andrade](https://forum.inductiveautomation.com/u/vitor_andrade)\
**Post date:** [July 11, 2025, 6:11pm UTC](https://forum.inductiveautomation.com/t/ignition-opc-ua-client-failover-problem/108384/1 "2025-07-11T18:11:43Z")

</div>

We’re using Ignition SCADA connected via OPC UA to a **redundant Schneider M580 PLC**. Each rack has its own CPU and **BMENUA0100 (NUA)** OPC UA Server module, with fixed IPs. The redundancy follows the **non-transparent server model in warm failover mode**.

The issue is that **Ignition’s OPC UA client only switches servers when communication is lost**. It does **not detect which CPU is Primary**.

As a result, Ignition may connect to the OPC Server on the **Standby CPU** , which doesn’t execute logic. This leads to a situation where **commands are sent but not executed** , even though no error appears in Ignition.

Is there any way to configure Ignition to always connect to the OPC Server on the **active Primary CPU**?

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/d/a/da059f91c5d70629809b97a407762cc5cbc4ee73.png)

---

<div class="post-metadata">

**Author:** ![Cody\_Morgan](https://avatars.discourse-cdn.com/v4/letter/c/db5fbb/32.png) [@Cody\_Morgan](https://forum.inductiveautomation.com/u/Cody_Morgan)\
**Post date:** [July 11, 2025, 8:10pm UTC](https://forum.inductiveautomation.com/t/ignition-opc-ua-client-failover-problem/108384/2 "2025-07-11T20:10:16Z")

</div>

I'm sure Kevin will come along eventually, but I do not think Ignition's OPC UA client supports the OPC UA redundancy specification. At least not the non-transparent modes. (I suppose every client supports transparent?)

I'm not sure if there are more creative way to get this to work or not (e.g. - some script that reads the service level and then triggers a change to the connection config).

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [July 11, 2025, 8:29pm UTC](https://forum.inductiveautomation.com/t/ignition-opc-ua-client-failover-problem/108384/3 "2025-07-11T20:29:28Z")

</div>

Yeah, there's no _good_ way to do this.

I think some people have hacked it up by monitoring both ServiceLevel variables themselves and then using `system.opc.setServerEnabled` to toggle the connection disabled/enabled, which forces it to attempt to reconnect, starting with the master.

Proper support for OPC UA non-transparent redundancy is on our shorter-term feature list but nothing has been decided in terms of timeline.

---

<div class="post-metadata">

**Author:** ![vitor\_andrade](https://avatars.discourse-cdn.com/v4/letter/v/dbc845/32.png) [@vitor\_andrade](https://forum.inductiveautomation.com/u/vitor_andrade)\
**Post date:** [July 12, 2025, 4:52pm UTC](https://forum.inductiveautomation.com/t/ignition-opc-ua-client-failover-problem/108384/4 "2025-07-12T16:52:17Z")

</div>

Thank you @Kevin.Herron and @Cody_Morgan for your answers.

I’ve configured two separate connections—one for each CPU.  
Since most of my tags are inside UDTs, I created a reference tag within each UDT that points to a tag indicating whether the CPU is running as **Primary** or **Standby**.

I added a script on the reference tag that sets a UDT parameter with the name of the desired connection based on the CPU state. Then, I used that parameter in a binding for the OPC source.

I created this topic to confirm whether there was a better or more standard way to handle this.

Thanks again!

---

<div class="post-metadata">

**Author:** ![mazeyrat](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mazeyrat/32/10955_2.png) [@mazeyrat](https://forum.inductiveautomation.com/u/mazeyrat)\
**Post date:** [July 13, 2025, 4:58am UTC](https://forum.inductiveautomation.com/t/ignition-opc-ua-client-failover-problem/108384/5 "2025-07-13T04:58:52Z")

</div>

Another solution is to create 2 opc tags and a reference tag for each data you read in the plc. You monitor the primary and standby cpu and you write a parameter in each udt that drive the reference tag, for example the parameter is the folder in the path of the opc tag.

This solution is quite robust with a quick failover and all the data switch together.  
Creatings tag take more times but when you have have some scripts to generate them that is not a problem.

Another post:

> [@Ignition OPC UA Server Redundancy (Modbus TCP)](https://forum.inductiveautomation.com/t/ignition-opc-ua-server-redundancy-modbus-tcp/67123):
>
> Like the attached file, I want to redundancy If possible, please tell me how to do it.
