Extensible OPC UA Client
Jan Schlachter, Alexander Franjic, Christoph Wolf, Marius Reddig, Christopher Besch, Marwin Glaser • 4th Sep 2024

Extensible OPC UA Client

Working Title: Magnesia

  • Framework to exchange data between industrial machines
  • Implemented in open62541
Example Use Case
  • Monitor Machines with a Client
    • e.g. Temperatures, Velocities, Positions, ...

Requirements

  • Graphical OPC UA Client
  • Extensible / Open Source
  • Cross-Platform C++

Live Demo

Linux

macOS

Windows

GUI Overview

  • Activities as Tabs
    • AddActivity
    • Settings
    • DataViewer
    • About
  • DataViewer uses Panels

User Docs

Extensibility

  • Easy to develop/add new
    • Activities
    • Panels
    • Settings
  • State of the art CMake build system

CI

  • Implemented in Shell Scripts
    • Runs locally
    • Independent of GitLab

Code Docs

Process / Tooling

  • Full meetings weekly
    • Where are we?
    • What needs to happen?
  • Actual work alone / in pairs
So much Git!

Pflichtenheft Phase

  • 24 pages
  • LaTeX
  • Graphics with draw.io
  • Git
    • 59 Merge-Requests (MRs)
  • In German

Design Phase

  • 33 pages
  • LaTeX
  • Graphics in TikZ, draw.io, Inkscape, qt-creator
  • Git
    • 51 MRs
    • Human approval process
  • In English

Implementation / QA Phase

  • 11k lines of code (+5k blank and comments)
  • Neovim, VSCodium, CLion
  • Git
    • 101 MRs
    • Human approval process
    • CI
  • In English

Presentation

  • 22 slides
  • Reveal.js
  • Git (directly on main)
  • In English

Challenges

  • Different Levels of Skill
    • C++ new for 4/6
    • Qt new for 5/6
    • OPC UA new for 6/6
  • Solution: Review Process

Did we make it?

  • 33/34 must-have criteria from Pflichtenheft
    • OPC UA doesn't allow subscribing Node references
  • 3/13 nice-to-have criteria
  • Implemented according to Design:
    • Storage/Settings
    • Activity System
    • Layout System
    • ...
  • Redesigned in implementation phase:
    • OPC UA abstraction

Lessons Learned

  • Git, C++, Qt, OPC UA
  • Communication
  • Splitting work with different skill levels
  • Lift as You Climb

Magnesia PSE

Magnesia PSE