Skip to content
  • There are no suggestions because the search field is empty.

SLIK-DA not sending updates when timestamp changes

When the value changes, the clients are updated correctly, but not if only the timestamp is different. Is there any possibility to get updates from the SLIK-DA component in both situations?

The OPC Specification states that when an OPC Client subscribes to an Item, that the OPC Server should ONLY send an update when a Value or Quality change happens, but not when a timestamp change happens. Triggering an update on a timestamp change could have the possibility of sending too many events back to the client and thus overloading the machine. Subscriptions were defined this way so as to minimize the number of updates an OPC Client receives, so as to make better use of resources.

For these reasons, the SLIK-DA component only sends the update when the value or quality change occurs.  

Below is three potential solutions, there may be other ways to accomplish this as well.

Idea #1

Create a BOOLEAN Tag that would be used indicate a success/failure state which would describe the communications status with the device. For example, if communications is good the value could be 1/True, but as soon as there is a communications failure then the bit would change state.

In the case of a system where unsolicited communications are being used, then some kind of polling interval would be needed to actively call the remote device/software to qualify that it is indeed still there and responding.

Idea #2

As with Idea #1, instead of creating a bit to represent the quality of communications to the device, change the tag quality. i.e. during good communications tag qualities would be 192/GOOD, as soon as communications fail then change them to 0/BAD.

Idea #3

Create two new tags. The first tag would act as a counter and would update any time a timestamp change occurred but a value change did not.  The second tag could be a string that holds the name of the tags whose timestamp changed.  Based on this counter update and knowing the tag whose timestamp changed, force the update on the tag with the new timestamp.

OPC Specification Version 3.0 Section 4.2.17

Subscription via IOPCDataCallback::OnDataChange. In the use case where the group active is true and item active is true (which is the normal subscription method) the following is defined:

"The Value and Quality are the values that the server obtains from the device at a periodic rate sufficient to accommodate the specified UpdateRate. If the Quality has changed from the Quality last sent to the client, then the new value and new quality will be sent to the client through the IOPCDataCallback::OnDataChange method, and the cache of the server should be updated with the acquired value and quality. If the Quality has NOT changed from the Quality last sent to the client, the server should compare the acquired value for a change that exceeds the Deadband criteria. If the change in value exceeds the deadband criteria, , then the new value and new quality will be sent to the client through the IOPCDataCallback::OnDataChange method, and the cache of the server should be updated with the acquired value and quality."