OPC UA Buch

Das erste OPC Unified Architecture Buch, geschrieben von Wolfgang Mahnke, Stefan-Helmut Leitner und Matthias Damm, einem der Gründer von ascolab.

OPC UA Neuerungen

Motivation

Die Vorgängertechnologie, heute „OPC-Classic“ genannt, definierte verschiedene APIs für typische Aufgaben (Data Access, Alarms&Events, Historical Data Access, u. a.). Diese Custom Schnittstellen basierten auf der von Microsoft mit dem Betriebssystem Windows NT eingeführten COM (Component Object Model) Technologie. Diese Bindung an COM/DCOM und die Unterstützung durch die Entwicklungswerkzeuge des Microsoft Visual Studio, u. a. ATL (Active Template Library), hat zwar einen großen Beitrag zur Verbreitung von „OPC-Classic“ geleistet, hatte jedoch auch entscheidende Nachteile:

  • Häufige Konfigurationsprobleme von DCOM (Distributed COM)
  • Keine konfigurierbaren Timeouts (z. B. konnte die Erkennung von Verbindungsabbrüchenkonnte bis zu 8 Minuten dauern)
  • Bindung an Desktop-Varianten des Betriebssystem Windows (keine bzw. begrenzte Unterstützung auf Windows CE)
  • Abkündigung der COM-Technologie bei Einführung von .NET
  • Keine „echte“ Security, COM unterstützt lediglich eine Applikations-Authentifizierung über den Benutzerkontext
  • Keine Kontrolle darüber, was passiert (COM/DCOM ist eine „Black Box“: Entwickler haben keinen Quellcode und sind Fehlern ausgeliefert)

Neuerung

Aus diesen und weiteren Gründen hat man sich dazu entschieden, einen eigenen Kommunikationsstack für OPC UA zu entwickeln, welcher COM/DCOM ersetzt. Die wichtigsten Merkmale dieses Kommunikationsstacks sind:

  • Plattformunabhängigkeit der Kommunikation ohne Bindung an ein bestimmtes Betriebssystem oder eine CPU-Architektur
  • Sprachunabhängigkeit – neben einer portablen ANSI-C-Implementierung werden sowohl eine C#- als auch eine Java-Implementierung unterstützt
  • Skalierbarkeit von eingebetteter Steuerungssoftware bis hin zu betrieblichen bzw. Management-Informationssystemen
  • Der ANSI-C-Stack kann sowohl für Multithreaded-Betrieb als auch für den Singlethreaded/Singletask-Betrieb kompiliert werden, was wichtig für die Portierung auf Embedded-Geräte ist.
  • Eine eigene Security-Implementierung, basierend auf den neuesten Standards, sorgt für „echte“ Security (Verschlüsselung, Signierung, Applikations-Authentifizierung)
  • Konfigurierbarkeit von Timeouts für jeden Serviceaufruf
  • Integrierte Verbindungsunterbrechungserkennung
  • Chunking von großen Datenpaketen
  • Abstrahierte Architektur zur einfachen Erweiterung bzw. zum einfachen Austausch einzelner Komponenten (Encoding, Security, Transport, Plattform)

Der ANSI-C-Kommunikationsstack (sowie die .NET und Java Implementierung) stellt aber nur den Anfang vieler Neuerungen dar. Das standardisierte, objektorientierte Informationsmodell inklusive erweiterbarem Typsystem (Vererbung) und Referenzierung kombiniert das reine Datenübertragungsprotokoll mit den Datenbeschreibungsmöglichkeiten einer Programmiersprache.