Version 3.2.1

Build: 3.2.1-432

Release date: 05.03.2007

This is a bug fix release of Prosys Sentrol.

New property:

  • TPsVarLink.VarDataType


  • TPsOPCGroup did not clear read variant values, which caused mem leaks when reading string and array data from OPC servers.

  • TPsOPCConnector did not copy data to read only variables

  • GetNetworkServers (in PsUtils)

  • TPsVar.GetPropAsDataType (and some others) used QualityOfEmptyString when they should have used PropQualityOfEmptyString

Version 3.2.0

Build: 3.2.0-430

Release date: 01.02.2007

This is a new minor release of Prosys Sentrol. It contains major improvements to the OPC Client functionality as well as to the Storage components.

Especially, the TPsStorageConnector has been revised strongly. If you have used it, do not hesitate to contact us for additional support in converting your projects.

Also note that the Tutorial Lesson 4 (Storage) has been updated.

The OPC client functionality has been tested at the OPC Interoperability Workshop - and passed among the first clients the tests against the new OPC Analyzer tool. In future it will be required to pass the Analyzer test in the IOP Workshop to get clients applications the Self-Tested status. The test results are visible at the OPC Foundation’s Product Page

The major changes are listed below. There are also a lot of minor issues fixed and changed.

Sentrol has also been verified to work with the new Turbo Delphi and Turbo C++ products!

New components

  • TPsVariant

New objects/classes

New properties & methods

  • TPsOPCServer.OnStateChange

  • Published: TPsCustomStorage.VariablesTable, ModulesTable & VarPropsTable

  • TPsStorageField.AddColumn/DropColumn

  • TPsCustomStorage.AddColumn/DropColumn

  • TPsHistorian.HistoryTable

  • TPsStorageConnector.Table

  • TPsBitset.StrictStates

  • TPsBitset.Value: LongWord

  • TPsVar.PropAsInt64 & TPsVar.PropAsLongWord to support this kind of values better

  • TPsVar.Get/SetPropAsDataType also implemented for array variables

  • (PsUtils.pas) IsUTF8String, IsLocalHost, LocalServerName, GetNetworkServers

Changed properties

  • TPsStorageConnector no longer uses KeyFields. If you have used them, add the respective fields now to Links (without any Variable). Also, instead of calling Save with the key values, use SetSaveParamByName to set them prior to calling Save. And the same for Load (SetLoadParamByName).

  • TPsStorageConnector.OnGetKeyValue is replaced by OnGetFieldValue.

  • TPsStorageVarLink.DataType (used in TPsStorageConnector.Links) is now of TPsVarDataType (was TFieldType)

  • TPsBitset.BitCount functionality has been revised

Changed procedures

  • GetFileVersion in (PsUtils.pas) renamed to GetFileVersionStr

Changed forms

  • TPsVarForm improved

  • TPsOPCProviderForm made available to C++Builder

New features

  • TPsOPCServer handles now much better remote connections - and calls OnDisconnect/OnConnect when it loses connections temporarily. It also notifies all groups of this and makes the OPCConnectors to undefine (set quality to bad) the variables respectively.

  • The storage component now manages metadata tables in the database. See the tutorial Lesson4 for an updated introductory!

  • OPCConnector Links editor CreateVariables Wizard has an 'automatic' option, which means that it will create correct variable components based on the link datatypes!


  • TPsOPCServer.ServerName was not configurable at design time for remote servers

  • TPsByteArray changes are now reacted to in the OPCConnector, to make it possible also to write ByteArray data back to OPC servers

  • TPsOPCConnector.OnCopyToExternal was never called

  • TPsEventLog.Capacity was not used

  • Include Sentrol installation directory to the system Path - Delphi cannot locate the packages reliably without it…​

  • Access violations still sometimes at OPC Provider applications closing down (especially with C++Builder!)

  • Access Violations occurring occasionally at Delphi shutdown

  • Sentrol is now included in the BDS 2005/2006 splash screen and about information

  • a bucketful of smaller bugs were layed aside, terminated according to the standard procedure

