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 属性:历史记录启用的关键字段
在 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 真正产生历史数据,必须同时满足以下条件:
- Tag 的 History Enabled 被勾选。
- Tag 被分配了可用的 History Provider,且该提供者处于运行状态。
- Tag 的值在采样时刻是有效值(Good 质量),不良质量可能被记录为质量码而非数值。
- 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 时写入。它的优点是节省存储、突出真实变化;缺点是曲线点不均匀,做插值或统计时需要额外处理。对于温度、压力等缓慢变化的模拟量,变化采样通常更经济;对于需要严格时间对齐的计量数据,周期采样更合适。
五、场景案例:水箱液位历史记录配置
假设有一个水箱液位 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 的 History Enabled 是否真的为 True,而不是只在模板里勾选、实例未继承。
- History Provider 是否指向正确的提供者,提供者是否处于 Running 状态。
- Sample Mode 与 Deadband 是否匹配工艺变化速度,是否会造成数据过密或过疏。
- Min / Max 是否设置合理,避免正常值被误判为超限。
- 数据库分区和清理策略是否配置,防止历史表无限增长。
- 用 Tag History 绑定或查询验证实际写入点数和时间范围,而不是只看配置界面。
掌握 Tag 类型、历史属性、启用条件和采样模式这四件事,就能在 Ignition 中把“哪些数据值得存、以什么节奏存、存到哪里”讲清楚。后续做趋势、报表、批次分析时,数据质量才有保障。