Version 7.8.0

Build: 7.8.0-881

Release date: 8.5.2024

This is a new minor release of Prosys Sentrol. It adds support for the new Clang based 64-bit C++ compiler that was added by Embarcadero in RAD Studio (C++Builder) version 12.1 Athens.

The installation packages have been cleaned out of C++ libraries for the Classic 64-bit compiler, which will not be fixed to support the ProsysOPC.UaClient/Server libraries. Instead, you should use the new compiler, if you wish to compile your C++ applications in 64-bit.

Note that the changes should not affect any Delphi compilation, which works fine with the 64-bit libraries that have been included already in the previous Sentrol versions. Also, all Sentrol Classic (non-OPC UA) libraries work fine also with the Classic 64-bit C++ compiler.

Changes to Common Functionality

  • Fixed: 64-bit C++ libraries for OPC UA Client and Server development.

The libraries for the new C++ 64 Modern compiler profile are installed in the 'libNNNx64x' folder (where 'NNN' refers to the VCL version, for example '290' for Delphi/C++Builder 12), whereas the libraries for the 64-bit Delphi and Classic C++ compiler are in 'libNNNx64'.

Changes to OPC Classic functionality

No changes

Changes to UaStack

No changes

Changes to Common OPC UA Functionality

No changes

Changes to UA Client

No changes

Changes to UA Server

Fixed: Minor sanity checks for the Subscription events, to avoid calling them with nil values.

Changes to Samples

  • Fixed: TUaCppSampleServerForm::UaServerValidateCertificate

Changes to Tutorial

Version 7.7.2

Build: 7.7.2-873

Release date: 20.3.2024

This is a new bug fix release of Prosys Sentrol.

In addition to a couple of major fixes, it contains new events for TUaServer to enable monitoring sessions and subscriptions.

It also fixes the reading and handling of RolePermission attributes of Variables mostly relevant to the client applications.

On the server side we have also fixed subscription management, regarding KepServerEX OPC UA client applications and possibly some other clients as well.

As usual, we recommend all users to upgrade to this version.

Changes to Common Functionality

No changes

Changes to OPC Classic functionality

No changes

Changes to UaStack

  • Version 1.0.4.12 of the UaStack DLL

  • SECURITY FIX: (CVE-2023-41151)

  • Fixed: Encoding and decoding of PermissionType (used as part of the new (User)RolePermission attributes in variables)

Changes to Common OPC UA Functionality

No changes

Changes to UA Client

No changes, apart from the stack change that affects the client side reading of the RolePermission attributes.

Changes to UA Server

  • New: TUaServer.OnAfterCreateSession, OnAfterActivateSession & OnAfterCloseSession

  • New: TUaServer.OnAfter(Create/Modify/Delete)Subscription

  • New: TUaServer.OnAfter(Create/Modify/Delete)MonitoredDataItem

  • New: TUaServer.OnAfter(Create/Modify/Delete)MonitoredEventItem

  • New: TUaSubscriptionManager.GetSubscriptions

  • New: TUaSubscriptionManager.OnAfterCreateSubscription & OnAfterDeleteSubscription

  • Fixed: Handling of PublishRequest timeouts; the UaServer was not sending any responses in this case, effectively breaking subscription monitoring in the clients.

  • Fixed: Interpret PublishRequest timeout of 0 as infinite, instead of immediate. Breaks connections with KepServerEX clients, for example.

  • Fixed: CheckInputArguments for array elements

  • Fixed: AV/OutOfMemory errors in CloseSession

  • Fixed: Memory leak from TUaModelInfo

Changes to Samples

  • New: TUaSampleServerForm.SessionTab - and logic based on the new TUaServer events to show how to track sessions and subscriptions in the UI

Changes to Tutorial

  • Small refactorings

  • Fixed: WriteDynamicStructureValue C++ example

Version 7.7.0

Build: 7.7.0-866

Release date: 2.1.2024

This is a new minor release of Prosys Sentrol.

This version adds support for Delphi & C++ Builder 12 Athens and OPC UA 1.04.11.

It also includes several quality improvements both in OPC Classic and UA implementations, including OPC UA security fixes. The OpenSSL 1.0.2 and UaStack 1.04 DLLs have also been built with latest updates and the UaNodeset2.xml has been updated to version 1.04.11.

This version includes clean up to internal exception usage, mainly in the OPC UA Server implementation, in order to not break the applications, when they are run from the RAD Studio IDE, unnecessarily.

As usual, we recommend all users to upgrade to this version.

Changes to Common Functionality

  • Changed: Added BuildDate to TPsVersionInformation

Changes to OPC Classic functionality

  • Fixed: Access Violation in TPsOPCServer.ReadItemValues

  • Fixed: OPC DA Server (TPsOPCProvider) could throw an unexpected exception for items that are not found from the server

  • Fixed: TPsOPCProviderGroup.ForEachItem; Exceptions from empty OPC DA writes causing unexpected problems.

  • Fixed: RangeCheck error in TPsOPCTransaction - ID is Cardinal, not Integer!

  • Fixed: RangeCheck error in TPsBitSet

