OPC Unified Architecture
OPC Unified Architecture (OPC UA) je komunikační protokol vyvinut nadací OPC Foundation.
Jeho charakteristiky jsou:
- je založen na klient–server modelu
- zaměření na sběr dat a řízení v rámci průmyslových sítí
- otevřenost - je uvolněn pod licencí GPL 2.0 [1]
- platformová přenositelnost - není vázán na konkrétní operační systém či programovací jazyk
- orientovaný na služby
- nabízí bezpečnostní funkce jako je např. autentizace, autorizace, integrita a důvěryhodnost[2]
Historie
[editovat | editovat zdroj]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 | editovat zdroj]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 | editovat zdroj]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 | editovat zdroj]Standard OPC UA definuje 25 vestavěných datových typů:
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 | editovat zdroj]API rozhraní protokolu OPC UA jsou dostupná pro několik programovacích jazyků, například:
Implementace pro jazyk C/C++
[editovat | editovat zdroj]- 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 | editovat zdroj]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 | editovat zdroj]- 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 | editovat zdroj]IEC 62541 je označení standardu pro OPC Unified Architecture.
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 | editovat zdroj]- ↑ OPC Foundation GPLv2 License. opcfoundation.org [online]. [cit. 2021-04-23]. Dostupné online.
- ↑ Assessing the Security of OPC UA Deployments, 2020 [online]. [cit. 2020-02-21]. Dostupné online.
- ↑ OPC Foundation [online]. [cit. 2021-04-23]. Dostupné online. (anglicky)
- ↑ 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.