<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://rs-485.com/index.php?action=history&amp;feed=atom&amp;title=OPC_Unified_Architecture</id>
	<title>OPC Unified Architecture - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://rs-485.com/index.php?action=history&amp;feed=atom&amp;title=OPC_Unified_Architecture"/>
	<link rel="alternate" type="text/html" href="https://rs-485.com/index.php?title=OPC_Unified_Architecture&amp;action=history"/>
	<updated>2026-05-04T01:47:18Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://rs-485.com/index.php?title=OPC_Unified_Architecture&amp;diff=1618&amp;oldid=prev</id>
		<title>RS-485: Imported from Wikipedia (overwrite)</title>
		<link rel="alternate" type="text/html" href="https://rs-485.com/index.php?title=OPC_Unified_Architecture&amp;diff=1618&amp;oldid=prev"/>
		<updated>2026-05-03T13:59:57Z</updated>

		<summary type="html">&lt;p&gt;Imported from Wikipedia (overwrite)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|Computer network protocol}}&lt;br /&gt;
{{more citations needed|date=January 2020}}&lt;br /&gt;
{{Use dmy dates|date=April 2022}}&lt;br /&gt;
{{Infobox protocol|name=OPC Unified Architecture (OPC UA)|image=OPC-UA_protocol_logo,_2022.png|industry=[[Operational technology]] and [[Information technology]]|standard=IEC62541, OPC Unified Architecture (Core, Field eXchange, Devices, Asset Management, XML Datatype Mapping)|developer=[[OPC Foundation]]|introdate={{Start date and age|2006|07|28}}|homepage=https://opcfoundation.org/about/opc-technologies/opc-ua/|newer=|hardware=[[Programmable logic controller|PLC]], [[field devices]], [[Windows]], [[Linux]], [[IIOT]]}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;OPC Unified Architecture&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;OPC UA&amp;#039;&amp;#039;&amp;#039;) is a cross-platform, open-source, IEC62541 standard for data exchange from sensors to cloud applications developed by the [[OPC Foundation]]. Distinguishing characteristics are:&amp;lt;ref&amp;gt;{{Cite journal |last1=Braun |first1=Roland |last2=Mendoza |first2=Francisco |date=2021-11-17 |title=Geräteintegration für OPC UA angeschlossene Feldgeräte |url=http://dx.doi.org/10.17560/atp.v63i11-12.2567 |journal=Atp Magazin |volume=63 |issue=11–12 |doi=10.17560/atp.v63i11-12.2567 |s2cid=246122846 |issn=2364-3137|url-access=subscription }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Standardized data models freely available for over 60 types of industrial equipment, published by the OPC Foundation via Companion Specifications&lt;br /&gt;
* Extensible security profiles, including authentication, authorization, encryption and checksums&lt;br /&gt;
* Extensible security key management, including X.509, token and password&lt;br /&gt;
* Support for both client-server and publish-subscribe communication patterns&lt;br /&gt;
* Communication protocol independent. Mappings to several communication protocols like TCP/IP, UDP/IP, WebSockets, [[AMQP]] and [[MQTT]] are specified&lt;br /&gt;
* Initially successful in standardized data exchange with industrial equipment (discrete manufacturing, process manufacturing, energy) and systems for data collection and control, but now also leveraged in building automation, weighing and kitchen equipment and cloud applications&lt;br /&gt;
* [[open standard|Open]] – open-source reference implementations freely available to OPC Foundation members, non members under GPL 2.0 license&amp;lt;ref&amp;gt;{{Cite web|url=https://github.com/OPCFoundation/UA-.NETStandard|title=OPC Foundation Reference Implementation|website=[[GitHub]] }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Cross-platform]] – not tied to one operating system or programming language&lt;br /&gt;
* [[Service-oriented architecture]] (SOA)&lt;br /&gt;
* The specification is freely available on the OPC Foundation website and is split into several parts to ease implementation, but only OPC UA stack vendors need to read them, end users simply leverage existing commercial and/or open-source stacks available in all popular programming languages&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
Although developed by the same organization, OPC UA differs significantly from its predecessor, [[Open Platform Communications]] (OPC). The Foundation&amp;#039;s goal for OPC UA was to provide a path forward from the original [[OLE for process control|OPC]] communications model (namely the [[Microsoft Windows]]-only process exchange COM/[[Distributed Component Object Model|DCOM]]) that would better meet the emerging needs of [[industrial automation]].&amp;lt;ref&amp;gt;Mahnke, Wolfgang; Leitner, Stefan-Helmut https://library.e.abb.com/public/75d70c47268d78bfc125762d00481f78/56-61%203M903_ENG72dpi.pdf OPC Unified Architecture – The future standard for communication and information modeling in automation], 3/2009 [http://www.abb.com/abbreview ABB Review 3/2009, page 56-61]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After more than three years of specification work and another year for a prototype implementation, the first version of the Unified Architecture was released in 2006.&amp;lt;ref&amp;gt;{{cite web |title=Unified Foundation – OPC Foundation |url=https://opcfoundation.org/about/opc-foundation/history/ |website=OPC Foundation |access-date=13 December 2021}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The current version of the specification is on 1.04 (22 November 2017&amp;lt;ref&amp;gt;{{Cite web|url=https://opcfoundation.org/developer-tools/specifications-unified-architecture|title = Members}}&amp;lt;/ref&amp;gt;). The new version of OPC UA now has added publish/subscribe in addition to the client/server communications infrastructure.&lt;br /&gt;
&lt;br /&gt;
Although the original binding to COM/[[Distributed Component Object Model|DCOM]] helped [[OLE for process control|OPC]] to distribute well, it had several drawbacks:&lt;br /&gt;
* Frequent configuration issues with DCOM;&lt;br /&gt;
* No configurable time-outs;&lt;br /&gt;
* [[Microsoft Windows]] only;&lt;br /&gt;
* Lower security;&lt;br /&gt;
* No control over DCOM (COM/DCOM is kind of a black box, developers have no access to sources and therefore have to deal with bugs or insufficient implementations).&lt;br /&gt;
&lt;br /&gt;
These drawbacks along with a number of other considerations pushed the decision to develop a new and independent stack for OPC UA, which replaces COM/DCOM. The main characteristics of this communication stack were:&lt;br /&gt;
* Multi-platform implementation, including portable [[ANSI C]], [[Java (software platform)|Java]] and [[.NET Framework|.NET]] implementations;&lt;br /&gt;
* Scalability: from smart sensors and smart actuators to mainframes;&lt;br /&gt;
* Multi-threaded, as well as single-threaded/single-task operation—necessary for porting the stack to embedded devices;&lt;br /&gt;
* Security, based on new standards;&lt;br /&gt;
* Configurable time-outs for each service;&lt;br /&gt;
* Chunking of big datagrams.&lt;br /&gt;
&lt;br /&gt;
This communication stack reflects the beginning of various innovations. The OPC UA architecture is a service-oriented architecture (SOA) and is based on different logical levels.&lt;br /&gt;
&lt;br /&gt;
OPC Base Services are abstract method descriptions, which are protocol independent and provide the basis for OPC UA functionality. The transport layer puts these methods into a protocol, which means it serializes/deserializes the data and transmits it over the network.&lt;br /&gt;
Two [[communication protocol|protocols]] are specified for this purpose. One is a binary [[Transmission Control Protocol|TCP]] protocol, optimized for high performance and the second is [[Web service]]-oriented.&lt;br /&gt;
&lt;br /&gt;
The OPC information model is a Mesh Network based on [[node (networking)|node]]s. These nodes can include any kind of meta information, and are similar to the objects of [[object-oriented programming]] (OOP). A node can have attributes for read access (DA{{Definition needed|date=April 2026}}, HDA{{Definition needed|date=April 2026}}), methods that can be called (Commands), and triggered events that can be transmitted (AE{{Definition needed|date=April 2026}}, DataAccess, DataChange). Nodes hold process data as well as other types of [[metadata]]. The OPC namespace contains the type model{{Clarify|date=April 2026}}.&lt;br /&gt;
&lt;br /&gt;
Client software can verify what profiles a server supports. This is necessary to obtain information, if a server only supports DA functionality or additionally AE, HDA, etc. Additionally, information can be obtained about whether a server supports a given profile. New and important features of OPC UA are:&lt;br /&gt;
* Redundancy support&lt;br /&gt;
* Heartbeat for connections in both directions (to indicate whether the other end is &amp;quot;alive&amp;quot;). This means that both server and client recognize interrupts.&lt;br /&gt;
* Buffering of data and acknowledgements of transmitted data. Lost connections don&amp;#039;t lead to lost data anymore. Lost datagrams can be refetched.&lt;br /&gt;
&lt;br /&gt;
At the OPC UA DevCon in October 2006, in Munich the first prototypes were presented live. Various UA Servers have been shown on a Beckhoff [[programmable logic controller]] and an embedded test board from Euros. The Beckhoff PLC is based on Windows XP Embedded and the embedded controller is based on the [[real-time operating system]] Euros. The company Embedded Labs Ltd demonstrated an OPC UA Server based on their own C++ UA Stack executing on a single chip [[ARM Holdings|ARM]] microcontroller with 64kB [[RAM]]. In October 2012 the German Fraunhofer-Application Center IOSB-INA and the Institute for industrial Information Technologies (inIT) showed that an OPC UA server is scalable down to 15 kB RAM and 10 kB ROM and therefore usable at chip level.&amp;lt;ref&amp;gt;{{Cite web |url=https://www.hs-owl.de/init/en/aktuelles/news/news-detail/news/the-worlds-smallest-opc-ua-server-comes-from-germany.html |title=The world&amp;#039;s smallest OPC UA server comes from Germany |access-date=3 June 2016 |archive-date=9 January 2018 |archive-url=https://web.archive.org/web/20180109121901/https://www.hs-owl.de/init/en/aktuelles/news/news-detail/news/the-worlds-smallest-opc-ua-server-comes-from-germany.html |url-status=dead }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specifications==&lt;br /&gt;
The OPC UA specification is a multi-part specification and consists of the following parts:&lt;br /&gt;
# Concepts&lt;br /&gt;
# Security Model&lt;br /&gt;
# Address Space Model&lt;br /&gt;
# Services&lt;br /&gt;
# Information Model&lt;br /&gt;
# Mappings&lt;br /&gt;
# Profiles&lt;br /&gt;
# Data Access&lt;br /&gt;
# Alarms and Conditions&lt;br /&gt;
# Programs&lt;br /&gt;
# Historical Access&lt;br /&gt;
# Discovery and Global Services&lt;br /&gt;
# Aggregates&lt;br /&gt;
# PubSub&lt;br /&gt;
# Safety&lt;br /&gt;
# State Machines&lt;br /&gt;
# Alias Names&lt;br /&gt;
# Role-Based Security&lt;br /&gt;
# Dictionary Reference&lt;br /&gt;
# File Transfer&lt;br /&gt;
# Device Onboarding&lt;br /&gt;
# Base Network Model&lt;br /&gt;
# Common Reference Types&lt;br /&gt;
# Scheduler&lt;br /&gt;
&lt;br /&gt;
Additionally, part 100 Devices, and part 200 Industrial Automation are also available. These build on the core set of specifications, and adds new common definitions that then are used in different companion specifications. E.g. both &amp;#039;&amp;#039;OPC UA for Analyser Devices&amp;#039;&amp;#039; and &amp;#039;&amp;#039;OPC UA for Machinery&amp;#039;&amp;#039; builds directly on part 100.&lt;br /&gt;
&lt;br /&gt;
In contrast to the COM-based specifications, the UA specifications are not pure application specifications. They describe typical UA internal mechanisms, which get handled through the communication stack and are normally only of interest for those that port a stack to a specific target or those that want to implement their own UA stack.&lt;br /&gt;
&lt;br /&gt;
The OPC UA application developers code against the OPC UA API and therefore mainly use API documentation{{Clarify|date=April 2026}}. Nevertheless, part 3, 4, and 5 may be of interest for application developers.&amp;lt;ref&amp;gt;Massaro, Simone [http://www.plantengineering.com/index.php?id=1792&amp;amp;cHash=081010&amp;amp;tx_ttnews%5Btt_news%5D=35007 What is OPC UA and how does it affect your world?], 5/15/2008 [http://www.plantengineering.com planetengineering.com]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSI model ==&lt;br /&gt;
OPC UA is a [[OSI model]] Layer 7: Application layer&amp;lt;ref&amp;gt;{{Cite web |title=UA Part 6: Mappings - 4 Overview |url=https://reference.opcfoundation.org/Core/Part6/v104/docs/4 |access-date=2025-11-24 |website=reference.opcfoundation.org |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With in the Application layer, OPC UA have 4 sub layers:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+OPC UA Stack Overview&lt;br /&gt;
!&amp;#039;&amp;#039;&amp;#039;Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
!Description&lt;br /&gt;
!OPC UA standard&lt;br /&gt;
|-&lt;br /&gt;
|UA Application&lt;br /&gt;
|Client&lt;br /&gt;
Server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Serialization layer &lt;br /&gt;
|Data Encoding&lt;br /&gt;
|OPC 10000-6 UA Part 6: Mappings:  [https://reference.opcfoundation.org/Core/Part6/v104/docs/5 DataEncoding]&lt;br /&gt;
|-&lt;br /&gt;
|Secure channel layer&lt;br /&gt;
|Secure Protocols&lt;br /&gt;
|OPC 10000-6 UA Part 6: Mappings:  [https://reference.opcfoundation.org/Core/Part6/v105/docs/6 SecurityProtocol]&lt;br /&gt;
|-&lt;br /&gt;
|Transport layer&lt;br /&gt;
|Transport Protocols&lt;br /&gt;
|OPC 10000-6 UA Part 6: Mappings: [https://reference.opcfoundation.org/Core/Part6/v105/docs/7 TransportProtocols]&lt;br /&gt;
OPC 10000-14: UA Part 14: PubSub:  [https://reference.opcfoundation.org/Core/Part14/v104/docs/7.3 Transport Protocol Mappings]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Transport Protocols ===&lt;br /&gt;
OPC UA is a versatile industrial communication protocol that is designed to be transport-agnostic, and operate over several transport mechanisms, each corresponding to different layers of the OSI model. It can use, TCP, UDP or Ethernet directly, or it can also be encapsulated within higher-level application protocols such as HTTPS, WebSockets, AMQP, and MQTT.&lt;br /&gt;
&lt;br /&gt;
OPC-UA support:&amp;lt;ref&amp;gt;{{Cite web |title=UA Part 14: PubSub - 7.3 Transport Protocol Mappings |url=https://reference.opcfoundation.org/Core/Part14/v104/docs/7.3 |access-date=2025-11-24 |website=reference.opcfoundation.org |language=en}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite web |title=UA Part 14: PubSub - 7.3 Transport Protocol Mappings |url=https://reference.opcfoundation.org/Core/Part14/v105/docs/7.3 |access-date=2025-11-24 |website=reference.opcfoundation.org |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+OPC UA Transport protocols&lt;br /&gt;
!Protocol name&lt;br /&gt;
!OSI Layer&lt;br /&gt;
!OPC UA standard&lt;br /&gt;
!info&lt;br /&gt;
|-&lt;br /&gt;
|OPC UA [[User Datagram Protocol|UDP]]&lt;br /&gt;
|4&lt;br /&gt;
|OPC 10000-14: UA Part 14: PubSub, OPC UA [https://reference.opcfoundation.org/Core/Part14/v105/docs/7.3.2 UDP]&lt;br /&gt;
|Support [[Multicast]], Broadcast, [[Unicast]], DTLS&lt;br /&gt;
|-&lt;br /&gt;
|OPC UA Ethernet&lt;br /&gt;
|2&lt;br /&gt;
|OPC 10000-14: UA Part 14: PubSub: [https://reference.opcfoundation.org/Core/Part14/v105/docs/7.3.3 OPC UA Ethernet]&lt;br /&gt;
|[[EtherType]] for UADP is 0xB62C&lt;br /&gt;
|-&lt;br /&gt;
|[[Advanced Message Queuing Protocol|AMQP]]&lt;br /&gt;
|7&lt;br /&gt;
|OPC 10000-14: UA Part 14: PubSub: [https://reference.opcfoundation.org/Core/Part14/v104/docs/7.3.4 AMQP]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[MQTT]]&lt;br /&gt;
|7&lt;br /&gt;
|OPC 10000-14: UA Part 14: PubSub: [https://reference.opcfoundation.org/Core/Part14/v105/docs/7.3.4 MQTT]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[HTTPS]]&lt;br /&gt;
|7&lt;br /&gt;
|OPC 10000-6 UA Part 6: Mappings: [https://reference.opcfoundation.org/Core/Part6/v104/docs/7.4 OPC UA HTTPS]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[WebSocket|WebSockets]]&lt;br /&gt;
|7&lt;br /&gt;
|OPC 10000-6 UA Part 6: Mappings: [https://reference.opcfoundation.org/Core/Part6/v104/docs/7.5 Websockets]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|OPC UA [[Transmission Control Protocol|TCP]]&lt;br /&gt;
|4&lt;br /&gt;
|OPC 10000-6 UA Part 6: Mappings:  [https://reference.opcfoundation.org/Core/Part6/v104/docs/7.2 OPC UA TCP]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==UA communication stack==&lt;br /&gt;
The architecture of a UA application, independent of whether it is the server or client part, is structured into levels.&lt;br /&gt;
&lt;br /&gt;
Some parts equalize to the former COM Proxy/Stubs and get provided by the OPC Foundation. The portability level is new; it simplifies porting the UA ANSI C stack to other target platforms. A port layer for Windows and [[Linux]] is also provided by the OPC Foundation.&lt;br /&gt;
&lt;br /&gt;
==UA security==&lt;br /&gt;
UA Security consists of authentication and authorization, encryption and data integrity via signatures. For Web Services the [[WS-SecureConversation]] gets used and is therefore compatible with [[.NET Framework|.NET]] and other [[SOAP]] implementations. For the binary variant, the algorithms of WS-SecureConversation have been followed and also converted to a binary equivalent. This is named as UA Secure Conversation.&lt;br /&gt;
&lt;br /&gt;
There is also a mixed version where the code is binary, but the transport layer is SOAP. This is a compromise between efficient binary coding and firewall-friendly transmission. Binary coding always requires UA Secure Conversation.&lt;br /&gt;
The authentication uses [[X.509]] certificates exclusively. It relies on the application developer to choose which certificate store the UA application gets bound to. For instance, it is possible to use the [[public key infrastructure]] (PKI) of an [[Active Directory]].&lt;br /&gt;
&lt;br /&gt;
== Built-in data types ==&lt;br /&gt;
The OPC UA standard defines 25 built-in data types:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
OPC UA built-in data types&lt;br /&gt;
!Built-in type&lt;br /&gt;
![[C data types|C/C++ equivalent]]&lt;br /&gt;
!Details&lt;br /&gt;
!NodeId type&lt;br /&gt;
|-&lt;br /&gt;
|Boolean&lt;br /&gt;
|bool&lt;br /&gt;
|0/1 (false or true)&lt;br /&gt;
| rowspan=&amp;quot;11&amp;quot; |0 (numeric)&lt;br /&gt;
|-&lt;br /&gt;
|SByte&lt;br /&gt;
|int8_t&lt;br /&gt;
| -128 to 127&lt;br /&gt;
|-&lt;br /&gt;
|Byte&lt;br /&gt;
|uint8_t&lt;br /&gt;
|0 to 255&lt;br /&gt;
|-&lt;br /&gt;
|Int16&lt;br /&gt;
|int16_t&lt;br /&gt;
| -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
|UInt16&lt;br /&gt;
|uint16_t&lt;br /&gt;
|0 to 65535&lt;br /&gt;
|-&lt;br /&gt;
|Int32&lt;br /&gt;
|int32_t&lt;br /&gt;
| -2147483648 to 2147483647&lt;br /&gt;
|-&lt;br /&gt;
|UInt32&lt;br /&gt;
|uint32_t&lt;br /&gt;
|0 to 4294967295&lt;br /&gt;
|-&lt;br /&gt;
|Int64&lt;br /&gt;
|int64_t&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-9223372036854775808 to 9223372036854775807&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|UInt64&lt;br /&gt;
|uint64_t&lt;br /&gt;
|0 to 18446744073709551615&lt;br /&gt;
|-&lt;br /&gt;
|Float&lt;br /&gt;
|float&lt;br /&gt;
|IEEE single precision (32 bit) floating point value&lt;br /&gt;
|-&lt;br /&gt;
|Double&lt;br /&gt;
|double&lt;br /&gt;
|IEEE double precision (64 bit) floating point value&lt;br /&gt;
|-&lt;br /&gt;
|StatusCode&lt;br /&gt;
|uint32_t&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|String&lt;br /&gt;
|uint8_t* / std::string&lt;br /&gt;
|&lt;br /&gt;
|3 (string)&lt;br /&gt;
|-&lt;br /&gt;
|DateTime&lt;br /&gt;
|int64_t&lt;br /&gt;
|number of 100 nanosecond intervals since 1/1/1601 (UTC)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GUID&lt;br /&gt;
|implementation dependent&lt;br /&gt;
|16-byte number used as a [[Universally unique identifier|unique identifier]]&lt;br /&gt;
|4 (GUID)&lt;br /&gt;
|-&lt;br /&gt;
|ByteString&lt;br /&gt;
|(same as String)&lt;br /&gt;
|&lt;br /&gt;
|5 (byte string)&lt;br /&gt;
|-&lt;br /&gt;
|XmlElement&lt;br /&gt;
|(same as String)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NodeId&lt;br /&gt;
|&lt;br /&gt;
|namespace index and NodeId type&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ExpandedNodeId&lt;br /&gt;
|&lt;br /&gt;
|(similar to NodeId)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|QualifiedName&lt;br /&gt;
|&lt;br /&gt;
|namespace index and string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LocalizedText&lt;br /&gt;
|&lt;br /&gt;
|string and a locale indicator&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NumericRange&lt;br /&gt;
|&lt;br /&gt;
|string (e.g. &amp;quot;0:4,1:5&amp;quot; for [0..4][1..5] array)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Variant&lt;br /&gt;
|&lt;br /&gt;
|(built-in data types only)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ExtensionObject&lt;br /&gt;
|&lt;br /&gt;
|scalars of any type&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|DataValue&lt;br /&gt;
|&lt;br /&gt;
|a composite of a value, timestamps and status code&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|DiagnosticInfo&lt;br /&gt;
|&lt;br /&gt;
|detailed error/diagnostic information&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==OPC UA APIs==&lt;br /&gt;
UA APIs are available in several programming languages. Commercial SDKs are available for C, C++, Java, and .NET. Open-source stacks are available at least for C, C++, Java, JavaScript(node), Tcl and Python.&lt;br /&gt;
&lt;br /&gt;
===.NET implementation===&lt;br /&gt;
The .NET implementation uses ANSI C for the lower levels and implements the rest natively in .NET. That means only the handling of the socket and the Message-Chunking gets integrated from the ANSI C stack. De-serialization takes place directly in .NET and therefore gets converted directly into .NET structures and objects. This provides better performance than de-serializing into a C structure first and then copying the data to a .NET structure afterwards.&lt;br /&gt;
&lt;br /&gt;
===Java implementation===&lt;br /&gt;
Various stacks for Java were being developed.{{when|date=February 2019}} Similar to .NET, there are principally three variants:&lt;br /&gt;
#Encapsulate the complete ANSI C stack via [[Java Native Interface|JNI]], which complicates portability. Although the stack can be ported to different operating systems, it needs to get compiled for those individually. Also, the data needs to get copied to the JNI boundary, but benefits from the performance of C during de-serialization.&lt;br /&gt;
#Code directly on the network layer (similar to the current .Net implementation) and de-serialize in Java. This saves one data copy execution, but still depends on the C stack.&lt;br /&gt;
#Write a native Java OPC UA stack. This was observed to be the most portable, but estimated to take the most engineering effort to implement. The Eclipse Milo project provides a pure-Java, open-source, implementation of the UA 1.05 client and server specification.&amp;lt;ref&amp;gt;{{cite web |url=https://github.com/eclipse-milo/milo |title=Eclipse Milo Project README on GitHub | access-date=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
# [[Apache PLC4X]] project provides pure-Java, open-source implementation of UA client as well as network level frame descriptions which can be used for cross-language implementations.&amp;lt;ref&amp;gt;{{cite web |title=PLC4X OPC-UA client connection options |url=https://plc4x.apache.org/plc4x/latest/users/protocols/opcua.html |access-date=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, there is the simple variant to only support the WebService protocol. For that, a SOAP Toolkit that supports [[WS-Security]] is needed.&lt;br /&gt;
&lt;br /&gt;
== IEC 62541 ==&lt;br /&gt;
IEC 62541&amp;lt;ref&amp;gt;{{cite web |url=https://webstore.iec.ch/searchform&amp;amp;q=iec%2062541 |title=IEC Webstore for IEC 62541 |access-date= 1 June 2018}}&amp;lt;/ref&amp;gt; is a standard for OPC Unified Architecture.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left vertical-align:top&amp;quot;&lt;br /&gt;
|+ IEC 62541 Overview&lt;br /&gt;
|-&lt;br /&gt;
! ID&lt;br /&gt;
! release date&lt;br /&gt;
! title&lt;br /&gt;
|- style=&amp;quot;vertical-align:top&amp;quot;&lt;br /&gt;
| IEC/TR 62541-1&lt;br /&gt;
| 2016&lt;br /&gt;
| OPC Unified Architecture – Part 1: Overview and Concepts&lt;br /&gt;
|- style=&amp;quot;vertical-align:top&amp;quot;&lt;br /&gt;
| IEC/TR 62541-2&lt;br /&gt;
| 2016&lt;br /&gt;
| OPC Unified Architecture – Part 2: Security Model&lt;br /&gt;
|- style=&amp;quot;vertical-align:top&amp;quot;&lt;br /&gt;
| IEC 62541-3&lt;br /&gt;
| 2020&lt;br /&gt;
| OPC Unified Architecture – Part 3: Address Space Model&lt;br /&gt;
|- style=&amp;quot;vertical-align:top&amp;quot;&lt;br /&gt;
| IEC 62541-4&lt;br /&gt;
| 2020&lt;br /&gt;
| OPC Unified Architecture – Part 4: Services&lt;br /&gt;
|- style=&amp;quot;vertical-align:top&amp;quot;&lt;br /&gt;
| IEC 62541-5&lt;br /&gt;
| 2020&lt;br /&gt;
| OPC Unified Architecture – Part 5: Information Model&lt;br /&gt;
|- style=&amp;quot;vertical-align:top&amp;quot;&lt;br /&gt;
| IEC 62541-6&lt;br /&gt;
| 2020&lt;br /&gt;
| OPC Unified Architecture – Part 6: Mappings&lt;br /&gt;
|-&lt;br /&gt;
|IEC 62541-7&lt;br /&gt;
|2020&lt;br /&gt;
|OPC Unified Architecture – Part 7: Profiles&lt;br /&gt;
|- style=&amp;quot;vertical-align:top&amp;quot;&lt;br /&gt;
| IEC 62541-8&lt;br /&gt;
| 2020&lt;br /&gt;
| OPC Unified Architecture – Part 8: Data Access&lt;br /&gt;
|-&lt;br /&gt;
|IEC 62541-9&lt;br /&gt;
|2020&lt;br /&gt;
|OPC Unified Architecture – Part 9: Alarms and Conditions&lt;br /&gt;
|-&lt;br /&gt;
|IEC 62541-10&lt;br /&gt;
|2020&lt;br /&gt;
|OPC Unified Architecture – Part 10: Programs&lt;br /&gt;
|-&lt;br /&gt;
|IEC 62541-11&lt;br /&gt;
|2020&lt;br /&gt;
|OPC Unified Architecture – Part 11: Historical Access&lt;br /&gt;
|-&lt;br /&gt;
|IEC 62541-12&lt;br /&gt;
|2020&lt;br /&gt;
|OPC Unified architecture – Part 12: Discovery and global services&lt;br /&gt;
|-&lt;br /&gt;
|IEC 62541-13&lt;br /&gt;
|2020&lt;br /&gt;
|OPC Unified Architecture – Part 13: Aggregates&lt;br /&gt;
|-&lt;br /&gt;
|IEC 62541-14&lt;br /&gt;
|2020 &lt;br /&gt;
|OPC Unified architecture – Part 14: PubSub&lt;br /&gt;
|-&lt;br /&gt;
|IEC 62541-100&lt;br /&gt;
|2015&lt;br /&gt;
|OPC Unified Architecture – Part 100: Device Interface&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[OPC Data Access]]&lt;br /&gt;
* [[OLE for process control]]&lt;br /&gt;
* [[OPC Foundation]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
== Literature ==&lt;br /&gt;
* Wolfgang Mahnke, Stefan-Helmut Leitner, Matthias Damm: &amp;#039;&amp;#039;OPC Unified Architecture.&amp;#039;&amp;#039; Springer Verlag 2009; {{ISBN|978-3-540-68898-3}}&lt;br /&gt;
* Lange, J., Iwanitz, F., Burke, T. OPC From Data Access to Unified Architecture 2010; {{ISBN|978-3-8007-3242-5}}&lt;br /&gt;
&lt;br /&gt;
{{Automation protocols}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Application programming interfaces]]&lt;br /&gt;
[[Category:Industrial automation]]&lt;br /&gt;
[[Category:Computer standards]]&lt;/div&gt;</summary>
		<author><name>RS-485</name></author>
	</entry>
</feed>