Consent End User License Agreement (EULA)
Before downloading the software, please confirm that you have read and accept the End User License Agreement in all points...
Consent End User License Agreement (EULA)
Before downloading the software, please confirm that you have read and accept the End User License Agreement in all points...
PLCcom Opc Ua Client + Server Sdk
Downloads and Resources
SDK – Informations
EU Compliance (CRA)
Cyber Resilience Act (EU 2024/2847)
Dokumentation PLCcom Opc Ua Sdk
Java API-Referenz Client + Server SDK (JavaDoc)
Java API-Referenz PubSub (JavaDoc)
Appendix A – Security Guide .NET
Appendix B – OPC UA Client Guide .NET
Appendix C – OPC UA Server Guide .NET
Appendix D – OPC UA PubSub Guide .NET
Changelog PLCcom.Opc.Ua.Sdk
Version 10.5.6
- New: UDP broadcast has been added as an additional brokerless UDP transport mode. This allows PubSub messages to be distributed to multiple subscribers within a local broadcast network.
- Changed: HTTPS/TLS certificates for opc.https endpoints are now selected on a per-port basis – a default certificate plus optional, different assignments per port (more stable than DHCP/SNI, suitable for port forwarding).
- Breaking change: The host-based function `assignHttpsCertificate(…)` has been removed and replaced by port-based assignment; this function had only been introduced in the previous version, 10.5.2.
- Bug fix: When there were multiple opc.https endpoints with different certificates, the same certificate was being served across the board – each port now uses its assigned certificate.
- Bug fix: Port-specific HTTPS certificate assignments are now retained even after a server restart.
- Bug fix: Fixed an error that occurred when writing to variables without an initial value in a synchronous operation, if the current value was null.
Version 10.5.2
- New: UDP broadcast has been added as an additional brokerless UDP transport mode. This allows PubSub messages to be distributed to multiple subscribers within a local broadcast network.
- Bug fix: Fixed an error that occurred when writing to variables without an initial value in a synchronous operation, if the current value was null.
Version 10.5.1
- New: The OPC UA PubSub add-on has been released as a separate NuGet package, PLCcom.Opc.Ua.PubSub. The package enables the development of OPC UA PubSub publisher and subscriber applications using a simple Fluent API.
- New (PLCcom.Opc.Ua.PubSub): Supported transport modes: UDP Unicast and Multicast (brokerless, UADP encoding), MQTT with UADP encoding, MQTT with JSON encoding, and sMQTT (MQTT over TLS) for all broker-based transports.
- New (PLCcom.Opc.Ua.PubSub): PKI-based TLS certificate management in accordance with the OPC UA standard, Mutual TLS (mTLS) and dynamic field detection via OPC UA PubSub Metadata Exchange.
- New (PLCcom.Opc.Ua.PubSub): CertificateValidation event added for validating broker certificates — handled in the same way as with the UaClient.
- New (PLCcom.Opc.Ua.PubSub): Automatic reconnection following a disconnection from the MQTT broker, with a configurable interval.
Version 10.4.2 (Java version only)
- Bug fix: Fixed an issue where the endpoint could not be bound if the base address contained a hostname with underscores.
- The server now listens on all network interfaces rather than on a specific IP address if a hostname is configured as the base address.
- Bug fix: Fixed an issue where the system would incorrectly fall back to the loopback address and default port when the base address could not be parsed.
Version 10.4.1
- Improved stability and compatibility of the internal communication layer.
- New diagnostic tools have been added to enable more accurate diagnosis of configuration errors.
- DataValue now supports direct initialisation with all built-in OPC UA data types: bool, sbyte, byte, short, ushort, int, uint.
- Improved robustness when writing values, particularly through optimised handling of zero values in write operations.
- Various internal stability improvements.
Version 10.3.4
- Improved stability and compatibility of the communication layer.
- ServiceResultException: New helper methods ConfigurationError() and Unexpected() for more precise error diagnosis.
- StructureDefinition: New property FirstExplicitFieldIndex for correct inheritance resolution with complex data types.
- EnumDefinition: New IsOptionSet property to distinguish between bitmask enumerations.
- Improved certificate validation: The callback now takes full precedence over internal validation logic.
- Performance improvements to the keep-alive and reconnect mechanisms.
- The server application certificate is now explicitly set using `config.setInstanceCertificate()` – in the same way as in the client SDK.
- The ApplicationUri in the certificate now matches the configured server ApplicationUri.
- The certificate is saved as a .der file in pki/own/certs/ and the private key as a .pem file in pki/own/private/.
- When the server starts up, the complete PKI directory structure is created automatically.
- If a CertificateValidationListener is registered, it is evaluated before PKI validation takes place – accepted certificates are no longer placed in the 'rejected' folder.
- Unknown client certificates are automatically stored in the `rejected/certs/` directory and can be marked as trusted by copying them to the `trusted/certs/` directory.
- Certificate-based connection: When establishing a connection to secure OPC UA endpoints (Sign/SignAndEncrypt), the client’s ApplicationUri was not correctly synchronised with the URI in the application certificate, resulting in a BadCertificateUriInvalid error. Fixed.
- Tolerant ApplicationUri validation: Server certificates that contain ‘localhost’ or an IP address as the hostname are now accepted, even if the endpoint reports a real hostname.
- Error messages: Connection errors now display a readable OPC UA status code with a description, e.g. BadCertificateUntrusted “Certificate is not trusted.”, instead of a full stack trace.
- Various internal stability improvements.
Version 10.3.4 (.net version only)
- Bug fix: In WinForms applications, calling SDK methods such as AddSubscription() directly from the UI thread could cause the application to freeze. This issue was already addressed in the update to version 10.3.3; this update includes an additional fix.
Version 10.3.3 (.net version only)
- Bug fix: Fixed a deadlock in subscription methods that could occur in WinForms applications when AddSubscription(), RemoveSubscription(), ApplyChanges(), SetPublishingMode(), Modify(), and other subscription operations were called directly from the UI thread.
Version 10.3.2
- Bug fix: Fixed a deadlock in AddSubscription(), RemoveSubscription(), and the Reconnect and KeepAlive logic that could occur when these methods were called from a WinForms UI thread
- Update ( .NET version): The following dependencies have been updated to version 10.0.7: Microsoft.Extensions.Logging, Microsoft.Extensions.Logging.Abstractions, System.Diagnostics.DiagnosticSource, System.Formats.Asn1, System.Text.Json, and System.Collections.Immutable
Version 10.3.1
- New: PLCcom OPC UA SDK is CRA (Regulation (EU) 2024/2847, Cyber Resilience Act) certified
- New: IHistoryStore – a pluggable interface for the OPC UA history data store. Enables the connection of any storage backends (SQL databases, time-series databases, file systems, cloud services, and more) in place of the built-in in-memory storage
- New: IEventHistoryStore – a pluggable interface for the OPC UA event history store, similar to IHistoryStore for event data
- New: InMemoryHistoryStore and InMemoryEventHistoryStore as default implementations of the new interfaces (previous behavior remains unchanged)
- New: server.HistoryStore and server.EventHistoryStore – properties for globally registering a custom store; alternatively, a store can be assigned directly to a variable or source node using EnableHistory() or EnableHistoryEvents()
- Sicherheit: AutoAcceptUntrustedCertificates ist nun standardmäßig false (vorher true) – entspricht den Anforderungen des Cyber Resilience Act (CRA). Anwendungen, die sich auf den bisherigen Standard verlassen haben, müssen AutoAcceptUntrustedCertificates explizit auf true setzen
- Neu: UaClient.GetEndpoints() und GetAllEndpoints() validieren das Server-TLS-Zertifikat bei opc.https nun korrekt über den OPC UA CertificateValidator. Bisher wurde das TLS-Zertifikat während der Discovery stillschweigend akzeptiert
- New: UaClient.FindServers() now correctly validates the server TLS certificate for opc.https using the OPC UA CertificateValidator. Previously, the TLS certificate was silently accepted during discovery.
- New: UaClient.GetEndpoints(), GetAllEndpoints(), and FindServers() now accept an optional certificateValidator parameter (CertificateValidationEventHandler) for custom validation logic, as well as an optional autoAcceptUntrustedCertificates parameter
- New: UaClient.GetEndpoints() and FindServers() now throw an exception when TLS certificate errors occur, instead of silently returning an empty list
- Fix: Discovery-URLs mit doppeltem Schrägstrich (z. B. opc.https://host//discovery) werden im Client-SDK automatisch normalisiert. FindServers() bereinigt außerdem die DiscoveryUrls in der zurückgegebenen ApplicationDescriptionCollection
- New: UaServer.CreateLimitAlarm() – creates an ExclusiveLimitAlarmType node with support for Low, High, and HighHigh alarm levels
- New: UaServer.CreateDiscreteAlarm() – creates a DiscreteAlarmType node for Boolean status alarms
- New: UaServer.CreateDialog() – creates a DialogConditionType node in which the operator must select one of several response options
- Fix: EnableEvents() baut nun korrekt eine HasNotifier-Referenzkette bis zum Server-Knoten auf und registriert den Quellknoten als Root-Notifier. Ohne diesen Fix wurden Alarm-Events nicht an abonnierte Clients weitergeleitet
- Fix: CreateAlarm(), CreateLimitAlarm(), and CreateDiscreteAlarm() now correctly set EnabledState to true. Without this fix, Acknowledge failed with a BadConditionDisabled error.
- Fixed: Activate() now correctly sets ConfirmedState to false, ensuring that the full OPC UA alarm lifecycle (Active → Acknowledge → Confirm) is completed correctly
- Fixed: Deactivate() now correctly sets Retain to true instead of false – in accordance with OPC UA Part 9 §5.5.2, the alarm remains visible in the alarm list until it is acknowledged by the operator
- Fix: DiscreteAlarmType has been added to KnownEventTypes and ConstructEvent(). Without this fix, a DiscreteAlarm was deserialized as a BaseEventState, which caused a NullReferenceException during Acknowledge
- Fixed: AlarmEvent.Acknowledge(), Confirm(), and AddComment() now check for a null EventId and throw a meaningful InvalidOperationException instead of a NullReferenceException
- Breaking Change: AlarmEvent.Respond() – Parameter changed from bool OnlineState to int selectedResponse (zero-based index in ResponseOptionSet). The previous bool interface was semantically incorrect
- New: UaServerConfiguration – 12 OperationLimits properties with sensible default values (MaxNodesPerRead/Write/Browse/RegisterNodes/TranslateBrowsePathsToNodeIds/NodeManagement/MonitoredItems=1000, MaxNodesPerHistoryRead/HistoryUpdate=100, MaxNodesPerMethodCall=200)
- New: UaServerConfiguration – 3 VendorServerInfo properties (VendorName, VendorProductName, VendorProductVersion) are automatically entered into the OPC UA address space under Objects/Server/VendorServerInfo
- New: UaServer.PopulateServerNodes() – automatically populates VendorServerInfo, the Namespaces entry (NamespaceMetadataType), and OperationLimits in the OPC UA address space after the server starts, in accordance with OPC UA Part 5
- New: UaServer.AddNamespace() automatically adds the registered namespace as a NamespaceMetadataType node under Server/Namespaces – clients can discover all of the server's namespaces directly in the address space
- Fix: NamespaceMetadataType-Knoten unter Server/Namespaces erhalten nun die NodeId des jeweils repräsentierten Namespace-Index (ns=2 für den primären Namespace, ns=3/4/… für zusätzliche Namespaces) statt immer ns=2
- Fix: GetNodeIdByPath() findet nun auch Method-Nodes
- Neu: UaRolePermissions – Fluent-Builder für OPC UA RolePermissions mit AllowRead(), AllowReadWrite(), AllowAll() und Allow()
- New: SetRolePermissions() on UaVariable, UaFolder, UaObject, UaStructVariable, UaStructArrayVariable, and UaServer – enables role-based access control for Browse, Read, Write, HistoryRead, HistoryUpdate, Subscribe, and Call
- Breaking Change: CreateVariable, CreateFolder, CreateObject, and CreateMethod now require a mandatory "permissions" parameter (UaRolePermissions) – null is not allowed
- New: UaRolePermissions.WITHOUT_RESTRICTIONS and UaRolePermissions.ALL_RESTRICTIONS as predefined constants
- New: The EndpointHostMode configuration option controls how hostnames are displayed to clients in endpoint URLs (GetEndpoints, FindServers, ReverseHello). Options: AsConfigured (default), NormalizeToHostname, None.
- New: UaLogLevel.None has been added to disable all SDK log messages.
- Fix: Reverse Connect now works with UaExpert and other clients that require the endpoint URL in the ReverseHello to match the configured BaseAddress.
- Fix: The reverse-connect client releases the listening port immediately after the session is established. This allows multiple clients to connect to the same port one after another.
- Fix: The reverse-connect server reconnects within 1 second of a channel closing. This improves compatibility with clients that require multiple connections (e.g., GetEndpoints + CreateSession).
- Fix: ImportNodeSet retrieves absolute namespace indices from the NodeSet XML file. The namespace URIs declared in the file are mapped to the correct server indices.
- Fix: IEventHistoryStore (CsvEventHistoryStore) now correctly saves and restores EventIDs. This enables deletion operations for historical events.
- Extensive internal revisions and improvements
Version 10.2.1
- Neu: Single Assembly Architektur – das gesamte SDK wird nun als eine einzige Assembly (PLCcom.Opc.Ua.Sdk) ausgeliefert.
- Neu: OPC UA HTTPS Transport Support – Client und Server unterstützen nun neben opc.tcp auch opc.https Endpoints
- Neu: GetAllEndpoints() Methode im UaClient – liefert alle verfügbaren Endpoints unabhängig vom Transport-Protokoll. GetEndpoints() filtert weiterhin nach dem verwendeten Transport
- New: HttpsMutualTls property in UaServerConfiguration to control mutual TLS authentication for HTTPS connections (default: disabled)
- New: The server automatically generates HTTPS endpoints for all configured security policies (similar to the previous behavior with opc.tcp)
- Bug fix: ApplicationUri is now generated independently of the transport protocol (urn:hostname:processname), resolving certificate issues when switching between opc.tcp and opc.https connections
- Extensive internal revisions and improvements
Version 10.1.6
- Major-Update Version 10
- New: .net 10.0 Support
- New: In addition to the client SDK, a comprehensive server SDK is now included to facilitate the development of OPC UA server applications
- New: Various updates to align with the current OPC UA specification from the OPC Foundation
- Extensive internal revisions and improvements
Version 9.2.4.1 (.net version only)
- New: In response to customer requests, the option has been introduced to accept server-side certificates that contain errors that cannot actually be suppressed according to the Opc specification. For this purpose, the CertificateValidationEventArgs object has been extended by the AcceptAll flag
Version 9.2.1 (Java Version only)
- Bugfix: Discovery Endpoints aborts with a NullPointerException if an endpoint was not correctly transferred from the Opc Ua server
- internal improvement
Version 9.1.5 (Java Version only)
- Bugfix: Possible java.lang.NoSuchMethodError when using Java version 8
Version 9.2.3.1 (.net version only)
- Bugfix: When writing UIn16 and UInt32 values, problems could occur when transferring values if a casting of the value to the data type Variant was missing
Version 9.2.2.1 (.net version only)
- Elimination of known vulnerabilities Third-party libraries
- Introduction of a flag (TolerateFaultyServerState) with which an automatic reconnect can be prevented if the status of a connected Opc Ua server is not “Running”.
- Several minor internal revisions and improvements
Version 9.1.2
- Elimination of internal vulnerabilities, as well as known vulnerabilities of the third-party libraries used
- Support of the .Net 8.0 framework (only .Net version)
- various internal revisions and improvements
Version 8.1.1
- further adaptations of the Sdk to the current Opc Ua specification
- Elimination of internal vulnerabilities, as well as known vulnerabilities of the used third-party licenses
- Adaptation package naming, see Firststeps document in download package (Java version only)
- Support for .Net 7.0 framework (.Net version only)
- various internal revisions and improvements
Version 7.4.1 (Java version only)
- Security update due to vulnerabilities in the dependencies of Bouncy Castle V1.54 and guava V21.0
Version 7.3.2
- Revision of the reconnect functions
- Internal changes to improve the processing speed
Version 7.2.2 (Java version only)
- Support Java / OpenJRE up to version 19
- Adaptation methods for loading certificates
- Bugfix: possibly occurring problem with endpoint discovery with exception Bad_InvalidTimestamp fixed
- Revision sample code in download package
Version 7.1.3
- new function browseFull, all necessary browse and browseNext operations are combined to one function call
- License may not be accepted even though it is valid
- Bugfix: Function browseNext passes possibly wrong continuationPoint
Version 7.1.1
- Support for .Net 6.0 framework (.Net version only)
- Support Java / OpenJRE up to version 17 (Java version only)
- new Function GetNodeIdByPath
- various internal improvements and revisions
Version 6.1.1
- Support of the .Net 5.0 framework
- Fix problem rebuilding Subscriptions and MonitoredItems after connection loss
- Fix problem, high CPU / RAM usage after restart of OPC server
- internal improvements and revisions
Version 5.1.8 (Java version only)
- Fixed problems when using under Java 1.8 (wrong class version of MonitoredItemNotificationListener)
Version 5.1.4 (Java version only)
- Bugfix: Issuing a "self signed certificate" fails due to country-specific requirements
Version 5.1.3
- Complete revision of the routines according to the specifications of the OPC Foundation
- Provision also for .Net Standard / .Net Core (.Net version only)
- Provision also for openJRE/openJDK (Java Version only)
- internal speed and stability improvement
Version 4.3.1
- Bugfix: For incorrect host names in the endpoint URL
- internal speed and stability improvement
Version 4.1.0
- Support of registered read and write
- Adaptations to the current OPC UA specifikation
- Bugfixes
- internal speed and stability improvement
Version 3.6.4
- Endpoints with IP 0.0.0.0 in the URL will now be tolerated
Version 3.6.3
- detailed error message during certificate validation
Version 3.6.2
- Bugfix: Brows nodes
Version 3.6.1
- new improved functions to perform call method calls
- Extension of the "read" and "write" functionalities
- Adaptation and extension of the online documentation
- Adaptation and extension of the "First Steps" tutorial
- Delivery of the product no longer as a setup, but within a zip file
Version 3.5.0
- Bugfix: While transferring an identitytoken object (Username + Password)
- Extension of the Discovery functionality, the transfer of a Discovery Uri is also possible now.
Version 3.4.0
- Bugfix: Starting an ASP application
Version 3.3.0
- Bugfix: Browser description adjusted
Version 3.2.8
- Bugfix: Processing certificate check
Version 3.2.6
- improved sorting behavior when querying endpoints
- Setup is signed
Version 3.2.5 (Java version only)
- Bugfix: When sending encrypted passwords
Version 3.2.4
- Bugfix: GetFilteredEndpoints always used the Discoveryport 4840
Version 3.2.3
- Bugfix: Optimization of cache functionality when loading
- Revision of the constructor of the session configuration
- new static method Build () for easy creation of session configurations
- Adjusting of online documentation
- Adjusting of browsemethods, if the UA-server supports inverse browsing according to specification
- new filter methods
Version 3.2.0 (Java version only)
- Bugfix: When filling the internal node cache, not all types of nodes have been considered
Version 3.1.0
- internal speed improvements
- Bugfix: Internal cache is used consistently
Cyber Resilience Act (CRA) – EU compliance documents (EU 2024/2847)
Security contact: [email protected]
PLCcom Opc Ua Sdk .NET
PLCcom Opc Ua Sdk Java

