2. 化工过程控制数据源梳理

报表设计的第一步不是画表格,而是把“数据从哪里来、叫什么名字、存在哪里、哪些该进报表”这四件事梳理清楚。化工装置的控制数据主要分布在三层系统中:现场控制层(DCS、PLC)、监控层(SCADA)和信息管理层(实时数据库/历史数据库)。报表工具通常不直接读取控制器内存,而是通过接口从这些系统采集数据,再按位号组织成可查询的数据集。理解这条链路,才能避免报表上线后出现“取不到数、取错数、数不对时”的反复返工。

一、三类采集接口的定位与差异

DCS 是装置主控系统,数据以位号为单位组织在控制站中,常见对外接口包括 OPC DA/UA、Modbus TCP 从站、以及厂商专用的历史数据接口。PLC 更多承担机组、公用工程、包装线等独立控制任务,接口以 Modbus TCP、OPC UA、EtherNet/IP 为主,点位相对少但实时性要求明确。SCADA 位于监控层,汇聚远程站点(罐区、管廊、水处理)数据,常通过 OPC UA 或 IEC 104 向上提供数据,并自带历史库。

选择接口时重点看三件事:一是数据方向,报表只需只读采集,应使用只读账号和只读通道,避免误写;二是采集周期,报表统计量(如小时均值)要求采样周期明显小于统计周期,一般取 1~5 s 采样、1 min 或 1 h 归档;三是时间戳来源,应优先采用带源时间戳的接口(如 OPC UA 的 SourceTimestamp),否则网络延迟会把数据记到错误的时刻上。

现场与控制层 → 采集接口 → 实时/历史库 → 报表数据集 现场控制层 DCS 控制站(反应/精馏) PLC(机组/公用工程) SCADA 远程站点 采集接口 OPC UA / DA(只读) Modbus TCP IEC 104 / 厂商历史接口 数据存储 实时数据库 当前值 + 质量码 历史数据库 时间序列 + 归档周期 报表数据集 位号映射表 统计口径 质量与补数规则 位号命名规则示例(KKS 风格) 10-FIC-1023A.PV 10:装置/工段号 FIC:功能码(流量指示控制) 1023:回路序号 A:同回路多测点后缀 .PV:过程值(另有 .SP 设定值、.OP 输出值) 报表取数应固定到属性级:取 .PV 而非整个回路, 避免 SP/OP 混入统计造成口径错误。 报表数据四类划分 ① 过程量:温度、压力、流量 ② 设备状态:运行/停止/故障 ③ 累计量:产量、能耗、流量累积 ④ 报警与事件:越限、操作记录 分类决定统计方法:过程量取均值/极值,累计量取差值, 状态量取时长占比,报警量取次数与持续时间。 分类错位是报表“数对不上”的最常见原因。

二、位号命名规则:报表取数的“地址簿”

位号是控制系统内唯一标识一个测点或回路的字符串。化工装置常用 KKS 或类似的分段编码,例如 10-FIC-1023A.PV:前段表示装置或工段,中段是功能码(FIC 表示流量指示控制),后段是回路序号与多测点后缀,最后用属性后缀区分过程值 PV、设定值 SP、输出值 OP。报表取数必须精确到属性级,只取 PV 参与工艺统计,否则把 SP 或 OP 混入均值会直接改变统计口径。

实际梳理时建议建立一张“报表位号映射表”,字段至少包括:报表列名、源系统、原始位号、属性后缀、工程单位、量程、数据类型、采集周期、统计方法、缺失处理。这张表是报表配置的唯一依据,也是后期排障时定位“这一列数从哪来”的凭证。命名不一致是常见问题:同一台泵在 DCS 叫 P-1201A_RUN,在电气系统叫 M1201A_STS,映射表必须显式记录两者的对应关系,而不是在报表脚本里临时拼字符串。

三、实时库与历史库的数据组织方式

实时数据库按“位号—当前值—时间戳—质量码”组织,适合取当前工况、做超限判断和报表页眉的即时快照。历史数据库按时间序列存储,核心参数是归档周期与压缩方式:归档周期决定最小可查询粒度,压缩(如旋转门压缩)会保留趋势特征但丢失部分中间点。报表若需要小时均值,应确认历史库归档周期不大于 1 min,否则均值实际只由少数几个点算出,代表性不足。

质量码是常被忽略但极其关键的一维。采集到的值可能带“良好、不确定、坏值、通讯中断”等状态,报表统计时必须先按质量码过滤:坏值不参与均值计算,通讯中断时段应标记为“无数据”而非填 0,否则会把停机时段算成低负荷运行,导致能耗指标虚高。补数策略也要在映射表中写明,例如短时中断(小于 5 min)用线性插值,长时中断保留空值并在报表中加注。

四、报表所需数据的识别与分类方法

识别数据不要从“系统里有什么”出发,而应从“报表要回答什么问题”出发。以一张典型的班报为例,它通常要回答四类问题:工艺是否平稳(过程量均值、极值、标准差)、设备是否可用(运行时长、启停次数、故障时长)、产量与能耗是否达标(累计量差值、单耗)、有无异常(报警次数、越限持续时间)。据此把数据分为过程量、设备状态量、累计量和报警事件四类,每类对应不同的统计方法,这正是上图中右下部分的划分逻辑。

分类完成后做一次“可采集性核对”:每个位号是否真实存在、属性是否正确、单位与量程是否匹配、历史库是否有足够长的归档、质量码是否可用。核对不通过的位号要么换源,要么在报表中降级为人工填报,不能默认“先配上再说”。经验上,一张 40 列左右的班报,初次梳理常会发现 10%~20% 的位号存在命名不符或归档缺失,提前核对比上线后逐列排查省时得多。

梳理阶段就把“位号映射表 + 统计口径 + 质量码规则”三件事定下来,报表配置只是照表执行;反之,若把口径留到画表时再定,后续每改一次统计方法都要回头重查数据源。

完成上述梳理后,报表所需的数据就有了清晰的来源、名称、存储位置和分类归属,后续的表格布局、统计计算与刷新策略都可以在这份数据清单上直接展开。