3. Tag与历史记录基础

在 Ignition 中,Tag Historian 并不是“打开开关就自动存所有数据”的黑盒。它能否记录、记录成什么样,取决于三个层面的配合:Tag 本身的类型、Tag 上配置的属性,以及历史记录提供者(Historian Provider)的存储模式与采样策略。理解这三者的关系,是后续做数据工程、报表、趋势分析的基础。

一、Tag 类型决定“能不能被历史化”

Ignition 的 Tag 主要分为内存 Tag(Memory Tag)、OPC Tag、表达式 Tag、查询 Tag 等。历史记录能力并不是所有 Tag 都天然具备,关键看它是否绑定到可采集的数据源,以及是否被历史提供者接管。

  • Memory Tag:值由脚本或用户写入,适合模拟量、状态位、配方参数。它本身不产生外部数据流,但可以被 Historian 记录,常用于测试和中间变量。
  • OPC Tag:直接映射到 PLC 或 OPC 服务器地址,是 Historian 最典型的数据源。它的值变化由设备驱动,采样频率受 OPC 扫描速率影响。
  • Expression Tag:由表达式计算得出,例如 {[.]Tank1/Level} * 100。它可以被历史化,但记录的是计算结果,不是原始信号。
  • Query Tag:从数据库查询返回值,通常用于展示,不建议作为高频历史记录源,因为查询本身有开销。
判断一个 Tag 能否被历史记录,先看它是否出现在 Historian 的“可记录 Tag”列表中,再看它是否被分配了历史提供者。类型只是前提,配置才是开关。

二、Tag 属性:历史记录启用的关键字段

在 Tag 编辑器中,与历史记录直接相关的属性集中在 History 分组下。常见属性包括:

属性 作用 典型取值
History Enabled 是否将该 Tag 纳入历史记录 True / False
History Provider 指定由哪个 Historian 提供者存储 Default Historian / 自定义提供者
Sample Mode 采样模式:按时间或按变化 Periodic / On Change
Sample Rate 周期采样的时间间隔(毫秒) 1000、5000、60000
Deadband 变化采样时的死区,抑制微小波动 0.1、0.5、1.0
Min / Max 有效值范围,超出可能被标记为不良 0 / 100

其中 Sample Mode 和 Deadband 是影响存储量和数据质量最大的两个参数。周期采样会按固定节奏写入,适合需要连续曲线的场景;变化采样只在值变化超过死区时写入,适合状态量和缓慢变化的模拟量。

三、历史记录启用条件与存储模式

要让一个 Tag 真正产生历史数据,必须同时满足以下条件:

  1. Tag 的 History Enabled 被勾选。
  2. Tag 被分配了可用的 History Provider,且该提供者处于运行状态。
  3. Tag 的值在采样时刻是有效值(Good 质量),不良质量可能被记录为质量码而非数值。
  4. Historian 的存储模式允许该 Tag 的数据写入,例如分区、存储组、压缩策略已配置。

Ignition 常见的存储模式有两种理解维度:按时间分区和按变化压缩。前者把数据按天、按月切分到不同表或分区,便于查询和维护;后者通过死区和压缩算法减少冗余点。实际项目中,两者常常组合使用。

Tag 配置示例:
History Enabled   = True
History Provider  = Default Historian
Sample Mode       = On Change
Deadband          = 0.5
Min               = 0
Max               = 100

四、采样概念:周期采样与变化采样

周期采样(Periodic)按固定时间间隔读取 Tag 值并写入历史库。它的优点是曲线均匀、便于对齐分析;缺点是即使值没变也会产生记录,长期运行会显著增加存储量。

变化采样(On Change)只在值变化超过 Deadband 时写入。它的优点是节省存储、突出真实变化;缺点是曲线点不均匀,做插值或统计时需要额外处理。对于温度、压力等缓慢变化的模拟量,变化采样通常更经济;对于需要严格时间对齐的计量数据,周期采样更合适。

常见误区:把 Deadband 设得过大,导致微小但重要的变化被过滤掉;或者把 Sample Rate 设得过小,造成 Historian 写入压力过大、数据库快速膨胀。采样参数必须结合工艺变化速度和存储预算来定。

五、场景案例:水箱液位历史记录配置

假设有一个水箱液位 Tag:[default]Tank1/Level,量程 0~100%,正常变化速度约每分钟 1%。如果希望记录趋势用于日报,可以这样配置:

  • History Enabled:True
  • Sample Mode:On Change
  • Deadband:0.5(即变化超过 0.5% 才记录)
  • Min / Max:0 / 100
  • History Provider:Default Historian

这样一天大约产生几百到几千个点,既能还原趋势,又不会像每秒采样那样产生 86400 个点。如果该液位用于贸易结算或安全联锁,则应改为 Periodic,Sample Rate 设为 1000ms 或更小,确保时间对齐和可追溯。

Tag Historian 数据链路与采样决策 Tag 类型 Memory Tag OPC Tag Expression Tag Tag 历史属性 History Enabled Sample Mode Deadband / Rate Historian Provider 存储模式 分区 / 压缩 运行状态 周期采样 Periodic 固定间隔写入 曲线均匀、存储量大 适合计量、联锁 变化采样 On Change 超过 Deadband 才写入 节省存储、点不均匀 适合温度、液位趋势 启用条件:History Enabled + Provider 可用 + 质量 Good + 存储模式允许 采样参数决定数据密度与存储成本,必须结合工艺变化速度选择

六、复盘与检查清单

在项目上线前,建议按以下清单逐项核对,避免“以为在记录、其实没数据”的情况:

  • Tag 的 History Enabled 是否真的为 True,而不是只在模板里勾选、实例未继承。
  • History Provider 是否指向正确的提供者,提供者是否处于 Running 状态。
  • Sample Mode 与 Deadband 是否匹配工艺变化速度,是否会造成数据过密或过疏。
  • Min / Max 是否设置合理,避免正常值被误判为超限。
  • 数据库分区和清理策略是否配置,防止历史表无限增长。
  • 用 Tag History 绑定或查询验证实际写入点数和时间范围,而不是只看配置界面。

掌握 Tag 类型、历史属性、启用条件和采样模式这四件事,就能在 Ignition 中把“哪些数据值得存、以什么节奏存、存到哪里”讲清楚。后续做趋势、报表、批次分析时,数据质量才有保障。