Changes to UaStack

  • Version 1.0.4.11 of the UaStack DLL and UaNodeSet

  • Changed: Store rejected certificates using a filename that contains the ApplicationName (as the SDK does anyway)

  • Security Update: OpenSSL Libraries updated (see redist/OpenSSL_CHANGES)

Changes to Common OPC UA Functionality

  • BREAKING CHANGE: properties and parameters of type TUaCertificate replaced with IUaCertificate in TUaSecureIdentity and most methods of TUaCertificateStore, except NOT in the OnValidateCertificate event of TUaClient and TUaServer (to avoid compatibility issues).

  • New: IUaCertificate

  • New: IUaPrivateKey

  • New: TUaNodeId.AsByteString

  • New: TUaOperationLimits.OnChange

  • New: ToBuilder method added to every specific OPC UA Structure interface type.

  • Fixed: TUaVariant.GetArrayLength for empty arrays.

  • Fixed: EInvalidPointer, when encoding DynamicStructures with String TypeIds

  • Fixed: TUaArgument.GetFieldValues

  • Fixed: TUaVariant.Create<T> with Integer subtypes (e.g. TUaValueRank)

  • Fixed: TUaVariant.Equal with structures

  • Fixed: TUaVariant.AsType<T> with structure types and null values

  • Fixed: TUaStructureXBuilder.Init with nil arguments

  • Fixed: Use 'UTCNow' instead of 'Now' in TUaVariableType.DataValue

Changes to UA Client

  • New: Try to recreate failed subscriptions after reconnect (always)

  • New: IUaSubscription.RecreateFailedItems to define whether to try creating failed monitored items again after reconnect (on by default)

  • New: TUaClient.SecurityTokenLifetime (now configurable)

  • Fixed: Handle ServiceFaults for PublishRequests

  • Fixed: Improved thread safety for subscription management

  • Fixed: TUaAddressSpaceBrowser design time behavior

  • Fixed: TUaConnector & Subscription.TransferTo (mem leak)

  • Changed: Try to create MonitoredItems also with NullNodeId or Invalid Attribute

Changes to UA Server

  • SECURITY FIX: TUaServer to return Bad_SecurityChecksFailed for all validation errors (not more specific errors)

  • New: TUaSessionManager.GetSessions & CloseSession

  • New: TUaSubscriptionManager.Min/MaxPublishingInterval

  • New: TUaOperationLimits.OnChange

  • New: TUaAlarmConditionType.Input

  • New: Implement RegisterNodes and UnregisterNodes in UaServer (Naive interoperability fix)

  • Fixed: TUaNodeManagerUaNode.RemoveNode to remove child nodes as well

  • Fixed: Event objects not properly removed after sending

  • Fixed: TUaServer.OperationLimits

  • Fixed: Access Violation in TUaDataType.InitStructureDefinition for BaseDataType

  • Fixed: Do not reinitialize SessionManager properties in TUaServer.Init

  • Fixed: Initialization of States of ConditionTypes

  • Fixed: Call TUaServer.OnCreateSession only after the session has been validated

  • Fixed: Initialization of BuildInfo as part of ServerStatus

Changes to Samples

  • New: Log view in UaSampleClient

  • New: UaSampleServer to close session when client cert rejected (to demonstrate the new CloseSession)

  • New: TUaSampleServerForm.InitBuildInfo

  • Removed: TUaSampleClientForm.UseOfDiscoveryServerSelected

  • Fixed: ApplicationType of the samples

  • Fixed: TMonitoredItemListItem.MonitoredItem wrapping Data instead of using a private field: avoids updates stopping in some UI situations

Changes to Tutorial

  • Small refactorings

  • Fixed: WriteDynamicStructureValue C++ example

Version 7.6.0

Build: 7.6.0-842

Release date: 15.6.2023

This is a new minor release of Prosys Sentrol.

The release includes a new component UaConnector, which enables rapid "no-code" development of client applications. The connector ties the OPC UA Client component with the legacy components that make Prosys Sentrol a unique component set. Following the design of the Classic OPCConnector, the UaConnector enables automatic data transfer from OPC UA servers to Sentrol Variables and from thereon to the rest of the Sentrol framework components, including user interface, database and basic mathematical functions. See the updated (/sentrol/help/SentrolTutorial.pdf[Sentrol Component Framework Tutorial]) for more details on this powerful component set.

There are also some performance and functionality improvements to the OPC UA functionality. Therefore we recommend all customers to update their applications to use the latest version.

Changes to Common Functionality

  • Fixed: TPsChart draw spec lines correctly in Vertical mode

  • New: PsUtils.URLEncode

  • New: PsUtils.DateTimeToISO8601

Changes to OPC Classic functionality

  • No changes

Changes to UaStack

  • No changes

Changes to Common OPC UA Functionality

  • No changes

Changes to UA Client

  • Removed obsolete unit ProsysOPC.UaClient.Nodes

  • New: TUaConnector

Changes to UA Server

  • Fixed: Memory leaks in node instantiation cache (were not released when applications close)

  • New: Support DataTypeDefinition Attribute instead of DataTypeDictionary, if the Nodesets use those

  • Optimised TUaNode.HasReference to enable thousands of references in nodes without extra performance issues

