Quick OPC UA Server Generation Framework
quasar generates complete OPC UA servers from a single Design XML file. From that design it produces C++ address space classes, device logic scaffolding, configuration parsing, and a CMake build system -- so you focus on your device logic, not boilerplate.
Developed at CERN, quasar is used across multiple laboratories and experiments to build reliable control and monitoring systems.
git clone --recursive https://github.com/quasar-team/quasarThe --recursive flag is required -- quasar uses LogIt as a git submodule.
./quasar.py set_build_config <path/to/config.cmake>
./quasar.py build./build/bin/OpcUaServer --config_file bin/config.xmlDesign/Design.xml
|
v
DesignInspector (xpath) + Oracle (type mappings)
|
v
Jinja2 templates (23 transforms)
|
v
Generated C++ source (AddressSpace, Device bases, Configuration, CMake)
Design.xml is the single source of truth. Generated code goes into AddressSpace/, Device/generated/, and Configuration/. User-owned device logic lives in D<Class> files which are never overwritten.
- Design-driven code generation -- one XML file drives the entire server
- Two OPC UA backends -- open-source open62541 or commercial Unified Automation SDK
- Device logic separation -- generated base classes with safe defaults; user code is never overwritten
- Built-in validation -- XSD schema checks plus semantic rules on your design
- Module system -- enable or disable optional components (calculated variables, archiving, etc.)
- Cross-platform -- Linux (x86-64, ARM64), Windows, and Yocto embedded builds
Prerequisites
- Python 3 with lxml, Jinja2, colorama
- CMake 3.10+
- C++17 compiler
- Boost
- xsdcxx (CodeSynthesis XSD)
Full documentation is available at quasar.docs.cern.ch, covering the design manual, command reference, build system, and video tutorials.
This project is licensed under the GNU Lesser General Public License v3.0. See LICENSE for details.
Primary contact: quasar-developers@cern.ch
