Anwendungssoftware- und Framework-Entwicklung für Open-Source-Datenerfassungs- und Messplattform
Projekt in Kürze: Wir entwickelten Open-Source-Software basierend auf dem OPC UA-Protokoll für die Datenerfassungs- und Messplattform, mit der unser Kunde sein eigenes Ökosystem von Steuergeräten verschiedener Hersteller aufbauen und eine führende Position auf dem Markt einnehmen konnte.
Kunde & Herausforderung
Ein Hersteller von Test- und Messgeräten wandte sich an uns, um ein Framework und eine Anwendungssoftware für eine offene, anbieterunabhängige Datenerfassungs-Plattform zu entwickeln.
Unser Kunde wollte sich von der Vendor-Lock-In-Strategie lösen, bei der Hardware und Software auf denselben Anbieter beschränkt sind. Um dieses Problem zu lösen, gingen sie eine Partnerschaft mit mehreren Unternehmen ein, um Open-Source-Software für Test- und Messgeräte basierend auf dem OPC UA-Protokoll zu erstellen.
Lösung
Das Projekt umfasste zwei Ingenieurteams, die unterschiedliche Aufgaben übernahmen: die Entwicklung von Anwendungssoftware für die Geräte des Kunden und die SDK-Generierung für die Plattform. Beide Teams arbeiteten in der Infrastruktur des Kunden.
1. Entwicklung von Anwendungssoftware
Wir nutzten die Open-Source-Bibliothek des Kunden zur Entwicklung von Anwendungssoftware mit den folgenden Vorteilen:
- Eine modulare Architektur zur Verwendung derselben Module auf verschiedenen Geräten.
- Plattformübergreifende Kompatibilität, bei der der Code des Benutzers unabhängig vom Betriebssystem und den Treibern ist.
Während des Projekts haben wir folgende Themen behandelt:
- Wir untersuchten die potenziellen Fähigkeiten der Bibliothek und ihre Kompatibilitätsprobleme auf verschiedenen Plattformen. Dies war besonders wichtig, da eine der Hauptaufgaben der Bibliothek darin besteht, den Benutzer-Code vom Kern des Betriebssystems oder den Gerätetreibern zu trennen.
- Wir testeten die Software, um sicherzustellen, dass sie korrekt mit anderen Komponenten funktioniert. Wir haben Mängel schnell behoben und entwickelten aktualisierte Versionen der Software.
- Wir entwickelten Best Practices und Ansätze für die Integration der Bibliothek in den Code: Wir identifizierten typische Probleme, auf die Benutzer stoßen könnten, und entwickelten Szenarien für die effektive Nutzung der Bibliothek.
Die offene Plattform vereinfacht die Arbeit des Ingenieurs erheblich: Er muss keinen Code mehr schreiben, um die Kommunikation zwischen dem Programm und dem Betriebssystem zu ermöglichen, z.B. über das OPC UA-Protokoll. So funktioniert es ohne die Nutzung einer offenen Plattform:
Der Ingenieur schreibt eigenständig Geschäftslogik, Programme, die mit Treibern interagieren, Programme, die mit dem Betriebssystem interagieren, und Programme, die mit dem Netzwerk interagieren
In der neuen Lösung verwaltet das Framework die Interaktion zwischen der Software und dem Betriebssystem automatisch, sodass sich Ingenieure auf die Geschäftslogik und die Klassen konzentrieren können, die die Basisschicht verwalten. Der Module-Manager findet, verbindet und verwaltet automatisch die kompilierten Module, was den Entwicklungsprozess vereinfacht. Die untenstehenden Diagramme zeigen, wie es funktioniert:
Blockdiagramm des Workflows des Open-Platform-Frameworks
Um die Aufgaben dieser Phase zu lösen, verwendeten wir den folgenden Technologie-Stack:
- Programmiersprache: C++17;
- Modulare Testbibliothek: Google Testing Framework (GTest);
- Build-System: CMake;
- Versionskontrollsystem: Git.
2. Framework-Entwicklung
Hier sind die Aufgaben, die unsere Softwareingenieure bei der Entwicklung des Frameworks auf Basis der Open-Source-Bibliothek des Kunden gelöst haben:
- Automatischer Paketaufbau für alle aktuellen Python-Versionen über alle Plattformen außer MacOS hinzugefügt;
- Verbesserung der Benutzerdokumentation mit Beispielen zur Nutzung des SDK;
- Verbesserung der SDK-Komponenten im Zusammenhang mit der Python-Nutzung;
- Überarbeitung der Software-Schnittstellen zur Einhaltung der Python-Standards;
- Neugestaltung der Benchmark-Anwendung;
- Integration neuer Funktionalitäten in den Code-Generator;
- Erweiterung der Testabdeckung, um sicherzustellen, dass neue Funktionen jetzt von Tests begleitet werden;
- Einrichtung von Continuous Integration für GitHub.
In diesem Projekt haben wir auch CMake- und Git-Systeme verwendet, den GitHub-Actions-Dienst für die Testautomatisierung eingesetzt und mit mehreren Programmiersprachen gearbeitet:
- Python 3.8–3.12;
- C++17;
- C#.
Geschäftswert
Mehr von dem, was wir für Messgeräte tun:
- Industrielle Softwareentwicklungt: Erfahren Sie mehr über unsere Erfahrung mit der Nutzung des OPC UA-Protokolls in der Softwareentwicklung für industrielle Automatisierungssysteme.
- Software für optische Reflektometer: Eine Fallstudie zur Entwicklung von Software für ein OTDR, das in optischen Datenübertragungsnetzen verwendet wird.
Ingenieurnotizen
Das OPC UA-Protokoll (Open Platform Communications Unified Architecture) ist ein Maschinen-zu-Maschinen-Kommunikationsprotokoll, das für Anwendungen in der industriellen Automatisierung entwickelt wurde. Es gewährleistet einen sicheren und zuverlässigen Datenaustausch in industriellen Umgebungen und erleichtert die Interaktion zwischen verschiedenen Systemen und Geräten unabhängig vom Hersteller.
Das Protokoll verfügt über eine plattformunabhängige Architektur, die es ihm ermöglicht, auf verschiedenen Betriebssystemen und Hardwareplattformen zu funktionieren.
OPC UA unterstützt komplexe Datentypen und eine objektorientierte Architektur. Dank dieser Funktion eignet es sich für moderne industrielle Anwendungen, die den Austausch komplexer Datenstrukturen wie Messungen, Statusinformationen und Befehle zwischen Geräten und Steuerungssystemen erfordern.
Aufgrund seiner Skalierbarkeit, Standardisierung und Integrationsfähigkeit mit anderen Industriestandards hat sich das OPC UA-Protokoll zur Grundlage für die Gewährleistung der Kompatibilität und des Datenaustauschs zwischen verschiedenen Geräten und Systemen entwickelt, die an der Datenerfassung, Überwachung und Analyse beteiligt sind.