Changes to Samples

  • Fixed ProsysOPC.UaSampleClient: Show the Names of custom ReferenceTypes in ReferenceListview

  • Rearranged legacy Sentrol component samples

  • Renamed: EventLogSample to EventLog

  • Renamed: OPCSample to OPCSampleGUI

  • Renamed all forms in the sample projects to have unique names

  • New: UaSampleGUI

Changes to Tutorial

  • Legacy Tutorial rewritten with OPC UA examples and projects.

  • Removed old Delphi project files - if you still need them, please let us know.

  • Renamed all forms in the Tutorial projects to have unique names

  • Updated: LessonUa4_Storage examples - each driver (DbX, ADO, IBX) initialization to it’s own form

  • New: LessonUa2_UaConnector

  • New: LessonUa3_Trends

  • New: LessonUa9_CreateComponentsInCode

Version 7.5.2

Build: 7.5.2-818

Release date: 24.2.2023

This is a new bug fix release of Prosys Sentrol.

The release includes several performance and data handling improvements both in the OPC UA client and server development and we recommend all customers that use the OPC UA functionality in their products to update to this version.

There are also important security fixes in the release that affect the OpenSSL components used by the OPC UA components. Therefore we recommend everyone developing OPC UA applications to update to this version and also verify the version of the components that you are distributing along with your applications (libeay32.dll, ssleay32.dll).

Changes to Common Functionality

No changes

Changes to OPC Classic functionality

No changes

Changes to UaStack

No changes

Changes to Common OPC UA Functionality

  • SECURITY FIX (OpenSSL Security Advisory [7th February 2023, except CVE-2022-4304]): OpenSSL libraries that are included are updated to version 1.0.2v-dev (1.0.2.22, build date 2023-02-21) - this is our own build that fixes these security issues. UPDATE your own OPC UA applications to use this one or the official version 1.0.2zg. See the 'redist' folder in the installation for more details.

  • RENAMED: TUaTypeDictionary.Clear renamed from ClearCaches

  • New: TUaTypeDictionary.Init

  • Fixed: TUaGlobalNamespaceTable.ParseQualifiedName to use 0 Namespace if not specified

  • Fixed: TUaVariant.LessThanOrEqual

  • New: TUaVariant.AsDataType

  • New: TUaVariant.Create with Variant and DataTypeId

  • Fixed: Improved support for structure arrays

  • Fixed: Handling of empty ByteStrings

  • Fixed: Thread safe TUaStack.Initialiaze/Finalize

Changes to UA Client

  • Fixed: Custom structure values in event fields did not work

  • New: IUaSubscription.ConditionRefresh

  • New: TUaClient.Call with a single argument

  • New: TUaClient.Call with array of Variant

Changes to UA Server

  • Fixed: Refresh conditions in TUaEventManager.Refresh

  • Fixed: ServerStatus not updated at Shutdown

  • Fixed: UaSampleServer to use default RetransmissionQueue (100)

  • Fixed: Subscription handling performance improved

Changes to Samples

  • Fixed: UaSampleServer: set MyAlarm.Retain in (In)ActivateAlarm

  • New: Dynamic.Boolean in UaSampleServer to change value between odd/even numbers

  • Fixed: UaSampleClient EventView

  • Fixed: Create only one MonitoredEventItem

  • New: EventViewRefreshButton & Action

  • New: UaSampleClient.SearchNodeAction

  • New: GetBrowsePath & ExpandBrowsePath

Changes to Tutorial

Minor details to UaLesson1

Version 7.5.0

Build: 7.5.0-802

Release date: 21.7.2022

This is a new minor release of Prosys Sentrol.

The release includes important improvements to the OPC UA implementation, which is based on version 1.04.10 of the OPC UA specification. Both the OPC UA Stack and the Nodeset that is used to initialize the server applications are updated accordingly.

This version adds major OPC UA functionality to the server side implementation, including instantiation of objects and variables based on the respective type definitions. This enables creating complete object structures with components and properties. Furthermore, the SDK also includes Delphi and C++ class definitions for all standard types. This enables easier usage of any OPC UA types in the initialization of the server.

With the help of instantiation it became also possible to support all standard event and alarm types.

TThe release also adds support for OPC UA Historical Access on the server side, in addition to the respective functionality that was already available on the client side. This is demonstrated by the sample MyHistorian that is added to the UaSampleServer project (and the respective MyCppHistorian) for UaCppSampleServer).

There are also important security fixes in the release. These affect especially the OPC UA Stack and OpenSSL components that the OPC UA SDK is using. Therefore we recommend everyone to update to this version and also verify the version of the components that you are distributing along with your applications (UaStack_32/64.dll, libeay32.dll, ssleay32.dll and Opc.Ua.NodeSet2.xml).

Also the Windows DCOM Server Security Feature Bypass issue is now fixed by default

See the CVE-links below for more details on the security fixes.

There are some new units that you need to take in use (ProsysOPC.UaBase.Types and ProsysOPC.UaServer.Types, especially). These are required by restructuring the classes, especially resulting from the new OPC UA type definitions.

Changes to Common Functionality

  • SECURITY FIX (CVE-2021-3541): TPsSAXParser: Fix theoretical vulnerability to ParameterLaughs by using the 'prohibit-dtd' flag with the MSXML parser and by preferring MSXML version 6.0 over 3.0

