OPC Unified Architecture

OPC Unified Architecture (OPC UA) je komunikační protokol vyvinut nadací OPC Foundation.

Jeho charakteristiky jsou:

Historie editovat

Přestože byl protokol vyvinut stejnou organizací jako svůj předchůdce, ta se OPC UA od něj velmi liší. Název OPC stojí za Open Platform Communications, tedy se jedná o otevřený komunikační protokol a stojí za ním nadace OPC Foundation. Cílem protokolu OPC UA nadace zamýšlela poskytnout cestu vpřed z běžného komunikačního OPC modelu (přesněji závislost na systémech Microsoft Windows a jejich modelu COM/DCOM) blíže k jednoduchosti potřebné pro průmyslovou automatizaci.

První verze protokolu OPC UA byla uvolněna po více než 3 letech prací na specifikacích a prototypech v roce 2006.

Aktuální verze specifikace nese číslo revize 1.04 z 22. listopadu 2017 [3]a nová verze protokolu byla rozšířena o model publish/subscribe (stejně jako má protokol MQTT) vedle běžného klient/server modelu.

Protokoly editovat

OPC UA podporuje dva protokoly[4], které se liší svojí cestou URL. Binární protokol opc.tcp://Server a protokol pro webovou službu http://Server. Jinak pracuje OPC UA zcela transparentně ke svému API rozhraní.

Binární protokol nabízí lepší výkon a zabírá méně procesorového času (nevyžaduje parsování XML, SOAP či HTTP), nabízí nejlepší interoperabilitu a používá pouze jeden zvolený port, což zajišťuje lepší tunelování pomocí tzv. směrování portů (port-forwarding) na firewallu.

Webová služba založená na SOAP protokolu je příjemnější pro programování vzhledem k pojmenovaným entitám v přenášených datech a bezpečnost je stejná jako pro běžné HTTP a HTTPS porty.

Bezpečnost UA editovat

Bezpečnost protokolu OPC UA je zajištěna pomocí autentizace, autorizace, šifrování a zajištění datové integrity pomocí podpisů. Pro webové služby se používá tzv. WS-SecureConversation a je kompatibilní se SOAP implementacemi protokolu. Pro binární variantu je použit algoritmus jako pro WS-SecureConversation a poté převeden do své binární podoby jako UA Secure Conversation.

Dále existuje i smíšená verze, kde jsou data i kód v binární podobě, ale transportní vrstvou je protokol SOAP. Jedná se o efektivní řešení pro umožnění lepšího prostupu přes firewally v problematických nasazeních. Autentizace je vždy zajišťována poccí X.509 certifikátů a spoléhá na vývojáře aplikace, který určuje jaké úložiště certifikátů k aplikaci náleží. Tímto úložištěm může být například PKI infrastruktura řešení Active Directory v rámci systémů Microsoft Windows Server.

Vestavěné datové typy editovat

Standard OPC UA definuje 25 vestavěných datových typů:

Vestavěné datové typy OPC UA
Datový typ Ekvivalent v C/C++ Rozsah Typ NodeId
Boolean bool 0/1 (true or false) 0 (číselná hodnota)
SByte int8_t -128 až 127
Byte uint8_t 0 až 255
Int16 int16_t -32768 až 32767
UInt16 uint16_t 0 až 65535
Int32 int32_t -2147483648 až 2147483647
UInt32 uint32_t 0 až 4294967295
Int64 int64_t -9223372036854775808 až 9223372036854775807
UInt64 uint64_t 0 až 18446744073709551615
Float float 32bitové desetinné číslo dle normy IEEE
Double double 64bitové desetinné číslo dle normy IEEE
StatusCode uint32_t
String uint8_t* / std::string 3 (řetězec)
DateTime int64_t počet 100 nanosekundových intervalů od 1.1.1601 UTC
GUID závislé na implementaci 16-bytové číslo použité jako unikátní identifikátor 4 (GUID)
ByteString (stejné jako řetězec) 5 (byte string)
XmlElement (stejné jako řetězec)
NodeId index jmenného prostoru (namespace) nebo typ NodeId
ExpandedNodeId (podobné jako NodeId)
QualifiedName index jmenného prostoru (namespace) nebo řetězec
LocalizedText řetězec a identifikátor jazyka
NumericRange řetězec (např. "0:4,1:5" pro pole [0..4][1..5])
Variant (variabilní objekt, pouze pro vestavěné typy)
ExtensionObject skalární veličiny libovolného typu
DataValue složenina hodnoty, časového razítka a stavového kódu
DiagnosticInfo detail o chybě či diagnostická informace

