OPC Historical Data Access Client

OPC Historical Data Access Client

OPC Historical Data Access 1.20 Client communication protocol

Supported device types and versions
Communication line configuration
Communication station configuration
I/O tag configuration
Setting of the right strategy for data reading
DCOM configuration to connect to OPC remote server
Errors and problems
Literature
Changes and modifications
Document revisions

Supported device types and versions


The protocol supports a client side of communication with OPC (OLE for Process Control) HDA (Historical Data Access) servers according to specifications OPC HDA ver. 1.20.

Communication line configuration


Communication line category: OPC Client.

OPC parameters:

  • OPC Host: It is required only for "Remote" access, i.e. it is defined only for OPC server type "Remote" (string max. 50 characters). OPC HDA Server must be installed on a computer. You can se the names according to UNC (Universal Naming Convention) (e.g. "\\server" or "server"), DNS domain names (e.g. "domain.com", "example.company.com") or IP address ("196.54.23.113").

  • Backup Host: It is required only for "Remote" access. It is a backup OPC host. If it is defined, D2000 KOM tries to establish a communication alternately with OPC Host and Backup Host after failure of communication.

  • OPC Server: A name (ProgID) of OPC server (string max. 50 characters).

  • Server Type: "InProc", "Local" or "Remote".

Communication station configuration


Communication protocol: OPC Historical Data Access 1.20.

This communication protocol does not require any address parameters for a station.

 

Station protocol parameters

You may configure the following station parameters:

Table 1

Key word

Full name

Meaning

Unit

Default value

FULL_DEBUG

Full Debug

It turns the debug records on. It significantly increases the number of information about the communication. We recommend you to activate it only when detecting problems and debugging of communication.

YES/NO

NO

RCD

Reconnect/Reinitialisation Delay

Delay after failed operations:

 

  • creating of items GetItemHandles,

  • reconnection to OPC HDA Server after it failed, was stopped or disconnected via network,

  • creating of items after reconnection to OPC HDA Server.

sec

5

BNDS

Include Bounds

It sets the parameter "Bounds" (the reading of the threshold limits of interval even if they are beyond the interval) in synchronous/asynchronous reading of "raw" values.

YES/NO

NO

ASM

Async Mode

It sets an asynchronous mode of activity when data reading. See the chapter Setting of the right strategy for data reading.

YES/NO

NO

NVAL

Maximum number of values

It sets the parameter NumItems when synchronous/asynchronous reading of "raw" values. The implicit value 0 represents the all values in the given interval. See the chapter Setting of the right strategy for data reading.

Positive integer number

0

RINTR

Resample Interval

It sets the value of "ResampleInterval" when synchronous/asynchronous reading of "processed" values. See the chapter Setting of the right strategy for data reading.

ddd hh:mi:ss

60 sec

UINTR

Update Interval

It sets the value of "UpdateInterval" in the callings "AdviseRaw" and "AdviseProcessed". See the chapter Setting of the right strategy for data reading.

ss.mss

1 sec

QERR

QERR Value

Integer value of "ERROR" status for conversion to the quaternary input Qi.

0,1,2,3

3

QOFF

QOFF Value

Integer value of "OFF" status for conversion to the quaternary input Qi.

0,1,2,3

2

QON

QON Value

Integer value of "ON" status for conversion to the quaternary input Qi.

0,1,2,3

1

QTRANS

QTRANS Value

Integer value of "TRANS" status for conversion to the quaternary input Qi.

0,1,2,3

0

OPCHQED

Map ExtraData as flag

Mapping of OPC HDA flag of quality Extra Data to the attributes of I/O tag value.

None, FA, FB, FC, FD, FE, FF, FG, FH, FI, FJ, FK, FL, FM, FN, FO, FP

None

OPCHQIN

Map Interpolated as flag

Mapping of OPC HDA flag of quality Interpolated to the attributes of I/O tag value.

OPCHQRA

Map Raw as flag

Mapping of OPC HDA flag of quality Raw to the attributes of I/O tag value.