Changes to OPC Classic functionality

  • SECURITY FIX (CVE-2021-26414): Initialize DCOM by default with 'PsInitComSecurity(alPacketIntegrity, ilIdentify)'

Changes to UaStack

  • IMPORTANT: UaStack DLL Version 1.0.4.10 - UPDATE your OPC UA applications to use this one.

  • IMPORTANT: Opc.Ua.Nodeset2.xml version 1.04.10 - UPDATE your OPC UA servers to use this one.

  • IMPORTANT: Opc.Ua.Di.Nodeset2.xml version 1.03.1 - UPDATE your OPC UA servers to use this one, if you use it.

  • SECURITY FIX (CVE-2021-42577): A malformed OPC/UA message abort packet makes the client crash with a NULL pointer dereference.

  • SECURITY FIX (CVE-2021-45117): Allows a malicious server to produce a null pointer error in the client.

  • Fixed: Support Certificate Chains

  • New: UaStack.UaStackTraceLevel and UaStackChangeTraceLevel

  • New: TUaStack with properties for Stack Configuration to enable initialization.

Changes to Common OPC UA Functionality

  • SECURITY FIX (CVE-2022-0778): OpenSSL libraries that are included are updated to version 1.0.2v-dev (1.0.2.22) - this is our own build that fixes the latest security issues, the official version 1.0.2zd has the same fix included - UPDATE your OPC UA applications to use either one. See the 'redist' folder in the installation for more details.

  • NEW UNIT: ProsysOPC.UaBase.Types - base structure types are moved in here from ProsysOPC.UaBase, so you will need to add it to most of your uses declarations.

  • Fixed: SecurityAlgorithm.RsaOaep256 had wrong URI

  • Fixed: AV when moving a certificate from rejected to trusted certificates

  • Fixed: TUaDynamicStructure.IsPresent

  • Fixed: TUaDataValue.ValueAsString to not use Quotes around string values

  • Fixed: TUaAddress to correctly parse port number from an IPv6 address

  • Changed: TUaNamespace.Create(NamespaceURI) is now a static method, instead of a constructor, ensuring the singleton instances are always used from the GlobalNamespaceTable

  • Changed: TUaVariant.ToString to use QuotedStr only when specifically instructed.

  • New: TUaEUInformationTable

  • New: ProsysOPC.UaBase.TRUSTED_AND_VALID constant

  • Changed: Renamed TUaContinuationPoint to TUaBrowseContinuationPoint

  • New: TUaHistoryContinuationPoint

  • New: TUaNode.NodeIdFormat & NodeIdArrayElementFormat

  • New: NullNamespace - used for empty NamespaceURI

Changes to UA Client

  • New: Support DataTypeDefinition Attribute instead of DataTypeDictionary, if the server supports that for custom Structure types.

Changes to UA Server

  • NEW UNIT: ProsysOPC.UaServer.Types - includes Delphi/C++ Classes that implement all OPC UA standard types; ObjectTypes, VariableTypes and DataTypes (most standard DataTypes are still included in ProsysOPC.UaBase.Types (see above), though)

  • NEW UNIT: ProsysOPC.UaServer.Models

  • NEW UNIT: ProsysOPC.UaServer.Instantiation

  • Fixed: ArrayDimensions data type to UInt32 (was Int32)

  • Fixed: Use default values for RequestedParameters if not defined (UaExpert Performance View problem)

  • Fixed: Do not enable MonitoredEventItem for a Variable node or Object Node without EventNotifier including SubscribeToEvents.

  • New: Implemented HistoryManager.HistoryRead and add OnReadRaw

  • New: TUaServer.NodeBuilderConfiguration

  • New: TUaSessionManager.MaxBrowseContinuationPoint/MaxHistoryContinuationPoint

  • New: TUaNodeManagerUaNode.CreateInstance

  • New: TUaNodeManagerUaNode.CreateEventInstance

  • New: TUaNodeManagerUaNode.CreateNodeBuilder

  • New: TUaNodeManagerUaNode.NodeBuilderConfiguration

  • New: TUaNodeManagerUaNode.AutoExposeElements

  • New: TUaNodeManagerUaNode.AutoExposeArray

  • New: TUaNodeManagerUaNode.AutoExposeWithOwnNamespace

  • New: TUaNodeManager.CreateNodeId, CreateNodeIdForArrayElement, NodeIdFormat, NodeIdForArrayElementFormat

  • New: TUaNode.CreateNodeId, CreateNodeIdForArrayElement

  • New: TUaNode.GetAttributes

  • New: TUaNode.AddInstance

  • New: TUaObject.TriggerEvent

  • New: Read Value fields from the Nodeset files to the respective Variable nodes

Changes to Samples

  • Changed: SampleServers use a separate NodeManager for Types that they load from SampleNamespace.xml and Instances that they create

  • New: MyHistorian and CppMyHistorian in the ProsysOPC.UaSampleServer and UaCppSampleServer projects

  • New: TUaSampleServerForm.MyAlarm

  • New: TUaSampleServerForm.CreateAnalogItem

  • New: Toggle Tracing for the UaStack with Ctrl+Shift+T / Debug Level Tracing with Alt+Shift+T

