2. Variable 数据采集基础:Variable 定义、数据采集流程、采集周期与触发机制
在工业通信与自动化控制系统中,Variable(变量) 是数据采集的最小逻辑单元。理解 Variable 的定义、采集流程、周期与触发机制,是后续进行 Session 建立与性能优化的前提。本章将系统梳理这些基础概念,并揭示它们对通信性能的直接影响。
2.1 Variable 定义与属性
Variable 是对物理或逻辑数据点的抽象描述。在 OPC UA、Modbus、PROFINET 等协议中,Variable 通常包含以下核心属性:
| 属性 | 说明 | 示例值 |
|---|---|---|
| NodeId | 全局唯一标识符,用于定位变量 | ns=2;i=1001 |
| DataType | 数据类型,决定存储与传输大小 | Int32, Float, Boolean |
| ValueRank | 值的维度(标量/数组/矩阵) | -1 (标量), 1 (一维数组) |
| AccessLevel | 访问权限(读/写/读写) | CurrentRead, CurrentWrite |
| MinimumSamplingInterval | 最小采样间隔(毫秒),限制采集频率 | 100 (ms) |
| Historizing | 是否启用历史数据存储 | True / False |
性能提示: 在定义 Variable 时,应尽量使用最小必要数据类型(如使用
Int16 而非 Int64),并合理设置 MinimumSamplingInterval,避免无效高频采集消耗带宽与 CPU。
2.2 数据采集流程
一个完整的 Variable 数据采集流程通常包含以下 5 个阶段:
- 变量发现与注册: 客户端通过协议查询服务器地址空间,获取 Variable 的 NodeId 与元数据。
- 订阅创建: 客户端创建一个 Subscription(订阅),并将目标 Variable 添加到 MonitoredItem(监控项)列表中。
- 采样与缓存: 服务器按采样周期读取 Variable 值,并暂存于内部缓存队列。
- 发布通知: 服务器按发布周期将缓存中的数据打包成 PublishResponse,发送给客户端。
- 数据消费: 客户端解析响应,更新本地变量副本,并触发上层应用逻辑。
关键点: 采样周期与发布周期是独立的。采样周期决定数据读取频率,发布周期决定网络传输频率。合理解耦这两个周期是性能优化的核心手段之一。
2.3 采集周期
采集周期是影响通信性能最直接的参数。在 OPC UA 中,主要涉及两个独立周期:
- SamplingInterval(采样周期): 服务器读取 Variable 原始值的时间间隔。单位毫秒,最小值为
MinimumSamplingInterval。 - PublishingInterval(发布周期): 服务器将缓存数据打包发送给客户端的时间间隔。单位毫秒,通常为采样周期的整数倍。
| 参数 | 作用域 | 典型值 | 性能影响 |
|---|---|---|---|
| SamplingInterval | 服务器本地 | 100 ms ~ 1000 ms | CPU 负载、内存缓存大小 |
| PublishingInterval | 网络传输 | 500 ms ~ 5000 ms | 网络带宽、报文数量、延迟 |
常见误区: 将采样周期设置得极短(如 1 ms)但发布周期很长(如 10 s),会导致服务器缓存队列急剧膨胀,引发内存溢出或数据丢弃。建议采样周期与发布周期保持 1:5 ~ 1:10 的比例。
2.4 触发机制
Variable 数据采集的触发方式决定了数据何时被采集与上报。常见的触发机制包括:
- 定时触发(Cyclic): 按固定采样周期周期性采集。适用于温度、压力等缓变信号。
- 变化触发(DataChange): 仅当 Variable 值变化超过死区(Deadband)时触发采集与上报。适用于开关量、状态位。
- 事件触发(Event): 由特定系统事件(如报警、故障)触发采集。适用于异常监控。
- 查询触发(Polling): 客户端主动发起 Read 请求,服务器响应。适用于低频、按需采集。
2.5 性能优化要点总结
核心优化原则:
- 减少无效采样: 对缓变信号使用变化触发 + 死区,避免定时触发浪费 CPU。
- 合理设置周期比例: 采样周期 : 发布周期 ≈ 1:5 ~ 1:10,避免缓存堆积。
- 批量订阅: 将多个 Variable 放入同一个 Subscription,减少 Publish 报文数量。
- 数据类型优化: 使用最小必要数据类型,减少单 Variable 传输字节数。
- 避免过度查询: 优先使用订阅模式而非轮询模式,降低网络往返次数。