OPCHQCA

Map Calculated as flag

Mapping of OPC HDA flag of quality Calculated to the attributes of I/O tag value.

OPCHQNB

Map NoBound as flag

Mapping of OPC HDA flag of quality No Bound to the attributes of I/O tag value.

OPCHQND

Map NoData as flag

Mapping of OPC HDA flag of quality No Data to the attributes of I/O tag value.

OPCHQDL

Map DataLost as flag

Mapping of OPC HDA flag of quality Data Lost to the attributes of I/O tag value.

OPCHQCO

Map Conversion as flag

Mapping of OPC HDA flag of quality Conversion to the attributes of I/O tag value.

OPCHQPA

Map Partial as flag

Mapping of OPC HDA flag of quality Partial to the attributes of I/O tag value.

OPCQFNS

Map NonSpecific as flag

Mapping of OPC DA flag of quality Non Specific to the attributes of I/O tag value.

OPCQFLO

Map LocalOverride as flag

Mapping of OPC DA flag of quality LocalOverride to the attributes of I/O tag value.

OPCQFCE

Map ConfigError as flag

Mapping of OPC DA flag of quality Config Error to the attributes of I/O tag value.

OPCQFNC

Map NotConnected as flag

Mapping of OPC DA flag of quality Not Connected to the attributes of I/O tag value.

OPCQFDF

Map DeviceFailure as flag

Mapping of OPC DA flag of quality Device Failure to the attributes of I/O tag value.

OPCQFSF

Map SensorFailure as flag

Mapping of OPC DA flag of quality Sensor Failure to the attributes of I/O tag value.

OPCQFLK

Map LastKnown as flag

Mapping of OPC DA flag of quality Last Known to the attributes of I/O tag value.

OPCQFCF

Map CommFailure as flag

Mapping of OPC DA flag of quality Comm Failure to the attributes of I/O tag value.

OPCQFOOS

Map OutOfService as flag

Mapping of OPC DA flag of quality Out Of Service to the attributes of I/O tag value.

OPCQFWID

Map WaitingForInitData as flag

Mapping of OPC DA flag of quality Waiting For Initial Data to the attributes of I/O tag value.

OPCQFLU

Map LastUsable as flag

Mapping of OPC DA flag of quality Last Usable to the attributes of I/O tag value.

OPCQFSC

Map SensorCal as flag

Mapping of OPC DA flag of quality Sensor Cal to the attributes of I/O tag value.

OPCQFEGUE

Map EGUExceeded as flag

Mapping of OPC DA flag of quality EGU Exceeded to the attributes of I/O tag value.

OPCQFSN

Map SubNormal as flag

Mapping of OPC DA flag of quality Sub Normal to the attributes of I/O tag value.

I/O tag configuration


I/O tag types: Ai, Ci, Di, Qi,  TiA, TiR, TxtI.

The address of I/O tag requires to set "OPC Item ID" (string max. 200 characters).

Other required parameters ("OPC HDA Item Parameters") are:

  • The selection between "Raw" and "Processed" type of value which is read.

  • If you choose "Processed", then set also "Aggregate".

  • The option "Async Advise" to permit the asynchronous continuous data acquisition.

Setting of the right strategy for data reading


OPC Historical Data Access is a specification that enables to read the historical data - either "raw" or "processed". Data may be read by the synchronous or asynchronous callings. The asynchronous interface enables also "advise" of required data, i.e. a periodical (see the parameter "Update Interval") sending of the current values from OPC HDA Server by the  asynchronous call-back in a client - KOM process. The only required interface, according to specification of OPC HDA, is "SyncRead" for reading of "raw" data synchronously.

In D2000 KOM Process the protocol OPC HDA is implemented in the way that enables as effective as possible reading of archive data, including the updating of the last values, so that it avoids to combine "OPC Historical Access" protocol with "OPC Data Access" one. The tell command GETOLDVAL enables to call the reading of historical data in any time interval. The obtained data are saved to D2000 Archiv if the primary archive value was used for archiving of the particular I/O tag.