Changes to Tutorial

  • Updated to reflect the changes

  • More sample code, especially for C++

Version 7.4.0

Build: 7.4.0-776

Release date: 19.10.2021

This is a new minor release of Prosys Sentrol.

This version adds support for Delphi & C++ Builder 11 Alexandria.

There are also improvements to interoperability and usage of custom structure data types. On the OPC UA server side, there are new component events that help tracking and controlling OPC UA client behavior.

The C++ Compiler Optimization Settings -O2 (default for Release builds) and -O3 cause runtime errors (for unknown reasons) and you should use only -O1 optimization. Please check the C++ COMPILATION - OPTIMIZATION ERRORS in the Installation Notes (install.txt) for details.
The Sentrol IBX components are not enabled by default any more (since IBX is not installed by default in Delphi either). The package is installed, so you will just need to enable it, if you wish to use the components.

Changes to Common Functionality

  • New: TPsStringList.CSVPrefix

  • Fixed: TPsStringTree.Prefix is consistently used whenever saving and loading the tree from a stream or file

Changes to UaStack

  • Version: 1.0.4.3

  • Fixed: Possible crash in OpcUa_BinaryDecoder_ReadNodeId

  • Fixed: Socket options for Receive of Send Buffer sizes are not set to 65536 anymore. This was causing strange 5 second delays at some client connections.

Changes to Common OPC UA Functionality

  • Fixed: Encode Boolean True as 01 instead of FF

  • Fixed: Convert OPCUA_DateTime=0 (1/1/1601) always to TDateTime=0 (30/12/1899) - was converting to a negative value corrersponding to (1/1/1601)

  • Fixed: Encoding and decoding field values of custom structure data types

  • Fixed: UaVariantToString

  • Fixed: Memory management and encoding arrays

  • Fixed: Handle decoding errors of DataValues and set the StatusCode respectively to Bad_DecodingError instead of failing to decode complete messages (Read or DataChange, for example)

  • Fixed: Variant values of OPC UA Float DataType were converted to Double instead of Single

  • Fixed: Support arrays of Variant values

  • Fixed: TUaCertificate.ParseCertificate

  • Changed: Array properties in structures available as TArray<> instead of an indexed Delphi array property.

  • Improved: Validate FieldName and DataType in DynamicStructureBuilder.SetFieldValue()

  • Improved: New optional parameters for KeySize and ValidDays in TUaApplicationIdentity.LoadOrCreateCertificate

  • New: TUaVariant.AsFloat (returns the value as Single)

  • New: IUaStructureBuilder ("renamed" from TUaStructure.IBuilder) and similar for every concrete structure data type

  • New: IUaDynamicStructureBuilder ("renamed" from TUaDynamicStructure.IBuilder)

  • New: IUaDynamicStructure.ToBuilder and similar to every concrete structure data type (to create a new builder initialized with the current values)

  • New: IUaDynamicStructureBuilder.AcceptNulls

  • New: IUaDynamicStructureBuilder.Init

  • New: IUaStructure.SetFieldValue (generalized from IUaDynamicBuilder)

  • New: Validate array elements of structure fields

  • New: Renew expired certificate, when TUaApplicationIdentity.LoadOrCreateCertificate is called with 'EnableRenew = True' - Really? :)

  • New: TUaCertificateStore.MaxRejected (to limit worst case scenarios)

  • New: TUaSecureIdentity.ToString

  • New: TUaUserIdentity.ToString

Changes to UA Client

  • Fixed: Memory leak related to subscriptions (PublishResponses)

  • Improved: Raise exception on bad status code for single read in TUaClient.Read

  • Improved: More clear Exception messages for failures in Write, Call and HistoryRead

Changes to UA Server

  • Fixed: Update individual node values to ServerStatus when the value is changed

  • Improved: TUaNode.AddReference: better validation

  • Renamed: TUaVariable.AddNotifyProcedure to AddValueChange

  • New: TUaVariable.OnValueChange

  • New: TUaNode.HasReference with additional optional parameters

  • New: TUaServer.Shutdown

  • New: TUaServer OnRegisterServer and OnShutdown events

  • New: TUaServer events for Session creation and activation

  • New: TUaServer.OnValidateUser ("copy" of TUaSessionManager.OnValidateUser)

  • New: TUaNodeManager.OnAddNode, OnRemoveNode

  • New: TUaNodeManager & TUaEventManager events for monitored item creation, modification and removals

Changes to Samples

  • Fixed: TUaSampleServerForm.MyNodeManagerBrowse did not return any value

  • Changed: Request both timestamps for MonitoredItems in the SampleClient

  • New: TUaSampleServerForm.UpdateMyStructureValue

  • New: Handlers for the new TUaServer events in the UaSampleServer

Changes to Tutorial

  • New: HistoryReadEventsButton in LessonUa1Client project

Version 7.3.0

Build: 7.3.0-758

Release date: 16.04.2021

This is a new minor release of Prosys Sentrol.

This version improves support for usage of the OPC UA client component in C++ Builder in a few ways.

There is also a new tutorial project, LessonUa1_UaClient, which helps to get into the basics in both Delphi and C++ Builder. The Client Tutorial is updated to refer to the new Tutorial project (LessonUa1) that is included in the installation.

