OPC UA Client
Introduction
OPC UA Client is a backend application, whose role is to fetch data from OPC UA Server and write the data to DB using Vtrin API. OPC UA Client application can run on both Windows and Linux platforms.
OPC UA Client application is developed on with OPC Unified Automation .NET SDK and uses it to communicate and exchange data with OPC UA Servers. OPC UA is short for OPC Unified Architecture which is provided by Unified Automation.
Features
- Collecting numerical process history from 3rd party UA servers.
- Collecting process events and alarms from 3rd party UA servers. All attributes coming from standardized event types are supported.
- Tag and Equipment model-based configuration to cross-connect signals.
- Writing back to 3rd party UA server based on current value events in database when Tags-based configuration is used.
- Storing received values both to Current History and Stream History
- Supports all datatypes available in Current and Stream histories, including string and arrays of basic datatypes.
- Supports application instance certificates and secure communication protocols. User authentication types: anonymous, password, user certificate.
- Supports alarms and conditions.
- (Upcoming) Automatic configuration of variables and equipment model from an OPC UA server
Installation
Requires ABB Ability™ History to be installed, if you haven't installed ABB Ability™ History yet, follow the links below to installation guide.
Windows: https://docs.cpmplus.net/docs/installation-on-windows
Linux: https://docs.cpmplus.net/docs/installation-on-linux
OPC UA Client requires installation of .NET 8.0. You can check with command dotnet --info whether the correct version is already installed. To install, download and run the installer from https://dotnet.microsoft.com/en-us/download/dotnet. Select the ".NET Desktop Runtime" package.
#Go to the installation path "%RTDBRoot%\Bin\netcore\"
#For default installation folder
cd C:\Program Files\ABB Oy\RTDB\Bin\netcore\
#OpcUa client can be set up as a RTDB service
runcpm CSCommon_Cmd -setini [PATH_TO_DATBASE]\RTDB.INI Services Vtrin-OPCUAClient ON
runcpm CSCommon_Cmd -setini [PATH_TO_DATBASE]\RTDB.INI Vtrin-OPCUAClient CmdLine "%RTDBRoot%\Bin\netcore\VtrinOPCUAClient.exe -d [PATH_TO_DATBASE]"
#Alternatively OpcUa client can set itself up as standalone service with the -install flag.
VtrinOPCUAClient.exe --install -d [PATH_TO_DATBASE]#Run the following command to install OPC UA Client
apt-get install cpmplusvtrinopcuaclient
#OpcUa client can be set up as a RTDB service
runcpm CSCommon_Cmd -setini [PATH_TO_DATBASE]/RTDB.INI Services Vtrin-OPCUAClient ON
runcpm CSCommon_Cmd -setini [PATH_TO_DATBASE]/RTDB.INI Vtrin-OPCUAClient CmdLine "/usr/share/dotnet/dotnet /usr/share/cpmplus/netcore/VtrinOPCUAClient.dll -d [PATH_TO_DATBASE]"Running
Vtrin OPC UA Client can be started with this simple command:
cd C:\Program Files\ABB Oy\RTDB\Bin\netcore\
VtrinOPCUAClient.exe -d [PATH_TO_DATBASE]VtrinOPCUAClient -d [PATH_TO_DATBASE]Commandline arguments
| Argument | Short | Description |
|---|---|---|
| --datasourcename [PATH_TO_DATBASE] | -d [PATH_TO_DATBASE] | Data source name. Direct connection to a local directory or remote connection. |
| --user [USERNAME or CREDENTIAL] | -u [USERNAME or CREDENTIAL] | User name or credential for the Data Source. |
| --savepassword | -p | Save user password to credential. |
| --service | -s | Run as a service. |
| -servicename | -n | Name of the service, default: 'VtrinOPCUAClient'. |
| --install | -i | Install as a service. Not available on Linux. |
| --remove | -r | Remove the service. Not available on Linux. |
| --logpath [PATH] | -l [PATH] | Path where log files "VtrinOPCUAClient_[DATE].log" are generated. |
| --verbose | -v | Display more verbose messages. |
| --receiverid [ID] | -e [ID] | Receiver id (RTDB process number) for command queue. Initialization only. Default: 32. |
| --configname [NAME] | -c [NAME] | Name of the Simple Config section, default: 'VtrinOPCUAClient'. |
Examples
#Examples for data sources:
VtrinOPCUAClient.exe -d c:\rtdbdata
VtrinOPCUAClient.exe -d ws://127.0.0.1/History
VtrinOPCUAClient.exe -d wss://<REMOTE_IP>/History
#Examples for authentication for datasources:
#No authentication:
VtrinOPCUAClient.exe -d <DATASOURCE>
#Save/update password: (Saved credential will be printed. For example: "*VTRIN/c_rtdbdata")
VtrinOPCUAClient.exe -d <DATASOURCE> --user USERNAME --savepassword
#Start with saved credentials: (Instead of username, write the credential name, starting with asterix '*')
VtrinOPCUAClient.exe -d <DATASOURCE> --user *CREDENTIAL
#Examples for installing as a service: (credential should be saved beforehand)
VtrinOPCUAClient.exe -d <DATASOURCE> --user *CREDENTIAL --service --install#Examples for data sources:
VtrinOPCUAClient -d /var/lib/rtdbdata
VtrinOPCUAClient -d ws://127.0.0.1/History
VtrinOPCUAClient -d wss://<REMOTE_IP>/History
#Examples for authentication for datasources:
#No authentication:
VtrinOPCUAClient -d <DATASOURCE>
#Save/update password: (Saved credential will be printed. For example: "*VTRIN/c_rtdbdata")
VtrinOPCUAClient -d <DATASOURCE> --user USERNAME --savepassword
#Start with saved credentials: (Instead of username, write the credential name, starting with asterix '*')
VtrinOPCUAClient -d <DATASOURCE> --user *CREDENTIALConfiguration
SimpleConfig table
OpcUAClient can be configured from Vtrin SimpleConfig table under VtrinOPCUAClient section.
Bolded keys/values inside [brackets] are to be replaced with user set values.
Slash separated values inside [brackets] are choices.
| Key | Default Value | Optional Values | Description |
|---|---|---|---|
verboselog |
false |
true/false |
If logging processing more details, for example value write details Change takes effect runtime |
reconnectinterval |
5000 |
Reconnect interval in case connection was not successfull Change takes effect runtime |
|
maxoperationsperrequest |
1000 |
UA parameter, suggest how many operations fit Change takes effect on restart |
|
pkistorepath |
On Windows: |
Starting from version 24.11. Default path to OPC UA Client certificates folder to use when machine specific pkistorepath is not specified. On older versions key is: pkistorepathwin |
|
[machinename]:pkistorepath |
Same as pkistorepath |
Starting from version 24.11. Machine specific path to OPC UA Client certificates folder. if pkistorepath is based on path on the same operating system, pkistorepath will be used as default value when running the client on the first time. Otherwise the value will revert to platform default value of: Windows: Linux: |
|
minwritebackcycle |
1000 |
Change takes effect on runtime |
|
uatracelevel |
0 |
The UA SDK Tracing level. Value 1..7 causes that tracing is printed to Diag directory of the database, with name UaTrace-RTDB-UaClient.txt (or if an instances with different appname is installed, then UaTrace-appname.txt) 0=Default 1 = NoTrace 2 = Errors 3 = Warning 4 = Info 5 = InterfaceCall 6 = CtorDtor 7 = ProgramFlow 8 = Data Change takes effect on restart |
|
uatracemaxentries |
100 |
Change takes effect on restart |
|
maxreconnectionattemps |
100 |
Change takes effect on restart |
|
backfillenabled |
false |
true/false |
Change takes effect on restart |
monitoreditemqueuesize |
10 |
Queue size used for monitored item creation Change takes effect runtime |
|
maxconcurrentbackfills |
10 |
Max number of concurrently running backfills Change takes effect runtime |
|
uaserver:[uaserverurl/uaservername]_ |
securitypolicy=[none/basic128rsa15/basic256/basic256sha256/aes128Sha256rsaoaep/aes256sha256rsapss]; securitymode=[none/signandencrypt/sign/invalid]; securityselection=no; authentication=[username/certificate]; username=[stored credential vault name]; url=[uaserverurl]; (Since version 25.11) |
if securitymode and securitypolicy not specified and securityselection=no not specified, client tries to ask server the best available configuration if authentication not specified anonymous is used if username not specified (credentials username from Vtrin credential storage, ) connection fails if usercertificatepath (user level certificate) not specified in case of authentication=certificate, connection fails. User certificate should be in .pfx format. securityselection=no; is option to force no security, when used securitymode and securitypolicy are not used same time with securityselection setting uaserver:[uaservername] and url=[uaserverurl]; You can apply long uaserver urls to the configuration. The [uaservername] can be arbitary. See example below. Change takes effect on restart |
|
defaultserversettings |
(Since version 25.11) Same as above, but excluding url=[uaserverurl] |
See above row. |
|
logbyidn |
idn of variable |
Logs attempts to write to DB for variable specified by idn Change takes effect runtime |
|
monitoreditemcreationbatchsizelimit |
500 |
Limitation number for Monitored Item creation in one request Change takes effect runtime |
|
receiverid |
32 |
RTDB process id for receiving commands Change takes effect runtime |
SimpleConfig table example
| Section | Key | Value |
|---|---|---|
| VtrinOPCUAClient | verboselog | false |
| VtrinOPCUAClient | uatracelevel | 0 |
| VtrinOPCUAClient | backfillenabled | true |
| VtrinOPCUAClient | uaserver:opc.tcp://127.0.0.1:4841 | securitypolicy=basic256sha256;securitymode=sign;authentication=username;username=[credentialsname] |
| VtrinOPCUAClient | uaserver:opc.tcp://127.0.0.1:4842 | securityselection=no;authentication=certificate;usercertificatepath=[path] |
| VtrinOPCUAClient | uaserver:UASERVER2 | url=opc.tcp://127.0.0.1:48031; |
Setting up data collection
OPC UA Client ONLY loads the records, whose attribute 'Owner Component' value is selected to 'OPC UA V3'.
Note: On Linux it may be required to add target machine IP and hostname to /etc/hosts file for connection to work.
Tags
OPC UA Client can subscribe the items configured in the Tags table. However, ONLY the ones whose attribute 'Da Type' is 'OPC UA V3', and 'Activity' is 'Active', can be subscribed.
| Tags | OPC UA Client |
|---|---|
Id |
UUID, used as the primary key to acquire full information of a record |
NumericalId |
DataPoint IDN |
Da Type |
Data collection service to use, select: OPC UA V3 |
Activity |
Decide if the record will be monitored in the program |
DaPath |
Contain UA Server URL, NodeId, UaIdType, Namespace and UaArrayElement Supported UaIdTypes:
|
DataFlowDirection |
Option: [in] means OPC UA Client reads data from OPC UA Server, then write them to DB; Option: [out] means OPC UA Client reads data from DB, then write them to OPC UA Server. |
DaFrequency |
Used as both sampling interval and publishing interval if 'DataFlowDirection' is [in]; Used as interval to pull data from DB if 'DataFlowDirection' is [out]. |
The figure below shows an example of Tags configuration:
| Display Name | Proposal Name | DaType | DaPath | DaFrequency | Activity | Type | Id | NumericalId | DataFlowDirection |
|---|---|---|---|---|---|---|---|---|---|
| W1 | W1 | OPC UA V3 | opc.tcp://PikkuPelle///Demo.Static.Scalar.Double;UaNamespace=http://www.unifiedautomation.com/DemoServer/ | 1,000 | Active | Float | 41afba9c-dfb2-488d-b2a0-2a4a | 11,425 | [out] |
| U2 | U2 | OPC UA V3 | opc.tcp://PikkuPelle///Demo.Dynamic.Scalar.Double;UaNamespace=http://www.unifiedautomation.com/DemoServer/ | 1,000 | Active | Float | fa91cf1f-1db1-45ae-a144-db1abc | 11,329 | [in] |
DataAccessSource table
The value of attribute 'Access Type' should be selected to 'Realtime'.
The value of attribute 'Access Path' should match the pattern: opc.tcp://[ip]:[port]///[value];UaIdType=[type];UaNamespace=[url]* . For an example, please see the figure below.
| Id | Target Reference | Target | Owner Component | Access Type | Access Path |
|---|---|---|---|---|---|
| {OPC UA V3, /Path_Car[MotorSpeed]} | /Path_Car[MotorSpeed] | MotorSpeed | OPC UA V3 | RealTime | opc.tcp://127.0.0.1:48010///Demo.Dynamic.Scalar.Double;UaIdType=s;UaNamespace=http://www.unifiedautomation.com/DemoServer/ |
DataAccessRealTime table
Similar to the DataAccessSource table, the value of attribute 'Owner Component' should be selected as 'OPC UA V3'. For an example, please see the figure below.
| id | Name | Target Reference | Target | Publishing Interval | Owner Component | ||
|---|---|---|---|---|---|---|---|
| {OPC UA V3, /Path_Car[RpmActual] | Drives.Siemes.Driver} | Drivers.Siemens Driver | /Path_Car[RpmActual]/ | Drives.Siemens Driver | RpmActual | 00:00:01 | OPC UA V3 |
| {OPC UA V3, /Path_Car[RpmActual]} | All property RpmActual | /Path_Car[RpmActual] | RpmActual | 00:00:02 | OPC UA V3 |
DataAccessEvent table
| Attribute | Requirements |
|---|---|
| Id | UUID type. Used as the primary key to acquire full information of a record |
| Owner Component | must be 'OPC UA V3' |
| Target | A comma separated list of target database tables (supported values: OpcEventLog, EquipmentEventLog, EquipmentEvent) to where to store the events |
| AccessPath | Contain UA Server URL, NodeId, Queue Size, UaIdType and Namespace |
| Filter | See "DataAccessEvent Filter" section |
| Options | See "DataAccessEvent Options" section |
DataAccessEvent Filter (Since version 25.01)
Filter column can be used to set conditions for event collection. No filter defined, means that all events are collected.
Filtering supports complex condition statements, and can target browsenames, such as event attribute like "Severity".
Syntax:
Filter can be inputted as whitespace ' ' separated array, position of the operator is not significant.
Operation inside parenthesis "(" and ")" will be resolved first. Operation in parenthesis can contain statements in parenthesis, and so on.
Text inside quotations " and ' is considered as constant string. Opening quotation must match the closing quotation.
Number is considered as a constant
Text without quotations are considered as browsename property, such as Severity or Message
Operators:
| Operator | Shorthand | Number of operands | Example |
|---|---|---|---|
| Not_1 | ! | 1 | ! (Severity == 500) |
| Equals_0 | == | 2 | Message == "Error" |
| GreaterThan_2 | > | 2 | (Message == 'Warning') && (Severity > 500) |
| GreaterThanOrEqual_4 | >= | 2 | GreaterThanOrEqual_4 Severity 100 |
| LessThan_3 | < | 2 | |
| LessThanOrEqual_5 | <= | 2 | |
| And_10 | && | 2 | (Severity > 50) && (Severity < 400) |
| Or_11 | || | 2 | (Severity >= 50) Or_11 (Severity <= 10) |
Additional operators can be found from here: https://reference.opcfoundation.org/Core/Part4/v104/docs/7.4.3
Limitations:
- 'IsNotEqual' -operator doesn't exist in OPC UA standard.
- Currently only properties of BaseEventType is supported.
- Browsepaths are not currently supported.
DataAccessEvent Options (Since version 25.01)
Multiple options are separated by ';'
Table of supported options:
| Option | Parameters | Example | Description |
|---|---|---|---|
| Attributes= | comma-separated list of attributes | Attributes=Attribute1,Attribute2,Attribute3 | Manually defines comma-separated list of additional attributes |
| ScanAttributes | Tells OPC UA Client to automatically scan server for all attributes. Note: This feature can be too heavy for some servers. | ||
| ExcludeAttributes= | comma-separated list of attributes | ExcludeAttributes=Attribute1,Attribute2,Attribute | Tells OPC UA Client to ignore following attributes. NOTE: EventID and Time are mandatory attributes and cannot be excluded. |
| NoAlarms | NoAlarms | Ignores all alarms and conditions related attributes. |
DataAccessEvent Example
The figure below show an example of DataAccessEvent configuration:
| Name | OwnerComponent | Target | AccessPath | Filter | Options | ||
|---|---|---|---|---|---|---|---|
| SampleEvent | OPC UA V3 | EquipmentEventLog | opc.tcp://PikkuPelle:48010///5068;UaQueueSize=100;UaIdType=i;UaNamespace=http://www.unifiedautomation.com/DemoServer/ | ||||
| BaseServer | OPC UA V3 | OpcEventLog | opc.tcp://PikkuPelle:48010///2253;UaQueueSize=100;UaIdType=i;UaNamespace=http://opcfoundation.org/UA/ | (Severity > 200) | (Severity == 100) | ScanAttributes; Attributes=PumpState,PumpPressure; | |
| AirConditioner_1 | OPC UA V3 | EquipmentEvent | opc.tcp://PikkuPelle:48010///2253;UaQueueSize=100;UaIdType=i;UaNamespace=http://www.unifiedautomation.com/DemoServer/ |
Diagnosing
Logging directory is defined by --logpath (or -l) command line argument.
Since version 25.10:
Logpath is automatically determined by --datasourcename (or -d) argument, logs will be then found
[PATH_TO_DATBASE]\Diag
(e.g. D:\RTDBData\Diag)
If no valid path for logs are found (for example when using wss:// connection instead of direct connection), logs are printed into:
%APPDATA%\ABB\VtrinOPCUAClient\Logs/root/.config/ABB/VtrinOPCUAClient/Logs(Upcoming) OPC UA Server Autoconfiguration
Vtrin OPC UA Client is capable of automatically importing variables and building equipment model to RTDB from OPC UA servers.
Autoconfiguration can be configured to run on startup, triggered manually, events raised by OPC UA server or by time interval.
Configuring
SimpleConfigTable
Bolded keys/values inside [brackets] are to be replaced with user set values.
Slash separated values inside [brackets] are choices.
Multiple options are separated by ';'
Setting changes take effect on run time.
All keys and values are case insenstive.
Section | Key | Value | Default Value | Description |
|---|---|---|---|---|
VtrinOPCUAClient | autoconfig:[uaserverurl/uaservername] | file=[settingsfilepath] | Settings for importing variables and building equpment model. | |
VtrinOPCUAClient | autoconfigrunsettings:[uaserverurl/uaservername] | Settings for automated autoconfiguration runs. See: run settings for syntax | ||
VtrinOPCUAClient | autoconfiglastrun_utc:[uaserverurl/uaservername] | (Datetime UTC) | UTC time of last autoconfig run. Not meant to be changed. Will be created automatically. | |
VtrinOPCUAClient | autoconfigforcerun:[uaserverurl/uaservername] | [True/False] | False | Manual trigger for running autoconfiguration now. Once run has been initiated, this value will automatically turn back to false. Will be created automatically. |
Run settings
Run settings control when autoconfiguration is run for a specified OPC UA Server.
All settings and values, besides prefixes and OPCUANodeID string identifiers are case insenstive
Setting | Value | Default value | Example | Description |
|---|---|---|---|---|
enabled | [True/False] | True | Autoconfiguration enabled | |
runonstart | [True/False] | True | Runs autoconfiguration when application is started. | |
runoninterval | [True/False] | False | Runs autoconfig at frequent interval | |
runinterval | [Timespan] | 6:12:00:00 | Run autoconfiguration at every interval starting from FirstRun. If RunOnInterval is set false, this is the minimum time gap between runs. | |
firstrun | [DateTimeUTC] | (Now) | 2026-02-27 05:00:46 | Datetime of the first scheduled run. If left null, autoconfiglastrun_utc (if available) or current time is used. |
runonmodelchange | [True/False] | False | Runs autoconfig when OPC UA Server raises an GeneralModelChangeEvent | |
modelchangeobject | [OPCUANodeID] | i=2253 | Node ID of OPC UA server object to listen for GeneralModelChangeEvents |
Example of run settings:
interval=0:01:00;enabled=true;runonmodelchange=true;runoninterval=false;
Common settings
Common settings contains model and tag configuration settings for autoconfiguration for specified OPC UA Server.
All settings and values, besides prefixes are case insenstive.
Setting | Value | Default Value | Example | Description |
|---|---|---|---|---|
enabled | [True/False] | True | Autoconfiguration enabled | |
overwrite | [True/False] | False | Allows autoconfiguration overwrite tags and equipments previously generated by autoconfiguration | |
tagsettings | [ArrayOfTagSettings] |
| Array of tag settings | |
equipmentsettings | [ArrayOfEquipmentSettings] |
| Array of equipment settings | |
prefix | [StringValue] | (Server address) | "Server1_" | Prefix to add to every item generated by autoconfig. Leaving prefix unset will prefix generated items with server address. It is possible to prefix as empty string ("") |
Example of common settings:
enabled=true;prefix="Prefix1";overwrite=true;equipmentsettings=[{typeprefix="_EQP1";typedefinition="i=58";maxdepth=15;startactive=true;startnodeid="ns=3;s=BuildingAutomation"}];
Tag settings
All settings and values, besides prefixes and OPCUANodeID string identifiers are case insenstive.
Setting | Value | Default value | Example | Description |
|---|---|---|---|---|
prefix | [StringValue] | "Tags1_" | Prefix to add every every tag generated by autoconfig. If common settings have prefix defined, this prefix will be appended after. Example: Server1_Tags1(OPC UA TAG name)_ | |
startnodeid | [OPCUANodeID] | "i=85" | "ns=2;s=Demo" | OPC UA Node ID to start browsing for variables to generate tags. The start node is not included. |
maxdepth | [Integer] | -1 | Maximum depth to browse from startnodeid. -1 means unlimited. | |
startactive | [True/False] | True | Set the generated tag in active state. | |
namespaceblacklist | [ArrayOfInteger/String] | [2,9] | Objects with OPC UA namespace index to be ignored. Useful for filtering out metadata. It is recommended to use explicit namespace uris, as indexes are not quaranteed to be constant in the OPC standard. | |
namespacewhitelist | [ArrayOfInteger/String] | [1,2,9] | Only accept objects with OPC UA namespace indexes. Has no effect if left empty. | |
maxstringlength | [UnsignedInteger] | 64 | Maximum length of string values | |
maxarraylength | [UnsignedInteger] | 64 | Maximum array length of variable length arrays | |
preservenames | [True/False] | False | Uses names as is from OPC UA Server without nodeIds. Configured prefixes are still applied. If prefixes are omitted, this setting may cause conflicts and potential issues on the target database. | |
dafrequency | [UnsignedInteger] | 1000 | Default Da Frequency value to use in milliseconds |
Example of tag settings: prefix="_DYNAMIC";startnodeid="ns=2;s=Demo.DynamicNodes";maxdepth=5;startactive=true;
Equipment model settings
All settings and values, besides prefixes and OPCUANodeID string identifiers are case insenstive.
Setting | Value | Default Value | Example | Description |
|---|---|---|---|---|
rootname | [StringValue] | VtrinOPCUAClient Autoconfig | "Equpments1" | Name of root object for equipment instances generated by this autoconfig setting. |
typeprefix | [StringValue] | "Type1_" | Prefix to add every every equipment type generated by autoconfig. If common settings have prefix defined, this prefix will be appended after. Example: Server1_Type1(TypeName) | |
startnodeid | [OPCUANodeID] | "i=85" | "ns=3;s=BuildingAutomation" | OPC UA Node ID to start browsing for variables to generate equipments. The start node is not included. |
includestartnode | [True/False] | True | Will createstartnodeid's object into equipment instance. Setting as false starts creating instances from its childs. | |
maxdepth | [Integer] | -1 | Maximum depth to browse from startnodeid. -1 means unlimited. | |
startactive | [True/False] | True | Set the generated equipment in active state. | |
typedefinition | [OPCUANodeID] | "i=88" | OPC UA Node ID to start browsing for object types. | |
typestoignore | [ArrayOfOPCUANodeID] | ["i=2318","i=2319"] | Array of OPC UA Node IDs of object types to ignore. Useful for filtering out metadata types to exclude from equipment model generation. | |
maxstringlength | [UnsignedInteger] | 64 | Maximum length of string values | |
maxarraylength | [UnsignedInteger] | 64 | Maximum array length of variable length arrays | |
preservenames | [True/False] | False | Uses names as is from OPC UA Server without nodeIds. Configured prefixes are still applied.If prefixes are omitted, this setting may cause conflicts and potential issues on the target database. | |
samplinginterval | [UnsignedInteger] | 1 | Default sampling interval value to use in seconds | |
publishinginterval | [UnsignedInteger] | 1 | Default publishing interval value to use in seconds |
Example of equipment model settings:
typeprefix="_EQP1";typedefinition="i=58";maxdepth=15;startactive=true;startnodeid="ns=3;s=BuildingAutomation";typestoignore=["i=2318"];
Examples
Example 1
This example loads autoconfiguration settings from a file, and runs the autoconfiguration when the server model has been changed, with minumum of a hour since last run.
| Section | Key | Value |
|---|---|---|
| VtrinOPCUAClient | autoconfig:OPCSERVER1 | file=D:\ABB\RTDB1\application\Config\OpcIniFiles\autoconfig.txt |
| VtrinOPCUAClient | autoconfigrunsettings:OPCSERVER1 | interval=1:00:00;enabled=true;runonmodelchange=true;runoninterval=false; |
| VtrinOPCUAClient | uaserver:OPCSERVER1 | securityselection=no;url=opc.tcp://127.0.0.1:48010; |
enabled=true;prefix="Prefix1";overwrite=true;equipmentsettings=[{typeprefix="_EQP1";typedefinition="i=58";maxdepth=15;startactive=true;startnodeid="ns=3;s=BuildingAutomation";typestoignore=["i=2318"]}];tagsettings=[{prefix="_DYNAMIC";startnodeid="ns=2;s=Demo.DynamicNodes";maxdepth=5;startactive=true}];Example 2
This example runs autoconfiguration every day at midnight.
| Section | Key | Value |
|---|---|---|
| VtrinOPCUAClient | autoconfig:opc.tcp://127.0.0.1:48010 | enabled=true;prefix="Prefix1";overwrite=true;equipmentsettings=[{typeprefix="_EQP1";typedefinition="i=58";maxdepth=15;startactive=true;startnodeid="ns=3;s=BuildingAutomation"}]; |
| VtrinOPCUAClient | autoconfigrunsettings:opc.tcp://127.0.0.1:48010 | runonstart=false;runoninterval=true;interval=1.00:00:00;firstrun=30.1.2026 00:01:00; |
Remarks
If generated equipment instance is deleted or edited manually, associated DataAccessSource and DataAccessRealtime instances should be removed, otherwise subsequent autoconfiguration runs will generate duplicate non-functional DataAccessSource and DataAccessRealtime entries, resulting in newly generated instance not receiving any values from server.
Using RTDB OPC UA Server as a source
Warning: When using RTDB database as a source, scope of tag and equipment model settings should be limited. startnodeid and typedefinition settings, should have setting other than default, as default settings will cause all classes and instances to be copied over to target database leading to collisions and issues, especially if preservenames -setting is on.
It is recommended to use NetSync instead.
However Vtrin OPC UA Client Autoconfiguration feature is useful for grabbing tags and (limited set of) equipments' from RTDB source server.
Example
| Section | Key | Value |
|---|---|---|
| VtrinOPCUAClient | autoconfig:RTDBSERVER | file=D:\ABB\RTDB1\application\Config\OpcIniFiles\rtdbautoconfig.txt |
| VtrinOPCUAClient | autoconfigrunsettings:RTDBSERVER | enabled=true; |
| VtrinOPCUAClient | uaserver:RTDBSERVER | url=opc.tcp://127.0.0.1:4841; |
This example copies over tags and equipment generated by autoconfig from another RTDB database keeping the original names. preservenames setting is set to true, and prefix is being aplied, and most importantly in equipment settings typedefinition is set to nodeId of baseclass of autoconfig generated classes, same applies to startnodeid where it is set to root instance of autoconfig generated equipment instances. In tag settings startnodeid is set to node containing just variables.
Note that the nodeIds' of typedefinition and root instance are unique per database.
enabled=true;prefix="RTDB1_";overwrite=false;equipmentsettings=[{preservenames=true;typeprefix="TYP_";typedefinition="ns=2;s=Path_Prefix1_EQP1;VtrinOPCUAClient AutoconfigClass";maxdepth=15;startactive=true;startnodeid="ns=2;s=/Path/f7882d48-9266-4807-81f3-373a0ca9071d|Prefix1;VtrinOPCUAClient Autoconfig";typestoignore=["i=2318"]}];tagsettings=[{startnodeid="ns=2;s=Variable";maxdepth=5;startactive=true;preservenames=true}];Updated 10 days ago
