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++
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
- 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:
Lessons Learned
- Git, C++, Qt, OPC UA
- Communication
- Splitting work with different skill levels
- Lift as You Climb