The release also fixes several memory leaks and decoding of a few data types in the SDK and stack. Therefore we recommend all customers to update to this version.

Changes to Common Functionality

  • Improved: TPsSaxParser with better messages for XML parsing errors (used by TUaServer for loading nodeset files)

Changes to OPC Classic Functionality

  • New: TPsOPCConnector.InactivateItemsOnError & TPsOPCGroup.InactivateItemsOnError

Changes to Common OPC UA Functionality

  • Fixed: Boolean values were kept as Byte values when coming from the UaStack

  • Fixed: Monitoring ExpandedNodeId values

  • Fixed: Variant array elements of varOleStr were not supported

  • Fixed: Validate that ApplicationDescription is initialized (it must still be initialized in code)

  • Changed: Parameter order and default options for TUaClient.HistoryReadXxx

  • New: UaStackUseDelphiMemoryFunctions - allows switching the stack to use it’s own memory manager (by setting this to False)

  • Removed: TUaDataValue.Create(Integer, …​) removed due to ambiguousness

  • New: Equals method to all record types, to overcome a C++ compiler bug for Equal operator

  • New: IUaNamespaceTable.ParseQualifiedNameArray & QualifedNameArrayToString

  • New: IUaNamespaceTable.QualifiedNameToString (alias to UaQualifiedNameToString)

Changes to UA Client

  • Fixed: Validate that the certificate and private key are set, if they are required in TUaClient

  • Fixed: MemLeak in TUaClient.Reconnect

  • Fixed: exceptions raised in TUaVariable.OnWriteValue will cancel the write and respond with a statuscode to the client

  • Fixed: Prefer IPV4 for client socket connection (to enable connection to servers that don’t support IPV6; 'localhost' in Windows 10 maps to IPV6 by default)

  • Fixed: Reading QualifiedNames with invalid NamespaceIndex

  • Changed: TUaMonitoredDataItem.Create param changes

  • Changed: TUaAddressSpace.Browse with default parameter values

  • New: IUaSubscription.GetItems, GetDataItems & GetEventItems

  • New: TUaSubscription.Create (overload) without arguments (to enable call without args in C++)

  • New: ProsysOPC.UaClient.Libs.h (to help importing the necessary libs to C++ Builder apps - see the UaCppSampleClient project for an example)

Changes to UA Server

  • Fixed: Memory leak while loading SampleNamespace.xml

  • Fixed: Do not allocate window handle for TUaServer in a DLL

  • Fixed: TUaServer always creates PKI directory under application

  • Improved: Check AccessLevel in TUaVariable.WriteAttribute for Value

  • Changed: Made TUaNode.WriteAttribute protected to avoid it being used by the application

  • New: ProsysOPC.UaServer.Libs.h (to help importing the necessary libs to C++ Builder apps - see the UaCppSampleServer project for an example)

Changes to Samples

  • Fixed: AV in UaSampleClient

  • Scale resized dialog buttons for High-DPI in the certificate validation prompt

Changes to Tutorials

  • New: LessonUa1_UaClient project

  • Online Client Tutorial updated to refer to the tutorial project, plus a few details clarified. New C++ sample code sections added as well.

Version 7.2.0

Build: 7.2.0-746

Release date: 16.12.2020

This is a new minor release of Prosys Sentrol.

This version improves support for a few data types, especially in regard to C++ Builder 10.4. It also fixes some issues related to secure connections. Therefore we recommend all customers to update to this version.

