2. Ignition平台与Tag Historian概述
在开始做历史数据工程之前,必须先弄清楚一件事:Tag Historian 并不是一个孤立的数据记录工具,而是 Ignition 平台整体架构中的一个模块。它依赖网关的标签引擎、数据库连接和存储策略,才能把实时数据变成可查询的历史数据。理解 Ignition 的架构分层,以及 Tag Historian 在其中的位置,是后续所有配置、优化和排障工作的基础。
一、Ignition 的三层架构
Ignition 采用典型的网关中心化架构,整体可以划分为三个层次:客户端层、网关层和设备层。这种架构决定了历史数据的采集、存储和访问路径。
- 客户端层(Client / Perspective / Vision):负责画面展示、报警确认、趋势查询等交互操作。客户端不直接连接设备,也不直接写数据库,所有请求都通过网关转发。
- 网关层(Gateway):是整个平台的核心,运行标签引擎、历史引擎、报警引擎、脚本引擎、数据库连接池等。Tag Historian 就运行在网关层,负责决定哪些标签需要记录、以什么频率记录、写入哪个数据库。
- 设备层(Device / OPC / PLC):通过 OPC UA、Modbus、Siemens、Allen-Bradley 等驱动接入现场设备,把实时值提供给网关的标签系统。
关键点在于:历史数据的源头是标签引擎,而不是数据库。标签引擎先产生实时值,历史引擎再根据存储策略决定是否落库。因此,标签配置是否正确,直接决定历史数据是否完整。
二、Tag Historian 模块定位
Tag Historian 位于网关层,介于标签引擎和数据库之间。它的核心职责可以概括为三件事:选择记录对象、定义记录方式、执行数据落库。
- 记录对象:通过标签的 History 属性,决定某个标签是否启用历史记录。只有被标记为 History Enabled 的标签,才会进入历史引擎的处理范围。
- 记录方式:由存储策略(Storage Strategy)决定,包括按时间周期记录、按值变化记录、按死区(Deadband)记录,以及是否记录质量码。
- 数据落库:历史引擎把数据写入配置好的数据库表,通常分为分区表(Partition Table)和宽表(Wide Table)两种模式。
核心理解:Tag Historian 不是“自动记录所有标签”的。它只记录被显式启用历史功能的标签,并且按照存储策略执行。没有配置存储策略的标签,即使启用了 History,也不会产生历史数据。
三、历史数据的典型应用场景
历史数据在工业现场的应用非常广泛,不同场景对数据精度、存储周期和查询性能的要求差异很大。下表列出了常见场景及其关键要求:
| 应用场景 | 数据特点 | 典型存储策略 | 查询频率 |
|---|---|---|---|
| 实时趋势回看 | 秒级、高密度 | 按时间周期 1s~5s | 高 |
| 批次报表 | 批次起止、关键参数 | 按值变化 + 死区 | 中 |
| 设备OEE分析 | 状态码、计数、停机 | 按值变化 | 中 |
| 能源管理 | 累计量、瞬时功率 | 周期 1min~15min | 低 |
| 报警追溯 | 报警事件、确认记录 | 报警引擎独立存储 | 低 |
| 长期归档 | 压缩后历史数据 | 分区表 + 定期归档 | 极低 |
从表中可以看出,不同场景对存储策略的要求完全不同。如果所有标签都用同一种策略,要么数据量爆炸,要么关键细节丢失。因此,数据工程角色的重要工作之一,就是为不同标签分配合适的存储策略。
四、数据工程角色的职责
在 Ignition 项目中,Tag Historian 的配置不是“点几下鼠标”就结束的。它涉及标签规划、数据库设计、性能调优和长期运维。数据工程角色需要承担以下职责:
- 标签历史规划:确定哪些标签需要记录、记录频率是多少、死区设置多大。这需要与工艺工程师和运维人员共同确认。
- 数据库设计:选择分区表还是宽表,设计表空间、索引和归档策略,确保查询性能满足要求。
- 存储策略配置:在 Ignition 中配置 History Provider、Storage Strategy 和 Tag History 属性,并验证数据是否正确落库。
- 性能监控与调优:监控历史引擎的写入延迟、数据库增长速度和查询响应时间,及时调整策略。
- 数据质量保障:处理断线补录、时间同步、质量码异常等问题,确保历史数据可信。
实践建议:在项目初期就建立标签命名规范和历史数据字典,明确每个标签的记录频率、死区和保留周期。后期修改存储策略的成本远高于前期规划。
五、常见误区与复盘
在实际项目中,初学者容易陷入以下误区:
- 误区一:启用 History 就等于有历史数据。实际上还需要配置存储策略和数据库连接,否则历史引擎不会写入任何数据。
- 误区二:所有标签都用 1 秒记录。这会导致数据库迅速膨胀,查询变慢,甚至影响网关性能。应该按需设置频率和死区。
- 误区三:忽略质量码。历史数据不仅记录数值,还记录质量码。如果忽略质量码,断线期间的数据可能被误判为有效值。
- 误区四:不规划归档策略。历史数据无限增长会拖垮数据库。应该定期归档或清理过期数据。
排障提示:如果发现历史数据缺失,按以下顺序检查:标签是否启用 History → 是否绑定 Storage Strategy → 数据库连接是否正常 → 历史引擎日志是否有写入错误 → 数据库表是否有数据。这个顺序可以快速定位大部分问题。
总结来说,Ignition 的网关中心化架构决定了 Tag Historian 的运行位置和职责边界。它连接标签引擎和数据库,是实时数据转化为历史数据的桥梁。理解它的定位、应用场景和数据工程职责,是后续学习历史表结构、存储策略配置和性能优化的前提。