通讯协议056——全网独有的OPC HDA知识一之接口(十一)IOPCHDA_Playback

本文简单介绍OPC HDA规范的IOPCHDA_Playback(可选)接口方法,更多通信资源请登录网信智汇(wangxinzhihui.com)。

此接口支持历史服务器的播放功能。这提供了从历史服务器获得初始数据集的能力,然后获得历史数据的持续更新。这与异步建议方法的不同之处在于,这些方法以当前时间为中心。回放接口支持从过去检索数据,然后从存储的数据中提供更新的方法。通常,更新以比数据存储时更频繁的速率发送。例如,请求可以是每分钟发送10分钟的数据。

1)HRESULT  ReadRawWithUpdate(dwTransactionID, htStartTime, htEndTime, dwNumValues, ftUpdateDuration, ftUpdateInterval, dwNumItems, phServer, pdwCancelID, ppErrors)

此操作最初将检索从开始时间到结束时间的数据。在初始响应之后,它将定期(以ftUpdateInterval)响应由ftUpdateDuration标识的数据量。初始响应的结束时间用作第一次更新的开始时间。之后,上次更新的结束时间被用作下一次更新的开始时间。

此功能用于播放原始历史数据。通过控制更新间隔,数据可以实时、慢速或比实时更快地显示在趋势上。

结果通过客户端的IOPCHDA_DataCallback::OnPlayback方法返回。

仅支持向前播放。初始请求的域由htStartTime、htEndTime和dwNumValues定义。必须定义htStartTime的值。如果未指定htEndTime,则该请求应针对htStartTime中所请求值数的所有数据。然后,应根据上次返回值时的ftUpdateDuration和ftUpdateInterval发送进一步的数据。

如果htStartTime或htEndTime是以字符串(相对)格式给定的,则OPCHDA_time结构(ftTime)的绝对时间将设置为服务器将相对时间转换为的FILETIME。

该请求继续以dwNumvals的块发送数据,直到所有请求的数据都已发送,返回可用于取消请求的事务ID,并使用组上的更新率来限制块返回率。

dwNumValues定义了将在单个回调中返回的任何项的最大值数。这可能是针对初始数据集或任何后续更新(因此请注意,更新可能需要多个回调)。

操作的实现取决于服务器。

2)HRESULT  ReadProcessedWithUpdate(dwTransactionID, htStartTime, htEndTime, ftResampleInterval, dwNumIntervals, ftUpdateInterval, dwNumItems, phServer, haAggregate, pdwCancelID, ppErrors)

该方法在标准的v1.0和v1.1之间进行了更改,以将haAggregate作为DWORD而非ENUM传递,从而允许供应商指定自己的聚合。使用该标准v1.0构建的服务器和客户端将与使用v1.1构建的服务器或客户端协同工作,但v1.0客户端可能与返回供应商指定聚合的v1.1服务器不兼容。

此操作最初将检索从开始时间到结束时间的数据。在初始响应之后,它将周期性地(以ftUpdateInterval)响应dwNumIntervals数量的数据,这些数据被划分为ftResampleInterval大小的仓。初始响应的结束时间用作第一次更新的开始时间。之后,上次更新的结束时间被用作下一次更新的开始时间。这是接口上的一个可选方法。

此功能用于播放处理过的历史数据。通过控制更新间隔,数据可以实时、慢速或比实时更快地显示在趋势上。

结果通过客户端的IOPCHDA_DataCallback::OnPlayback方法返回。

初始请求的域由htStartTime、htEndTime和ftResampleInterval定义。如果htStartTime或htEndTime是以字符串(相对)格式给定的,则返回的值将是服务器将该值转换为的FILETIME。必须指定这三个。htEndTime必须大于htStartTime。

ftResampleInterval确定将整个间隔划分为多少个子间隔。指定的函数在以htStartTime开始的每个子区间计算,并选择下一个ftResampleInterval内的数据,将根据每个子区间的haAggregate计算一个值。

对于与聚合值一起使用的MinimumActualTime和MaximumActualTime,如果在一个时间范围内存在该值的多个实例,则返回该值的哪个实例(时间戳)取决于服务器。在任何情况下,服务器可以设置OPCHDA_EXTRADATA质量标志,以使呼叫者知道存在具有该值的其他时间戳。

更新的域由上次返回值的时间ftResampleInterval和dwNumIntervals定义。

ftResampleInterval为0是非法的,导致返回状态为E_INVALIDARG。如果只需要初始数据集,则dwNumIntervals应设置为0。请求仍必须取消。

FTUpdateInterval不能小于FTResampleInterval。

返回的数据的顺序将与请求中ItemID的顺序相匹配。

3)HRESULT  Cancel(dwCancelID)

此功能取消未完成的操作。实际实现是特定于服务器的,但服务器将通过OPCHDA_CancelComplete回调进行响应,除非调用返回FAILED错误代码。

未完待续。更多通信资源请登录网信智汇(wangxinzhihui.com)。

你可能感兴趣的:(通讯协议,网络协议,信息与通信)