CoDeSys OPC-UA --> Ignition

I am looking to interface Ignition in an HMI to a CODESYS PLC via OPC-UA.

Just want to seamlessly pull in my Tags/Variables and display in a "Unified Namespace" type of topology.

CSYS has two(2) license/library solutions- Client/Server and PubSub.

?- Anyone used these libraries. If so, which ones or both required.


I don't have any experience with these libraries, but I can tell you that Ignition only supports OPC UA client/server communication. In this case Codesys would be an OPC UA server, and you'd make a client connection from Ignition to the server.

OPC UA PubSub technology is not supported.

"Unified Namespace" type stuff might then be achieved using the MQTT modules to publish Ignition tags to a broker or something like that. Maybe call and talk with one of our sales engineers about that kind of thing...

Really appreciate so quick of a response! I will do some more "due diligence" on my end. Regards.

I use codesys and OPC UA to send data to ignition.

I have codesys installed on a pi 4 compute module, sending data to edge on the same device through OPC.

The license you need is CODESYS OPC UA Server SL

We needed to read a bunch of Schneider (Elau) PLCs. We purchased the CoDeSys server but found it very difficult to work with.

We subsequently purchased the Kepware CoDeSys server with one-time perpetual licence. It was easy to set up and all the PLC tags are browsable.

Thx much Craig!

So tag import was pretty seamless versus manual adds into IA? I know Sparkplug is pretty automatic.

I just need to dig into IA tutorials, etc. for sure. Anyway, my initial question answered!


Im hoping with the latest license its better, but gonna trial it and report back. Thank you!

Think i got it...CSYS > Symbol Configs....

Correct, you need to tick every variable you want to be visible on OPC.

I also had to install a certificate to be able to get ignition to connect to the code sys OPC. Was just a case of right clicking and selecting add new certificate in the codesys software. I then came up against some issues getting security settings to work so Ignition could connect.

If you get into any issues, Id be happy to post some screen shots later on of my settings.

The other big issue I have with doing a Server vs PubSub is the overhead on the comm port so may have to go with a Sparkplug (MQTT) solution. Just looks to be overkill for our application. Thank you.

With something like the below link. You can call the values needed on demand, rather than creating OPC tags and having them poll. That will save overhead depending on how often you need the value.

OPC tags don't poll (unless you tell them to). They susbscribe, and the OPC server then sends only the changes. Polling is terribly inefficient, and is typically used only for certain special cases:

  • Collecting bulk data that only needs to be read when some other trigger happens.

  • Evading subscription count limits in certain commercial OPC servers.

  • Getting data from OPC servers with broken subscription mechanisms.