Version 7.4.0

Build: 7.4.0-776

Release date: 19.10.2021

This 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 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 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 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 functiFunctionalityp of 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.