3 OPC 接口基本知识
3.6 SIMATIC NET 中的 OPC 数据访问及 OPC 报警和事件的性能
3.6.15 采样速率 - 如何将其用于特定项?
设置数据访问规范的 3.00 及以上版本的采样速率
使用“RequestedUpdateRate”和“RevisedUpdateRate”设置用于监视变量的更新率。 更新 率适用于一个或多个激活的 OPC 组。
除此之外,自数据访问规范 3.00 起,可使用可选的“IOPCItemSamplingMgt”接口设置采 样速率。 它们可高于或低于组更新率 (RequestedUpdateRate/RevisedUpdateRate)。 这 允许调整 OPC 组中各项的采样速率以更准确地适应更改的实际速率。 在此种情况下,必 须在 OPC 服务器上缓冲项特定的值。
3.6 SIMATIC NET 中的 OPC 数据访问及 OPC 报警和事件的性能 OPC 组中采样速率的示例
图 3-35 OPC 组中的采样速率
服务器上的 OPC 组 1 具有 A、B 和 C 这三个项。组更新率为 10 秒。 组和所有项均将处 于激活状态。 按照如下方式对这些项进行组态:
● 项 A
– 采样速率:2 s – 缓冲:激活 – 缓冲区大小: 2
● 项 B
– 采样速率:15 s
● 项 C
– 无已组态的采样速率
在使用 10 秒的组更新率情况下,通过使用回调函数将带有时间戳的项 A、B 和 C 的更改 值(值、质量)传输到 OPC 客户端。
如果组更新率 (10 s) 内存在项 A 的多个已更改数据,则会将多达 2 个的最新更改值传输 到 OPC 客户端(缓冲区大小 = 2)。
OPC 客户端的组更新率不由采样进行更改。 如果项的所需采样速率和组的更新率相同,
则与规范版本 2.xx 中的响应相比没有任何区别。
缓冲和传输项
以下规则当前适用于具有组更新的项的返回:
1. 如果质量因最近更新而发生了更改,则将该项返回至客户端。
2. 如果值因最近更新而发生了更改并且总更改超过死区(如果适用),则将该项返回至 客户端。
如果采样速率短于组更新率,则服务器需要额外的逻辑来决定在下一次更新中被返回至客 户端的内容。
如果未启用缓冲且至少一个采样符合上述条件 1 和 2,则会将最新值返回至客户端。
此外,当最新值不符合条件 1 和 2 时,还会将最新采样返回。
如果启用了缓冲,则服务器在其读取符合条件 1 和 2 的变量之前,不会启动缓冲采样。
当服务器开始为项缓冲采样后,如果新采样的质量或值与先前采样相比有所不同,则会将 新采样添加到缓冲区。
如果新采样和缓冲区中的最后采样相同,则服务器将仅更新缓冲区中最后采样的时间戳。
扼要重述: 已返回至客户端的采样集将是一系列值,而这些值都不同于先前的采样,并 且具有反映该项被知道具有该值的上次时间的时间戳。
如果项具有使用特定 OnDataChange 回调返回的多个值/质量/时间戳,则将存在多个 ClientHandle,并根据集合的大小,使用对应的值/质量/时间戳(这三个构成一组)进行 返回。
通过 OPC 数据访问 3.00 引入的用于项缓冲的函数称为“SetItemBufferEnable”。
OPC 服务器向客户端发出值信号时,需要使用 OnDataChange() 函数。
3.6 SIMATIC NET 中的 OPC 数据访问及 OPC 报警和事件的性能