Changes to Common OPC UA Functionality

  • Changed: TUaDataValue, TUaStatusCode, TUaLocalizedText, TUaQualifiedName, TUaNodeId & TUaDiagnosticInfo - contructors changed to static class methods for better C++Builder support. In Delphi, they are still used the same way (for example, 'LT := TUaLocalizedText.Create('Text');' whereas in C++ you must call the Create method, instead of using the 'new' operator. See the updated UaCppSampleServer.

  • Fixed: Make 'Set' types available in C++ (new generated source file: SdkBitSetEnums.inc)

  • Fixed: Handling of Boolean data in TUaVariant using Delphi enumeration type info (to enable use of string constants TUaVariant.AsString

  • Fixed: Details of enumeration value handling in TUaVariant)

  • Fixed: Handling of ByteString data in TUaVariant in C++ applications

  • Fixed: TUaVariant.TypeKind & TypeName in case the Value is not set.

Changes to UA Client

  • New: TUaClient.WriteValues with TArray<TUaDataValue>

  • Fixed: Reading and writing Boolean, Int64 & UInt64 arrays

  • Fixed: Asymmetric Signature creation and definition of used Algorithm for ActivateSession was failing occasionally leading to connection problems in secure connection modes.

Changes to UA Server

  • Fixed: Asymmetric Signature Algorithm was not defined in CreateSessionResponse

  • Security Fix: Asymmetric Signature at ActivateSession was not verified.

Changes to Samples

  • The C++ samples were updated according to the changes to struct types.

  • Make the Delphi Sample Server to register with the Local Discovery Server by default.

  • Delphi Sample Client to use design time event handlers

  • Fixed: Sample Namespace URL in UaCppSampleServer

Version 7.1.0

Build: 7.1.0-732

Release date: 25.06.2020

This is a new minor release of Prosys Sentrol.

This version adds support for Delphi & C++ Builder 10.4 Sydney compiler and improves the overall functionality in many ways. Especially the support for custom structure types (via IUaDynamicStructure) is now fully functional. Registration and usage of OPC UA Local Discovery Server (LDS) is now also supported (TUaLocalDiscoveryClient and TUaServer.AutoRegister) and a number of memory usage issues have been fixed.

The Client Tutorial is updated to help dealing with the custom structure types better in the client.

Changes to Classic Functionality

  • Fixed: PsADOConnectionDlgs to compile (proper use of ConfirmDlg, etc)

Changes to Common OPC UA Functionality

  • New: Support for Multidimensional arrays & DynamicStructures in variants

  • New: IUaAddressSpace, a common interface for TUaClientAddressSpace and TUaServerAddressSpace

  • New: TUaTypeDictionary, a common class that handles custom structure types in both the server and client side

  • New properties: IUaDynamicStructure.FieldValues & Specification (replacing methods SetFieldValue, GetFieldValue & GetSpecification)

  • New: TUaNodeManager.GetType & TUaServerAddressSpace.GetType

  • New: TUaType.AddSubtype

  • New: TUaServer.ReadValue & ReadValues

  • New: TUaDynamicStructureBuilder

  • New: IUaDynamicStructure.UnionValue, SwitchFieldName, StructureType, IsPresent

  • Removed: IUaDynamicStructure.GetBinaryEncodeId & GetEncodedFields

  • New: TUaNode.CreateNodeId

  • New: NormalizedNamespaceURI

  • New: UaStackInitialize & UaStackFinalize (called automatically from ProsysOPC.UaClasses)

  • Fixed: GetTypeId method made public in all structure implementations

  • Fixed: libeay32.pas was missing from the source distribution

  • Fixed: Stack finalization in context of DLL projects that use the Stack DLL. uastack_32.dll and uastack_64.dll have been rebuilt to fix this.

Changes to UA Client

  • New: TUaLocalDiscoveryClient

  • New: TUaDiscoveryDialog

  • New: IUaApplicationDescriptionEx

  • Fixed: IUaSubscription.OnAlive

  • Changed: TUaDataChangeEvent (used in IUaSubscription and IUaMonitoredDataItem) type of Sender parameter changed from TObject to IUaMonitoredDataItem

  • Changed: TUaEventNotificationEvent (used in IUaSubscription and IUaMonitoredEventItem) type of Sender parameter changed from TObject to IUaMonitoredEventItem

  • Fixed: Usage of RequestHeader in TUaClient methods

  • New: RequestHeader as optional parameter to TUaClient methods Read, Write & Call

  • Fixed: Disconnect if TUaClient.Connect fails

  • Fixed: TUaClient.Reconnect with subscriptions

  • Fixed: Clear up of CallRepublish in case of ServiceFault

Changes to UA Server

  • New overloads: TUaNode.AddNode/Instance/Property which use CreateNodeId to generate a new NodeId with a default rule

  • New: TUaServer.RegisterServer

  • Fixed: Load models that have nodes in "wrong order", i.e. Parents after children

  • New: EUaDiscoveryError

  • Fixed: Address Space View Refresh (in UaSampleClient)

  • Fixed: Method call dialog in UaSampleClient

Changes to Samples

The UA sample applications have been updated to reflect the changes in the SDK.

Version 7.0.2

Build: 7.0.2-712

Release date: 19.08.2019

This is a new minor release of Prosys Sentrol.

This version adds support for Delphi & C++ Builder XE5, XE6, XE7, XE8, 10 Seattle and 10.1 Berlin copliers in addition to previously supported 10.2 Tokyo and 10.3 Rio compliers.

  • New: UaByteStringToBase64, UaByteStringFromBase64, UaByteStringToRawByteString

  • New: TUaNamespaceTable.QualifiedNameToString (alias of TUaNamespaceTable.UaQualifiedNameToString)

  • New: EmptyUaByteString

  • New: TUaClient.UpdateNamespaceTable

  • New: Include DiMime in Tools to enable support for Base64 prior to XE7

Version 7.0.0

Build: 7.0.0-706

Release date: 20.05.19

This is the final version of a new major release of Prosys Sentrol.

This version adds OPC UA capability to the product, enabling both OPC UA client and server development.

New Functionality

  • OPC UA Client

  • OPC UA Server

The product uses OPC Foundation Ansi C Stack as a DLL and also OpenSSL as a DLL to implement interoperability. Sentrol adds SDK level functionality to this, including support for

  • OPC UA 1.04 UA TCP Transport

  • OPC UA 1.02-1.04 Security

  • Session management

  • Subscription management, including data and even monitoring

  • Identity management

  • Historical Access (client side)

  • Method calls

  • Address Space and Loading Information Models (server side)

Major changes in the specific builds:

Build 706

  • Final 7.0.0 release

  • New: IUaSecureIDentity, IUaApplicationIdentity & IUaUserIdentity & respective event arguments changed to these interfaces from TUaXxx ones

  • Changed: TUaSessionManager.OnValidateUserIdentity renamed to OnValidateUser (and also param change as above)

  • Published property: TUaApplication.CertificateStore

Build 702 - 2.5.2019

  • Renamed: IUaServerNamespaceTable from IUaModifiableNamespaceTable

  • New: TUaServerNamespaceTable & TUaApplication.GetNamespaceTableClass

  • Replaced TUaStructure.ID with GetTypeId

  • Improved TUaStructure.ToString (Do not show the type name by default)

  • New: TUaClient.ServerState (was GetServerState)

  • New: TUaClient.WriteValue & WriteAttribute with DataValue

  • New: TUaVariant.AsCardinal & AsUInt32

  • Fixed: Variant handling of UInt32 types

  • New: Monitor Session timeouts in server - and other improvements on session handling

  • New: OPC Core Components updated to version 3.00.107 - the installer no longer requires .NET

  • New: IUaSession.SubscriptionCount

  • New: TUaSubscriptionManager.MaxSubscriptionCount

  • Fixed: Declarations of server side event types

  • Fixed: Component Help was corrupted in the previous build

Build 698 - 28.3.2019

  • Renamed: All conversion funtions to begin with Ua - for example NodeIdToString → UaNodeIdToString, StringToNodeId → UaNodeIdFromString, etc.

  • Removed: TUaClient.UseStrongestSecurityPolicy

  • New: TUaClient.SecurityPolicyStrategy (replaces UseStrongestSecurityPolicy)

  • New: TUaSessionManager.MaxSessionCount

  • New: TUaDynamicStructure - used to decode any structure value using the DataTypeDictionary documents provided by the server. Available from TUaVariant values.

  • New: ProsysOPC.UaClasses unit - main classes like TUaApplication moved in there from UaBase (which was growing too big).

  • New: TUaAddressSpace.BrowseNext (used automatically from Browse)

  • New: TUaServer.OnBrowse & OnGetReferences

  • New: TUaSubscriptionManager.OnBeforeCreateMonitoredDataItem, OnAfterCreateMonitoredDataItem, OnBeforeDeleteMonitoredDataItem, OnAfterDeleteMonitoredDataItem, OnBeforeModifyMonitoredDataItem, OnAfterModifyMonitoredDataItem

  • New: OPC UA components moved to packages ProsysOPC.UaClient.bpl & ProsysOPC.UaServer.bpl

  • Changed: Opc.Ua.Nodeset2.xml updated to version 1.04

  • Changed: Opc.Ua.Di.Nodeset2.xml updated to version 1.02

  • New: Support for OPC UA 1.04 Attributes & NodeIds

  • Fixed: Evaluation download didn’t install all design time components (TUaServer)

  • Plus a number of small fixes here and there

Build 692 - 1.3.2019

  • Changed: IUaSubscription, IUaMonitoredItem & IUaSession details

  • Changed: Server side interfaces renamed to IUaServerSubscription, IUaServerMonitoredItem

  • New: TUaClient.OperationLimits

  • New: String conversions to all enumeration types

  • Fixed: Handling of invalid namespace indexes

Build 690 - 4.2.2019

  • Support for Delphi & C++Builder 10.3 Rio

  • Design time functionality of TUaClient and TUaServer

  • New: TUaServer.UserTokenTypes & UserTokenSecurityPolicies

  • Renamed: TUaUserTokenTypes to TUaUserTokenTypeSet

  • Renamed: SUaSecurityPolicies to UaSecurityPolicyStrings

  • New: UaUserTokenTypeStrings

  • Renamed TUaSecurityPolicies to TUaSecurityPolicySet

  • Renamed: TUaMessageSecurityModes to TUaMessageSecurityModeSet

  • New: TUaClient.ServerAddress, replacing Uri

  • Renamed: TUaClient.TimeoutHint to OperationTimeout

  • Renamed (and changed a bit): TUaAccessLevel to TUaAccessLevelType

  • Renamed (and changed a bit): TUaEventNotifierClass to TUaEventNotifierType

  • Changes to all enumeration values

  • New: String constants for all enum types

  • Fixes to a lot of details

Build 680 - 7.1.2019

  • Fixed: Support for C++Builder (32-bit only so far - trouble with the 64-bit linker)

  • New: TUaClient.HistoryRead (and several convenience methods, such as HistoryReadRaw, etc.)

  • New: Support for new Security Policies, defined in OPC UA version 1.04.

  • New/Changed: TUaClient.SecurityPolicies (set) replacing SecurityPolicy.

  • New: TUaAddressSPace.Browse (overload) & TranslateBrowsePathToNodeId & TranslateBrowsePathsToNodeIds

  • CHANGES: Various changes to interfaces and types:

    • TUaVariant replacing Variant in TUaDataValue

    • AttributeId:s as TUaAttributeId everywhere

    • Enum types are now in UaBase.pas - UaStack.pas not needed on application level.

  • SAMPLE CHANGE: Port number of the UaSampleServer changed to 62620 (was 4842)

  • Various improvements to the UaSampleClient (History View, etc)

  • Improvements to interoperability

Build 670 - 20.11.2018

  • Support for Method Call service (client and server) with examples.

  • Improved interoperability with other OPC UA implementations.

  • Improved memory usage (leaks fixed, etc.)

  • Usage of certificate store has changed. Please refer to the samples and tutorials.