Version 3.1.0

Build: 3.1.0-412

Release date: 24.10.2006

This is a new minor release of Prosys Sentrol. It contains major improvements to the OPC Server functionality (TPsOPCProvider) as well as to the Storage components.

The major changes are listed below. There are also a lot of minor issues fixed and changed.

OPC Compliance Test

Sentrol 3.1 passes the OPC Foundation Compliance Test v2.0.15.1138 (Sep 28, 2006) for OPC Data Access 2.05. See the Simulation Server v1.4 ( for a sample server with the test results.

New features

OPC DA 1.0a asynchronous communication is now supported via IDataObject/IAdviseSink interfaces for all single valued data (non-arrays).

SentrolVersionInformation constant and SentrolVersionString method (in SentrolVersion unit) can be used to refer to the version of sentrol built into your applications.

New components

  • TPsStorageDataset - a generic SQL dataset component that you can connect to any PsStorage and use for standard data aware controls!

New objects/classes

  • TPsOPCProviderAddressSpace

  • TPsLog & TPsLogBuffer

  • TPsVersionInformation (used also for SentrolVersionInformation constant) *

  • TPsConnectorManager (used internally to remove window handles from TPsCustomConnector: improved scalability, i.e. no limit for the number of connectors in an application any more)

New properties & methods

  • TPsOPCGroup.AcceptInvalidItems

  • TPsOPCGroup.LocalTimeBias

  • TPsOPCAddressSpace.Mode & SupportsHierarchial

  • TPsOPCProvider.AddressSpace: TPsOPCProviderAddressSpace

    • enables flexibly customizable address spaces!!!

    • Property TPsOPCProvider.IncludePropsInAddressSpace replaced by TPsOPCProvider.AddressSpace.IncludeProps

    • Property TPsOPCProvider.ItemIDDelimiter replaced by TPsOPCProvider.AddressSpace.PathSeparator

  • TPsOPCProvider.OnFindItem

  • TPsOPCProvider.ActivityLog is now a TPsLog

    • Property TPsOPCProvider.ActivityLogFile replaced by TPsOPCProvider.ActivityLog.FileName

    • Property TPsOPCProvider.MaxActivityLogLines replaced by TPsOPCProvider.ActivityLog.MaxLines

  • TPsOPCProviderGroup.LocalTimeBias

  • GetFileVersionInformation, VersionToStr

Changed properties

  • TPsOPCProvider.OnItemAccessRights event signature changed according to TPsOPCProviderItemAccessRightsEvent

New forms

  • TPsStorageBrowserForm (PsStorageBrowserForms.pas) - a generic database browser based on PsStorageDataset. Try it!

Changed forms

  • TPsOPCAddressSpaceBrowser has been updated to enable Flat/Hierarchical mode - and to enable items being selected from the root level


  • TPsOPCProviderGroup now correctly handles client TimeBias requests using nil pointer values. The nil parameter is handled so that the server will provide timestamps in its own local time. This replaces the OPCProvider.LocalTimeBias property, which tried to solve the same issues, but in a wrong way…​

  • TPsOPCProviderForm correctly handles disconnects and group removals and uses a faster log updating

  • Access Violations occurring sometimes at client disconnects should no longer occur

  • Delphi/C++Builder 5 version OPCVarLinksEditor failed to open the address space browser (due to unsupported properties)

  • Delphi/C++Builder 5 version did not support CreateVariables Wizard in the OPCVarLinksEditor (property editor of TPsOPCConnector.Links). The VarClass selection is now filled with a fixed class list for these.

Version 3.0.1

Build: 3.0.1-396

Release date: 02.08.2006

This is a new bug fix release of Prosys Sentrol.


  • TPsOPCAlloc.CAllocMem accessed illegal memory at some occasions, causing write actions to throw EIntOverflow when compiled with CBuilder

  • Patch included to CBuilder 5 installation to compile the missing comserv.obj in the CBuilder installation (by build_comserv.bat)

  • Tutorial project for CBuilder 5 incorrectly referenced SentrolBDE50.lib (should be SentrolStdBDE50.lib)

Version 3.0.0

Build: 3.0.0-392

Release date: 02.06.2006

This is a new major release of Prosys Sentrol. The major new feature is support for Borland Developer Studio 2006.

DataType support has been extended. Those changes are mostly internal to the components, but in future they will enable more control over data type conversions in different components.

Also some new properties and features are added and several minor issues are fixed.

There are also several optimizations in the components, which make the framework to scale much better. It has been now tested and used with over 20000 concurrent variables, which are also stored into the database.

The database can now keep track of variables, but it still requires some manual operations and the respective properties are therefore not yet published in TPsCustomStorage.

Upgrading from 2.2

All projects created with Sentrol 2.2 should upgrade to Sentrol 3.0 without any major problems. However, you might experience some minor differences in the detailed functionality, especially with data type conversions.

OPC Compliance Test

Sentrol 3.0 passes the OPC Foundation Compliance Test v2.0.13.1134 (March 1, 2006) for OPC Data Access 2.05. See the Simulation Server v1.3 ( for a sample server with the test results.


  • Support for Borland Developer Studio 2006 (Delphi Win32 & C++Builder personalities).

New properties & methods

  • TPsOPCConnector.AutoActivateOPCGroup

  • TPsOPCConnector.AddItem

  • TPsOPServer.Log (replaces TransactionLog with proper logging!)

  • TPsOPCGroup.AutoConnectItems & ConnectItems

  • TPsVar.OnValueChange

  • TPsVar.PropDataType & TPsVarLink.DataType

  • TPsVar.PropReadOnly

  • TPsVar.GetPropAsDataType, SetPropAsDataType & GetVarPropValueAsDataType

  • TPsVar.GetPropAsArray, SetPropAsArray

  • TPsVarLink.GetAsDataType & SetAsDataType & GetValueAsDataType

  • TPsVarLink.GetAsArray & SetAsArray

  • TPsVar.PropIsArray, TPsVarLink.IsArray

  • TPsCustomStorage.DatabaseProduct (support for Interbase/Firebird & SQL Server - used with CreateTable)

New forms

  • TPsVarForm (PsVarForms.pas) for run-time validation of application data.

  • TPsOPCLogForm (PsOPCLogForms.pas) for displaying the new log data in TPsOPCServer.

New features

  • Connectors react to double click at form designer by opening the Links for editing

  • TPsBitset can be used with 'array of boolean' data from OPC servers

  • TPsOPCProvider can now be referenced from C++ units (the implementation has been split to two units: PsOPCProvider.pas and PsOPCProviderClients). See the updated Tutorial lesson 8 with a C++ project!


  • Sentrol Controls stopped updating at some occasions (TPsControlVarLink is now initialized with AutoRemoveControl=False)

  • TPsCheckBox did not react to changes when read-only

  • TPsOPCTransactionLog failed when logging array data

  • TPsOPCServer.ServerName; do not clear the server of groups if the ClassID is not actually changed

  • TPsOPCGroup (& TPsOPCConnector) failed to write > 4 items at the same time properly

  • TPsOPCConnector.Refresh enabled also when inactive (to be used for manually refreshing sync groups that can be inactive in the server)

  • TPsADOStorage failed to create valid statements in some occasions (e.g. with EventLog)

  • TPsADOStorage failed to set paramvalues, because of a TADOStmt bug

  • Removed: TPsCustomStorage.OwnsStmts, because this never really worked reliably

  • TPsOPCAddressSpace.BrowseToPath failed to browse back to root

  • TPsStringList.AsCSV to handle control characters similar to normal ones.

  • Initialize TPsEditVarLink with AutoRemoveControl=False, because they often have a subwindow which removes the control when it is closed.