Download einer zeitbeschränkten Testversion unserer SDKs.
Mit dem HP SDK wird OPC UA in kleinsten embedded Geräten verwendbar und ist somit „IoT Ready“. Das Paket enthält die Client- und auch die Server-Seite. Geschrieben in reinem AnsiC (C99) Code bietet es die größtmögliche Flexibilität bei der Portierung auf andere Plattformen. Die Architektur mit Single-Thread / Single-Task erlaubt es das SDK parallel zu einem Echtzeit-Task zu betreiben. Die vollständig asynchrone API kann nicht blockieren und erlaubt durchgehende Kommunikation ohne Beeinflussung des (echtzeit) Main-Task der des Gerätes. Zusätzlich bietet das SDK, beim Einsatz auf High-End PC Systemen, bei der Bearbeitung von tausenden parallelen Verbindungen eine überragende Geschwindigkeit.
Mit einer von Grund auf neuen Softwarearchitektur und neuer Implementierung wurden alle Ziele erreicht, um die OPC UA Kommunikation in kleinste IIoT Geräte zu implementieren. Selbstverständlich ist die neue Implementierung vollständig netzwerkkompatibel mit den originalen UA-Stacks der OPC Foundation.
Ein Problem vieler Netzwerkimplementierungen ist ein schlechtes multi-threaded Design. Zu viele Threads werden ohne ein klares Konzept erzeugt, was zu einer enormen Verschwendung von Ressourcen führt und auch schlechte Performance nach sich zieht, die u. a. durch Locking-Probleme, Threadwechsel und defragmentierte CPU-Caches verursacht wird. Einige Implementierungen erzeugen sogar einen Thread pro Verbindung, was im Hinblick auf Skalierbarkeit das schlechteste Design darstellt.
In unserem neuen SDK haben wir eine Gruppe von OPC-UA-Komponenten kreiert, die völlig unabhängig voneinander, parallel arbeiten können und somit auf Multi-Core-CPUs herausragende Geschwindigkeiten erzielen ohne sich gegenseitig auszubremsen. Zusätzlich erlaubt diese Architektur die einzelnen Komponenten aus einer single-threaded Hauptschleife anzutreiben und ist somit auch in kleinsten Mikrokontrollern lauffähig.
Durch das Komponentendesign ist es möglich die einzelnen Komponenten, wie den Netzwerk-Encoder/Decoder ein einem eigenen Prozess laufen zu lassen. Dies kann nicht nur die Geschwindigkeit verbessern sondern ermöglicht auch die Verwendung von Sandbox-Mechanismen wie dem Linux Secure Computing Mode. Hierbei werden alle Betriebssystemaufrufe für diesen Prozess abgeschaltet. Im Falle eines Fehlers, der zu einem Exploit führen kann, wird der Prozess vom Betriebsystem terminiert, sobald ein Angreifer versucht Zugriff auf eine gesperrte Betriebssystemfunktion zu erhalten. Der Masterprozess erkennt dies und kann den terminierten Prozess anschließend wieder neu starten.
Die neue OPC-UA-Implementierung basiert auf einer komplett asynchronen Netzwerk-API, die als Betriebsystem-Abstraktionsschicht dient. Durch unterschiedliche Netzwerk-Backends ist es möglich von modernen betriebssystemspezifischen APIs zu profitieren, wie POSIX AIO, Linux epoll, BSD kqueue oder Windows Completion Port APIs. Diese APIs leiden nicht unter den Skalierungsproblemen wie die eher altertümliche Berkeley Socket API und sind somit der Schlüssel zu hochperformanten Serveranwendungen. Durch die Verwendung dieser modernen APIs können die Anzahl der Kontextwechsel und der Kopieroperationen erheblich reduziert werden. Dies verbessert die Performance, vor allem wenn das System auf tausende Verbindungen skaliert.
Mit dieser neuen API wurde zusätzlich auch eine Lösung für die „Non-Blocking Domain Name Resolution“ geschaffen, die als eine der größten Designschwächen in heutigen Netzwerkimplementierungen angesehen wird.
Genauso wie Netzwerk APIs leiden heutige Crypto-Implementierungen an synchronen, blockierenden Implementierungen. Die neue OPC-UA-Implementierung ist komplett asynchron designt, um diese Probleme zu lösen. Zwei verschiedene Backends werden direkt unterstützt: OpenSSL und PolarSSL. Weitere Crypto-Backends werden in Zukunft folgen. Das Konzept erlaubt auch eine einfache Anbindung von hardwarebeschleunigter Kryptographie. Durch das asynchrone Design wird ein Encryption-Auftrag an den Hardwarechip delegiert und die OPC-UA-Kommunikation wird fortgesetzt. Später im Prozess wird das Ergebnis der Hardwareverschlüsselung gesendet, völlig asynchron selbst in einer single-threaded Umgebung.
Im Hinblick auf Geschwindigkeit und Durchsatz wurde als größter Engpass die Encoder/Decoder-Schicht des heutigen OPC UA C-Stacks identifiziert. Obwohl dieser immer noch deutlich schneller ist als die JAVA- und .NET/C#-basierten UA-Stacks der OPC Foundation, wird das volle Geschwindigkeitspotential nicht ausgeschöpft. Mit einem kompletten Redesign und einer Neuimplementierung konnte im Encoder-Prozess ein Performancegewinn um den Faktor 10 erreicht werden. Dies führt im Gesamtverhalten des OPC-UA-Protokolls, in Abhängigkeit vom Typ der transferierten Daten, zu einem Geschwindigkeitszuwachs bis um den Faktor 4 verglichen mit den heute schnellsten ANSI-C-basierten OPC-UA-Implementierungen.
Während der gesamten Entwicklung wurde größter Wert auf minimalsten Speicherverbrauch gelegt, um die OPC-UA-Technologie auch in kleinsten embedded-Geräten verwenden zu können. Das modulare Konzept, konfigurierbare Memory-Pools und effiziente Implementierung machen das neue SDK perfekt für kleinste Geräte, Sensoren und auch für das Internet der Dinge. Auf einem ARM-basierten Demo-Board mit EUROS Echtzeitbetriebssystem konnte ein kompletter OPC-UA-Server in 300kByte umgesetzt werden, wobei hier das Betriebsystem bereits enthalten ist.
Mit einem neuen Konzept für einen tabellenbasierten OPC-UA-Adressraum können riesige Adressräume mit einem Bruchteil an Speicher integriert werden, der für heutige SDK benötigt werden würde. Das neue Konzept unterstützt auch die Ablage von "read-only" Informationen des UA-Adressraums im ROM, somit wird weiterer Speicher eingespart.
Um von Anfang an die höchstmöglichen Code-Qualität zu erreichen, wurde eine umfassende Testumgebung entwickelt. Mit diesem Toolset wird heute eine 98%ige Zeilenabdeckung und ein 95%ige Zweigabdeckung erreicht.
(Alle fehlenden Services können auf Interface-Ebene implementiert werden, aber es ist keine Default-Implementierung enthalten.)
Edition | Source Code |
Lizenzvarianten | Source Code Developer License (Single Seat), Evaluation License |
Unterstützte Kompiler | GCC, Clang, MinGW, MSVC |
Unterstützte Plattformen | Linux, Windows, vxWorks, QNX, Segger embOS, _custom_ |
Unterstützte Architekturen | x86, x86_64, ARM (32bit und 64bit, beides little und big Endian) |
Unterstützte Crypto Bibliotheken | OpenSSL v1.1.x, OpenSSL v3.x, mbedTLS >= v2.23 |
Build System | CMake |
Vollständige Lizenzbedingungen.
General | Nano Embedded Device 2017 Server Profile, Micro Embedded Device 2017 Server Profile, Embedded 2017 UA Server Profile |
Generic | Core Server Facat, Exposes Type System Server Facet, Base Server Facet, Method Server Facet, File Access Server Facet, NodeManagement Server Facet |
Security Profiles | None, Basic128Rsa15(default-off), Basic256(default-off), Basic256Sha256, Aes128-Sha256-RsaOaep, Aes256-Sha256-RsaPss |
User Tokens | Anonymous, User Name Password, User X509 |
Data Access | DataAccess Server Facet, ComplexType 2017 Server Facet |
Historical Access | Alle Services und Datentypen sind auf Interface-Ebene vorhanden, um diese Funktionalität zu implementieren. Es gibt keine weitere SDK-Unterstüzung wie z.B. Datenbank Integration. Ein Beispiel für History Server ist in den Tutorials des SDK dokumentiert. |
Events | Address Space Notifier Server Facet, Standard Event Subscription Server Facet |
Methods | Method Server Facet |
Alarms & Conditions | A&C Base Condition Server Facet, A&C Refresh2 Server Facet, A&C Address Space Instance Server Facet, A&C Enable Server Facet, A&C Acknowledgeable Alarm Server Facet, A&C Alarm Server Facet |
GDS Unterstützung | Die Server- und Clientseite kan von einem Global Discovery Server gemanaged werden. |
UaGateway wurde entwickelt, um „klassische“ OPC-Produkte in OPC-UA-Umgebungen zu integrieren. Die wichtigsten Features sind die Verbindung von UA-Clients mit COM/DCOM-Servern (Wrapper), der Zugriff mit COM/DCOM-Clients auf UA-Server (Proxy) und das Tunneln von COM/DCOM über eine sichere UA Verbindung. Weitergehende Informationen finden Sie auf der Produktseite zum UaGateway.
Unified Automation veranstaltet Seminare, Workshops und Praxisschulungen um Ihnen den Einstieg in OPC UA und unsere SDK-Produkte zu erleichtern. Weitergehende Informationen finden Sie auf den folgenden Seiten:
Außerdem können Sie Vor-Ort-Schulungen buchen, die wir an die Anforderungen ihrer Firma anpassen.
Das Buch „OPC Unified Architecture“ wurde von Wolfgang Mahnke, Stefan-Helmut Leitner und Matthias Damm geschrieben, einem der Referenten bei Schulungen von Unified Automation.
„Dieses Buch gibt Ihnen eine solide Grundlage um alles zu erfahren, was Sie jemals über die Entwicklung von OPC-UA-basierten Weltklasse-Produkten für die Interoperabilität zwischen verschiedenen Herstellern wissen wollten“, sagt Tom Burke, Präsident der OPC Foundation.
Nur Wörter mit 2 oder mehr Zeichen werden akzeptiert.
Maximal 200 Zeichen insgesamt.
Leerzeichen werden zur Trennung von Worten verwendet, "" kann für die Suche nach ganzen Zeichenfolgen benutzt werden (keine Indexsuche).
UND, ODER und NICHT sind Suchoperatoren, die den standardmäßigen Operator überschreiben.
+/|/- entspricht UND, ODER und NICHT als Operatoren.
Alle Suchbegriffe werden in Kleinschreibung umgewandelt.