The current data may be acquired in two ways:

  1. Minimalist:
    It uses only the synchronous interface "SyncRead". According to the setting of station time parameters, the functions "ReadRaw" and "ReadProcessed" are called periodically. The required interval of values starts from the time of last valid value up to current time. If several values have been received in given interval, the last value with the latest time stamp is considered to be a current value. The other values are sent as "old" values to the server and are stored to the D2000 Archiv.

  2. Advise:
    It uses the functions of asynchronous interface "AsyncRead", "AdviseRaw" and "AdviseProcessed". OPC HDA Server sends the last valid data of "raw" or "processed" items in the period which is defined in the parameter "Update Interval". If any new value is not in the defined interval, OPC HDA Server returns the flag of quality "No Data".

The parameter "Async Mode" enables to set a fully asynchronous mode, which uses only "AsyncRead" interface. However, the asynchronous mode has some limitations that is why we do not recommend it in these situations:

  • When reading of "raw" data asynchronously, a repeated reading of data that were not in one call is not supported (the flag OPC_S_MOREDATA is returned).

  • In asynchronous mode, there is not resolved the right timing of finishing the transaction of tell command GETOLDVAL. It causes an ineffective saving of received values by D2000 Archiv.

The protocol OPC Historical Data Access does not support the data writing (the interfaces "SyncUpdate" and "ReadUpdate"). Also the interfaces "SyncAnnotations", "AsyncAnnotations", "Browser" and "Playback" are not supported.

DCOM configuration to connect to OPC remote server


Remote browsing/local registration of OPC Server

Since the version 7.01.020 rel. 055 and higher D2000 KOM Process supports the acquisition of GUID OPC Servers from ProgID which is placed on remote desktops via DCOM interface with the help of utility OPCENUM (remote browsing). If the utility/windows service OPCENUM has been installed on remote OPC server and the level of access rights enables a remote browsing, the local registration of OPC server is not necessary on the client side. The utility OPCENUM is a part of package "OPC Core Components Redistributable". You can find it on http://www.opcfoundation.org/, or in OPC Server installation .

The registration of OPC Server is not necessary on the OPC client side (D2000 KOM). However, if you decide to register it, you can use one of these two ways:

  1. Some of the OPC Servers are supplied with a setup program to support the connection of OPC clients of "third parts" to the remote OPC Server. These programs are named for example "OPC Server Connect". After their installing, OPC Server (its ProgID) occurs in the list of OPC Servers on the clients PC. D2000 OPC Client will use this information only for getting of CLSID from ProgID (see the communication line configuration). The registered OPC Server, however, cannot be operated on the client-side.

  2. Manual registration of OPC Server on the client side. Follow these steps:

    • Copy OPC Server (.exe file + necessary .dll files) into the auxiliary directory on the client PC.

    • Start a command line in this directory.

    • Register OPC Server. If OPC Server is named e.g. "OPCSERVER.EXE" on the disk, then write the command: "OPCSERVER.EXE /regserver" and press ENTER.

    • Delete the auxiliary directory.

Always read the instructions for installation OPC Server and check your steps with those stated in the manual.

 

Setting of access rights

The connection to the remote OPC Server is subject to the access right control of Windows. From this reason, the same user (together with the password) must be created on both the computer. On the OPC client side the user must be logged. On the OPC Server, the user must have some rights therefore follow these instructions:

  • Start the program "DCOMCNFG" in the command line on computer with OPC Server. Check, if DCOM is enabled - the option "Enable Distributed COM on this computer".

  • Find OPC Server in the list and open the "Properties" dialog window. Open tab "Security".

  • Switch "Launch Permissions" to "Customize" and click on the button "Edit...".

  • Check the particular user in the list or add him to it.

  • Do the same for "Access Permissions".

Wrong setting of the access rights will probably cause an error (see the chapter "COM/OPC error dump"):

