Reducing OPC UA load with WAGO PFC100: Document Tag + derived UDTs (write‑only writes?)

Hi everyone,

I’m using a WAGO PFC100 connected to Ignition via OPC UA. Reading tags works fine, but my current design uses one UDT per device with ~10-20 OPC tags each, about 2,000 OPC tags total. This pushes the PLC CPU to ~90%, and I still need to add Modbus connections, which will increase the load further.

To optimize this, I’m moving to a pattern with a single OPC read per device using a Document Tag, while the rest of the UDT is composed of derived tags that read from that document. For writes back to the PLC, I’ve added a _Write subfolder inside the UDT that holds the individual OPC tags used for writing.

This framework was originally built for other PLC families and works well there, but the WAGO OPC UA connection is proving more sensitive in terms of load.

My questions:

Is there a way to make the OPC tags in the _Write folder effectively write‑only (i.e., not polled), to reduce CPU usage on the PLC?
If true write‑only isn’t possible, what alternative strategies would you recommend to achieve the same goal of lower PLC CPU load with this design?
Any tips or best practices would be greatly appreciated. Thanks!

Derived tags can be written to, and in combination with a dedicated Tag Group using Optimistic Writes = true and the jsonSet expression function, were originally designed to deal with structured values from OPC UA.

It's detailed a little more in other posts, but you use jsonSet to apply the value being written to a derived tag to the underlying source tag, and then the whole source (document aka structured value) ends up getting written to the server.

Consider using my Integration Toolkit's Divert Write tag actor on each derived tag to intercept the writes, and direct them to the inner OPC item. That inner item won't be a subscribed tag. The write expression in the derived tag would never be used.

(The raw write diversion may be the more appropriate for your use case.)