Blog Home

Machine-to-machine communication is easier than ever: Opta now supports OPC UA

Arduino TeamNovember 5th, 2024

OPC Unified Architecture – OPC UA in short – is a cross-platform, open-source machine-to-machine communication protocol for industrial automation. It was developed by the Open Platform Communications (OPC) Foundation and is defined in detail in the IEC 62541 standard.

With the release of the Arduino_OPC_UA library we enable users to convert any product from our Arduino Opta range into an OPC UA-enabled device

Step-by-step guide to setting up OPC UA on Arduino Opta

It’s as simple as uploading a single sketch onto your Opta and connecting it to an Ethernet network. Once uploaded, the OPC UA firmware exposes the Arduino Opta’s analog and digital inputs, the user button and LED (only Arduino Opta WiFi), as well as its relay outputs as properties that can be read from or written to using OPC UA. OPC UA communication is performed using OPC UA binary encoding via TCP sockets.

Arduino_OPC_UA is a port of the Fraunhofer open62541 library implementing IEC 62541 in highly portable C99 for both Windows and Linux targets. One serious challenge during the porting of open62541 was to decide on sensible tradeoffs concerning RAM consumption, as using OPC UAs full namespace zero (NS0) requires up to 8 MB of RAM while the STM32H747 powering the Arduino Opta has a total of 1 MB of SRAM to offer – some of which already allocated by the the Arduino framework for the Arduino Opta.

Expand functionality with Arduino Opta Modules and OPC UA integration

Additionally, Arduino_OPC_UA supports the automatic discovery, configuration and exposure as OPC UA objects of the recently released Arduino Opta expansion modules. Currently three different expansion modules exist: Arduino Opta Analog Expansion (A0602), Arduino Opta Digital Expansion with electro-mechanical relay outputs (D1608E), and with solid-state relay outputs (DS1608S). During system start-up, the Arduino Opta’s expansion bus is queried for connected expansion modules and automatically configures them and brings them online for interfacing via OPC UA.

You can extend the default OPC UA server to add additional OPC UA properties such as data collected from a sensor device connected to the Arduino Opta. As a demonstration, we’ve created an example showing how to collect temperature and humidity data from a Modbus RTU device (connected to the Opta’s RS485 port) and subsequently expose this data via OPC UA properties.

How will you use the new Arduino_OPC_UA library? Let us know in the comments below or share your newest projects on Project Hub

Boards:Pro