The first column (Function) is the short hand notation for the external functions that an OPC client application calls and the OPC server implements. The Source Column is the source from which the client wants the data to be obtained (either device or cache). The Enable Column indicates the callback enable state as set by AsyncIO2::SetEnable. The Group Column is the active state of the group.. The Item Column is the active state of the Item. The Behavior Column is the behavior for this configuration state.
Certain Quality values are identified in the table and reflect required behavior with respect to the active state of groups and items. In all other cases, the server may return quality values as appropriate to communicate the current state of the data to the client.
The information in this table is also applicable to the automation interface.
Additional Notes:
Refresh is a special case of subscription, where refresh forces an OnDataChange call for all active items.
It is expected that most clients will use either Reads or Subscriptions for a particular group but not both. If both are used then there is some interaction between Reads and Subscriptions in that anything sent to the client as a result of a read is also considered to be the last value sent.
A transition from Inactive to Active will result in a
change in quality, and will cause a subscription callback for the item
or items affected. A change (in the group or item) from Active to Inactive
will cause a change in quality but will not cause a callback since by definition
callbacks do not occur for inactive items. That is, if you later do an
explicit read (sync or async) of an inactive group or item you will get
a quality indicating that the item is inactive.
|
|
Callbacks |
Active State |
Active State |
|
IOPCSyncIO::Read |
|
|
|
|
The Values and Quality for the requested items are returned to the client as return values from the method. The Value and Quality are the values that the server has in cache. |
IOPCSyncIO::Read |
|
|
|
|
A Quality of OPC_QUALITY_OUT_OF_SERVICE for the requested items is returned to the client as return values from the method. |
IOPCSyncIO::Read |
|
|
|
|
A Quality of OPC_QUALITY_OUT_OF_SERVICE for the requested items is returned to the client as return values from the method. |
IOPCSyncIO::Read |
|
|
|
|
The Values and Quality for the requested items are returned to the client as return values from the method. The Value and Quality are the values that the server obtains from the device when this method is called. The cache of the server should be updated with the acquired value and quality. |
|
|
Callbacks |
Active State |
Active State |
|
IOPCAsyncIO2::Read |
|
|
|
|
The Values and Quality for the requested items are sent to the client through the IOPCDataCallback::OnReadComplete method. The Value and Quality are the values that the server obtains from the DEVICE when this method is called. The CACHE of the server should be updated with the acquired value and quality. |
|
|
Callbacks |
Active State |
Active State |
|
IOPCAsyncIO2::Refresh |
|
|
|
|
The Values and Quality for all the Active items in the group are sent to the client through the IAdviseSink::OnDataChange method. The Value and Quality are the values that the server has in cache. |
IOPCAsyncIO2::Refresh |
|
|
|
|
The Values and Quality for all the InActive items in the group are not provided to the client. If there are no Active Items in the group then the server returns E_FAIL as the return value from the call. |
IOPCAsyncIO2::Refresh |
|
|
|
|
The server returns E_FAIL as the return value from the call. |
IOPCAsyncIO2::Refresh |
|
|
|
|
The Values and Quality for all items in the group are sent to the client through the IOPCDataCallback::OnDataChange method. The Value and Quality are the values that the server obtains from the device when this method is called. The cache of the server should be updated with the acquired values and qualities. |
IOPCAsyncIO2::Refresh |
|
|
|
|
The Values and Quality for all the InActive items in the group are not provided to the client. If there are no Active Items in the group then the server returns E_FAIL as the return value from the call. |
IOPCAsyncIO2::Refresh |
|
|
|
|
The server returns E_FAIL as the return value from the call. |
SUBSCRIPTION via IOPCDataCallback
|
|
Callbacks |
Active State |
Active State |
|
Subscription via IOPCDataCallback::
OnDataChange |
|
|
|
|
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. |
Subscription via IOPCDataCallback::
OnDataChange |
|
|
|
Server only acquires values from physical data sources for active items. | |
Subscription via IOPCDataCallback::
OnDataChange |
|
|
|
Server only acquires values from physical data sources for active items that are contained in active groups. | |
Subscription via IOPCDataCallback::
OnDataChange |
|
|
|
|
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 in the cache, then the cache of the server should be updated with the acquired value and quality. If the Quality has changed from the Quality in the cache, 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 cache of the server should be updated with the acquired value and quality. |
Subscription via IOPCDataCallback::
OnDataChange |
|
|
|
|
Server only acquires values from physical data sources for active items. |
Subscription via IOPCDataCallback::
OnDataChange |
|
|
|
|
Server only acquires values from physical data sources for active items that are contained in active groups. |
|
|
Callbacks |
Active State |
Active State |
|
IOPCAsyncIO::Read |
|
|
|
|
The Values and Quality for the requested items are sent to the client through the IAdviseSink::OnDataChange method. The Value and Quality are the values that the server has in cache. |
IOPCAsyncIO::Read |
|
|
|
|
A Quality of OPC_QUALITY_OUT_OF_SERVICE for the requested items is sent to the client through the IAdviseSink::OnDataChange method. |
IOPCAsyncIO::Read |
|
|
|
|
A Quality of OPC_QUALITY_OUT_OF_SERVICE for the requested items is sent to the client through the IAdviseSink::OnDataChange method. |
IOPCAsyncIO::Read |
|
|
|
|
The Values and Quality for the requested items are sent to the client through the IAdviseSink::OnDataChange method. The Value and Quality are the values that the server obtains from the device when this method is called. The cache of the server should be updated with the acquired value and quality. |
|
|
Callbacks |
Active State |
Active State |
|
IOPCAsyncIO::Refresh |
|
|
|
|
The Values and Quality for all the Active items in the group are sent to the client through the IAdviseSink::OnDataChange method. The Value and Quality are the values that the server has in cache. |
IOPCAsyncIO::Refresh |
|
|
|
|
The Values and Quality for all the InActive items in the group are not provided to the client. If there are no Active Items in the group then the server returns E_FAIL as the return value from the call. |
IOPCAsyncIO::Refresh |
|
|
|
|
The server returns E_FAIL as the return value from the call. |
IOPCAsyncIO::Refresh |
|
|
|
|
The Values and Quality for all items in the group are sent to the client through the IAdviseSink::OnDataChange method. The Value and Quality are the values that the server obtains from the device when this method is called. The cache of the server should be updated with the acquired values and qualities.. |
IOPCAsyncIO::Refresh |
|
|
|
|
The Values and Quality for all the InActive items in the group are not provided to the client. If there are no Active Items in the group then the server returns E_FAIL as the return value from the call. |
IOPCAsyncIO::Refresh |
|
|
|
|
The server returns E_FAIL as the return value from the call. |
SUBSCRIPTION via IDataObject (old)
|
|
Callbacks |
Active State |
Active State |
|
Subscription via (IDataObject::DAdvise) & (IAdviseSink::OnDataChange) |
|
|
|
|
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 IAdviseSink::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 IAdviseSink::OnDataChange method, and the cache of the server should be updated with the acquired value and quality. |
Subscription via (IDataObject::DAdvise) & (IAdviseSink::OnDataChange) |
|
|
|
|
Server only acquires values from physical data sources for active items. |
Subscription via (IDataObject::DAdvise) & (IAdviseSink::OnDataChange) |
|
|
|
|
Server only acquires values from physical data sources for active items that are contained in active groups. |