API rozhraní OPC UA editovat

API rozhraní protokolu OPC UA jsou dostupná pro několik programovacích jazyků, například:

Implementace pro jazyk C/C++ editovat

  • Projekt open62541 poskytuje otevřenou implementaci OPC UA serveru a klientů uvolněnou pod licencí MPL 2.0
  • Projekt FreeOpcUa poskytuje otevřenou implementaci OPC UA serveru a klientů uvolněnou pod licencí LGPL.
  • UAF

Implementace pro jazyk JavaScript editovat

Projekt node-opcua je kompletní implementací OPC UA protokolu pro server i klienta kompletně napsaného v jazyce JavaScript pro Node.js.

Implementace pro jazyk Python editovat

  • Projekt FreeOpcUa poskytuje jak asynchronní implementaci pomocí opcua-asyncio (pro Python 3.7 a vyšší) a také python-opcua. Obě implementace poskytují vysokou úroveň abstrakce pro implementaci jako OPC UA serveru, tak i OPC UA klienta.

IEC 62541 editovat

IEC 62541 je označení standardu pro OPC Unified Architecture.

IEC 62541 Overview
ID Rok vydání Název
IEC/TR 62541-1 2016 OPC Unified Architecture - Part 1: Overview and Concepts
IEC/TR 62541-2 2016 OPC Unified Architecture - Part 2: Security Model
IEC 62541-3 2020 OPC Unified Architecture - Part 3: Address Space Model
IEC 62541-4 2020 OPC Unified Architecture - Part 4: Services
IEC 62541-5 2020 OPC Unified Architecture - Part 5: Information Model
IEC 62541-6 2020 OPC Unified Architecture - Part 6: Mappings
IEC 62541-7 2020 OPC Unified Architecture - Part 7: Profiles
IEC 62541-8 2020 OPC Unified Architecture - Part 8: Data Access
IEC 62541-9 2020 OPC Unified Architecture - Part 9: Alarms and Conditions
IEC 62541-10 2020 OPC Unified Architecture - Part 10: Programs
IEC 62541-11 2020 OPC Unified Architecture - Part 11: Historical Access
IEC 62541-12 2020 OPC unified architecture - Part 12: Discovery and global services
IEC 62541-13 2020 OPC Unified Architecture - Part 13: Aggregates
IEC 62541-14 2020 OPC unified architecture - Part 14: PubSub
IEC 62541-100 2015 OPC Unified Architecture - Part 100: Device Interface

Reference editovat

  1. OPC Foundation GPLv2 License. opcfoundation.org [online]. [cit. 2021-04-23]. Dostupné online. 
  2. Assessing the Security of OPC UA Deployments, 2020 [online]. [cit. 2020-02-21]. Dostupné online. 
  3. OPC Foundation [online]. [cit. 2021-04-23]. Dostupné online. (anglicky) 
  4. KELTER, Udo. Konferenzankündigungen. Softwaretechnik-Trends. 2013-08, roč. 33, čís. 3, s. 3–13. Dostupné online [cit. 2021-04-23]. ISSN 0720-8928. DOI 10.1007/s40568-013-0065-6. 

V tomto článku byl použit překlad textu z článku OPC Unified Architecture na anglické Wikipedii.