OPC Data: Value, Quality, and TimeStamp
Introduction to OPC Data
OPC servers provide access to many server items. To reduce network traffic between the server and the “device” associated with each server item (a field instrument, or a memory location in a PLC, SCADA, or DCS system) the OPC server stores information about each server item in the server's “cache,” updating that information only as frequently as required to satisfy the requests of all clients connected to that server. Because this process results in data in the cache that may not reflect the actual value of the device, the OPC server provides the client with additional information about that value.
This section describes the OPC Value, Quality, and TimeStamp properties, and how they should be used together to assess the information provided by an OPC server.
Relationship Between Value, Quality, and TimeStamp
Every server item on an OPC server has three properties that describe the status of the device or memory location associated with that server item:
Value — The
Value
of the server item is the last value that the OPC server stored for that particular item. The value in the cache is updated whenever the server reads from the device. The server reads values from the device at the update rate specified by thedagroup
object'sUpdateRate
property, and only when the item and group are both active. You control the active status of an item or group using that object’sActive
property.In addition, for analog type data (data with the additional OPC Foundation Recommended Properties
'High EU'
and'Low EU'
) the percentage change between the cached value and the device value must exceed theDeadbandPercent
property specified for that item in order for the cached value to be updated.Quality — The
Quality
of the server item is a character vector that represents information about how well the cache value matches the device value. The Quality is made up of two parts: a major quality, which can be'Good'
,'Bad'
, or'Uncertain'
, and a minor quality, which describes the reason for the major quality. For more information onQuality
, see OPC Quality.The
Quality
of the server item can change without theValue
changing. For instance, if the OPC server attempts to obtain aValue
from the device but that operation fails, theQuality
will be set to'Bad'
. Also, when you change the client’s Active property, theQuality
will change.You must always examine the
Quality
of an item before using theValue
property of that item.TimeStamp — The
TimeStamp
of a server item represents the most recent time that the server assessed that the device set theValue
andQuality
properties of that server item. TheTimeStamp
can change without theValue
changing. For example, if the OPC server obtains a value from the device that is the same as the currentValue
, theTimeStamp
property will still be updated, even if theValue
property is not.
Industrial Communication Toolbox™ software provides access to the Value
,
Quality
, and TimeStamp
properties of a
server item through properties of the OPC daitem
object
associated with that server item.
How Value, Quality, and TimeStamp Are Obtained
Industrial Communication Toolbox provides all three OPC Data Access Standard mechanisms for reading data from an OPC server. The toolbox uses these three mechanisms in various ways to return data from those functions, to provide event information, to update properties of toolbox objects, and to log data to memory and disk.
The toolbox uses the three OPC Data Access mechanisms as described in the following sections:
OPC Data Returned from Synchronous Read Operations describes the synchronous read mechanism used by the
read
function.OPC Data Returned in Asynchronous Read Operations describes the asynchronous read mechanism used by the
readasync
function.OPC Data Returned from a Data Change Event describes the data change event notification mechanism used with subscribed, active groups, with the refresh function, and by the toolbox logging process.
OPC Data Returned from Synchronous Read Operations
You initiate a synchronous read operation by using the read
function. When you read from
a dagroup
object, all items in that group are read in one
instruction.
You can specify the source of a synchronous read operation as
'cache'
or 'device'
. If you read from
the cache, the server simply returns the value in the cache. If you read from
the device, the server will get the value from the device and update the cache
before sending the Value, Quality, and TimeStamp information back as part of the
read operation.
Industrial Communication Toolbox returns the data in the output structure from the read operation. Each element of the structure array contains information about one of the items read.
Whenever you read values using the read function, the toolbox updates the
daitem
object's Value
,
Quality
, and TimeStamp
properties with
the values read from the server.
OPC Data Returned in Asynchronous Read Operations
You initiate an asynchronous read operation by using the
readasync
function. When you read from a
dagroup
object, all items in that group are read in one
instruction.
Asynchronous read operations always use the device as the source of the read. Whenever you send an asynchronous read request, the server will read values from the devices connected to the items. The server will then update that server item's Value, Quality, and TimeStamp in the cache before sending an asynchronous read event back to the toolbox.
The toolbox returns information from an asynchronous read operation via the
read async event structure. This event structure is stored in the
opcda
client object's event log, which you can access
using the EventLog
property of the client. The event
structure is also passed to the callback function defined in the
ReadAsyncFcn
property of the dagroup
object that initiated the asynchronous read operation.
When an asynchronous read operation succeeds, in addition to returning data
via the event structures, the toolbox also updates the Value
,
Quality
, and TimeStamp
properties of
the associated daitem
object.
OPC Data Returned from a Data Change Event
The third mechanism for getting data from an OPC server involves the data
change event. The OPC server generates a data change event for a group at the
period specified by the UpdateRate property when the
Value or Quality of an item in the group changes. You do not have to
specifically request a data change event, because the OPC server will
automatically generate a data change event. However, you can force a data change
event at any time using the refresh
function.
An OPC server will generate a data change event only for an active, subscribed
group containing active items. You control the active status of
dagroup
objects and daitem
objects by
setting their Active
property. You control the subscribed
status of a dagroup
object by setting the
Subscription
property of the dagroup
object.
The following points describe how an OPC server generates a data change event:
When you configure a group, you define the rate at which the server must scan items in that group. This rate is controlled by the
UpdateRate
property for adagroup
object. The server updates the Value, Quality, and TimeStamp values in the cache for the items in that group at the required update rate. Note that if a device cannot provide a value in that time, the server may reduce the rate at which it updates the value in the server cache for that item.If you set an item's
Active
property to'off'
, the server will stop scanning that item. You must set theActive
property to'on'
for the server to scan the item again.If you set the Active property of a
dagroup
object to'off'
, the server will stop scanning all items in that group. You can still perform asynchronous read operations, and synchronous read operations from the'device'
, but no operations involving the server cache can be performed. You must set theActive
property to'on'
to enable operations involving the server cache.If the
Subscription
property for adagroup
object is set to'on'
, then every time the server updates cache values for the items in that group, the server will send a data change event for that group, to the client object. The data change event contains information about every item whose Value, Quality, or TimeStamp updated.If you set the
Subscription
property to'off'
, then the OPC server will not generate data change events. However, as long as the group is still active, the OPC server will continue to scan all active items for that group, at the rate specified by theUpdateRate
property.
When the OPC server generates a data change event, the toolbox performs the following tasks:
The
daitem
objectValue
,Quality
, andTimeStamp
properties are updated for each item that is included in the data change event.The callback function defined by the
DataChangeFcn
property of thedagroup
object is called.If the group is logging data, the data change event is stored in memory and/or on disk.
If the group is logging, and the number of records acquired is a multiple of the
RecordsAcquiredFcnCount
property of thedagroup
object, then the callback function defined by theRecordsAcquiredFcn
property of thedagroup
object is called.