ERROR: ServerProgID caused COM/OPC error 80070005H on CoCreateInstanceEx(CLSCTX_REMOTE_SERVER), Error string : Access is denied.

Track records in the system Event Viewer.

You can avoid this problem, if you add a group "Everyone" to "Launch Permissions" and "Access Permissions". To ensure that the OPC Server will be started under the particular user account (and no under "SYSTEM account"), open "Identity" tab and fill the data for "This user". In this case, you cannot consider OPC Server to be a safe.

OPC Client (D2000 KOM) is not allowed to be started as "Windows service" with parameters "/X1" or "/X2", because then it does not work under the logged on user but under  "SYSTEM account". An authentication of the access rights by OPC Server will fail. Use a start parameter "/X4".

Read the instructions to OPC Server again and keep the producer recommendations.

For the user of WindowsXP (or higher) with SP2 we recommend to change the parameter "Network access: Let Everyone permissions apply to anonymous users" to "Enabled" in the settings "Local Security Policy/Security Options".

Note about SIMATIC NET and possibly other OPC servers

If the OPC server is configured to run under "The interactive user" on the last tab Identity of the "Properties" dialog window, it may cause the OPC server to be available only when a user is logged on the computer. We recommend to change this setting to "The launching user", "This user", resp. "The system account".

Errors and problems


The error messages, mentioned below, may occur during the start or communication. It is recommended to activate the monitoring of communication in the configuration of line for easier identification of problem. You can choose it from these levels:

  • Monitor (at least)

  • Monitor & Disk (recommended)

  • Disk (recommended)

When you set "Monitor & Disk" or "Disk", the file "line_name.LOG" occurs in the subdirectory "\TRACE" in application directory on the computer with the running communication process. This file contains all the debug and error messages.

Error:

Unconvertible value for Item: 'ItemID', I/O tag: 'IOTagName'!

Description:

The received value cannot be converted to suitable value type of I/O tag in D2000. Customize the value type of I/O tag.

Error:

ShutDown OPC HDA Server : 'ServerProgID' !

Description:

OPC server has been stopped correctly in spite of it has the active clients.

Error:

OPC HDA Server 'ServerProgID' is unavailable !

Description:

Remote DCOM OPC Server is unavailable. D2000 KOM (a client) will retry to connect to the server. Check the PC on which OPC Server is installed (whether it is running and properly connected to a local network).

Error:

Async reading raw data failed, Item: 'ItemID'

Description:

Error when calling "ReadRaw" of the interface "AsyncRead". Check COM/OPC error dump to gain a detailed information.

Error:

Sync reading raw data failed, Item: 'ItemID'

Description:

Error when calling "ReadRaw" of the interface "SyncRead". Check COM/OPC error dump to gain a detailed information.

Error:

Async reading processed data failed, Item: 'ItemID'

Description:

Error when calling "ReadProcessed" of the interface "ReadAsync". Check COM/OPC error dump to gain a detailed information.

Error:

Sync reading of processed data failed, Item: 'ItemID'

Description:

Error when calling "ReadProcessed" of the interface "ReadSync". Check COM/OPC error dump to gain a detailed information.

Error:

SetCallBack - FAILED, Server: 'OPCServerProgID'.

Description:

Error when registering the asynchronous call-back procedure. Check COM/OPC error dump to gain a detailed information.

Error:

OPCConnectToServer - FAILED, Host: 'ServerName', Server: 'OPCServerProgID'!

Description:

Failure of connection to OPC Server. Check COM/OPC error dump to gain a detailed information.

Error:

AsyncAdviseRaw - FAILED, I/O tag: 'IOTagName', ItemID: 'ItemID', Station: 'StationName'

Description:

Error when calling "AdviseRaw" of the interface "ReadAsync". Check COM/OPC error dump to gain a detailed information.

Error:

AsyncAdviseProcessed - FAILED, I/O tag: 'IOTagName', ItemID: 'ItemID', Aggregate='Aggregate', Station: 'StationName'