4. 实时数据库与变量组态

实时数据库是矿山SCADA系统的“数据心脏”。现场传感器、PLC、智能仪表采集到的模拟量、开关量、累计量,最终都要以“变量”的形式进入实时库,组态画面、趋势曲线、报警引擎、历史存储全部围绕变量展开。变量组态做得是否规范,直接决定了后续画面绑定、报警联动和趋势分析能否顺利实现。本节围绕变量定义、数据类型、报警属性、分组与命名规范四个层面展开,并结合一个矿山典型点位给出可操作的配置示例。

一、变量定义:从现场信号到实时库标签

变量(Tag)是实时数据库中对一个可采集、可存储、可引用数据点的抽象。定义一个变量,本质上要回答五个问题:它来自哪里、它代表什么物理量、它用什么数据类型承载、它的量程与工程单位是什么、它是否参与报警与历史存储。以主排水泵房为例,一台水泵通常需要定义以下变量:电机电流(模拟量)、出口压力(模拟量)、运行状态(开关量)、就地/远控状态(开关量)、故障信号(开关量)、累计运行时间(累计量)。

变量定义的关键字段包括:变量名、描述、数据类型、数据源地址(如PLC的寄存器地址或OPC节点名)、采集周期、量程上下限、工程单位、死区、初始值。其中数据源地址与采集周期决定了通信负载:对压力、电流这类变化较快的模拟量,采集周期可设为500ms~1s;对状态类开关量可用事件触发方式,仅在变化时上送,减少无效通信。死区(Deadband)用于抑制模拟量在稳定值附近的频繁抖动,例如压力死区设为0.02MPa,可避免趋势曲线出现锯齿状毛刺。

二、数据类型:选错类型是隐性故障源

实时库常见数据类型包括:布尔量(Bool)、8/16/32位整型(Int)、32位浮点(Real/Float)、字符串(String)、时间戳(DateTime)。选型原则是“按物理量本质选类型,按精度需求选宽度”。开关量、故障信号用Bool;设备编号、报警代码用整型;压力、流量、温度、电流用浮点;累计量若数值很大且要求精确到整数,可用32位无符号整型并配合溢出处理。

工程上最容易出问题的是量程换算。PLC侧常以4~20mA对应的整型原始值(如0~27648)上送,实时库需按线性关系换算为工程值:工程值 = 下限 + (原始值 − 原始下限) × (上限 − 下限) / (原始上限 − 原始下限)。若把原始值直接当工程值显示,画面上就会出现“压力5530MPa”这类明显错误。另一个常见问题是浮点比较:判断“压力是否超限”时不能用等于号,应使用带死区的区间判断,否则浮点误差会导致报警反复抖动。

现场信号源 水泵电机电流 4~20mA / AI 出口压力变送器 4~20mA / AI 运行/远控状态 干接点 / DI 综合故障信号 干接点 / DI 累计运行时间 PLC累计 / DINT 实时数据库变量(Tag) PMP01_Current Real|0~200A|死区0.5A|1s采集 PMP01_Pressure Real|0~4MPa|死区0.02MPa|1s采集 PMP01_RunSts Bool|1=运行 0=停止|事件触发 PMP01_Fault Bool|1=故障|事件触发|报警 PMP01_RunHour DINT|0~999999h|60s采集 变量消费方 组态画面绑定 数值显示 / 颜色动画 趋势曲线 实时/历史趋势 报警引擎 阈值 / 状态 / 变化率 历史存储 压缩归档 / 报表 联锁与脚本 启停逻辑 / 计算变量 命名规范:区域_设备_测点(如 PMP01_Pressure),全库唯一、见名知义、禁止中文与空格

三、报警属性配置:让变量“会说话”

报警属性是变量组态中最需要工程经验的部分。一个模拟量变量通常配置四类报警:高高限(HH)、高限(H)、低限(L)、低低限(LL),每类报警需设置阈值、死区、延时、报警级别、报警文本。以出口压力为例:正常范围0.8~2.5MPa,H限设为2.6MPa、HH限设为3.0MPa、L限设为0.6MPa、LL限设为0.4MPa,死区0.05MPa,延时3s。延时的作用是过滤压力瞬时波动造成的误报;死区则保证报警恢复时不会在阈值附近反复跳变。

开关量报警主要配置“状态报警”:故障信号为1时触发“一级报警”,运行状态与远控状态不一致时触发“状态异常报警”。此外还有变化率报警(如压力1分钟内上升超过0.5MPa判定为异常骤升)和通信中断报警(变量质量戳变坏时触发)。报警级别建议按矿山安全影响划分:影响人身安全或主排水、通风等关键系统的定为一级(红色、声光、需确认),影响单台设备运行的定为二级(橙色),仅提示性的定为三级(黄色)。

四、变量分组与命名规范

变量分组建议按“系统—设备—测点”三级组织:主排水系统、通风系统、提升系统、供电系统各成一组,组内再按设备划分。分组不仅是管理手段,也直接影响权限分配和报警过滤——操作员只关心本岗位相关分组,报警汇总画面可按组筛选。

命名规范推荐“区域/系统_设备编号_测点类型”结构,全部使用英文大写字母、数字和下划线,禁止中文、空格和特殊字符。例如:PMP01_Pressure、FAN02_RunSts、PWR03_Fault。同一测点在实时库、历史库、报警库、画面绑定中必须使用完全一致的变量名,避免“一处改名、多处失效”。下表给出一个可直接参考的变量定义清单示例(参数为教学示例,实际项目应按设计文件核定):

变量名描述数据类型量程/单位采集周期报警配置
PMP01_Current1#泵电机电流Real0~200 A1 sH:180A 延时5s
PMP01_Pressure1#泵出口压力Real0~4 MPa1 sHH:3.0 H:2.6 L:0.6 LL:0.4
PMP01_RunSts1#泵运行状态Bool0/1事件状态异常报警
PMP01_Fault1#泵综合故障Bool0/1事件一级报警
PMP01_RunHour1#泵累计运行时间DINT0~999999 h60 s不报警,仅归档
变量组态完成后,务必做一次“三点验证”:在画面上确认数值显示与现场仪表一致;人为触发一次高限报警,确认报警文本、级别、声音和确认流程正确;检查历史趋势能否正常回溯。三点通过,才说明变量定义、数据类型换算和报警属性配置形成了闭环。

最后提醒两个易错点:一是变量名与地址的对应关系要建立台账,PLC程序修改地址后必须同步更新实时库,否则会出现“数据不动”的假死现象;二是报警阈值不要写死在画面脚本里,应统一配置在变量报警属性中,便于集中修改和审计。把变量定义、类型换算、报警属性、分组命名这四件事一次做规范,后续的趋势分析和报警优化才有可靠的数据基础。