2. 报警类别与类型配置

在WinCC中,报警系统并不是“把变量挂上去就会响”的简单机制。一条报警从产生到显示,需要经过报警类别(Alarm Class)、报警类型(Alarm Type)和报警实例三层结构的组织。理解这三层关系,是后续做报警分级、颜色区分、确认策略和归档追溯的基础。

可以把报警类别理解为“这条报警有多严重”,把报警类型理解为“这条报警是怎么产生的”。类别决定显示颜色、确认方式和优先级;类型决定触发条件、数值格式和消息块结构。两者组合后,才落到具体变量上形成一条可运行的报警。

一、报警类别:定义严重程度与行为

WinCC默认提供若干报警类别,常见的有:

  • 错误(Error):最高优先级,通常用红色表示,要求操作员立即确认并处理,例如电机过载、急停触发、联锁动作。
  • 警告(Warning):中等优先级,通常用黄色或橙色表示,提示参数偏离正常范围但尚未造成停机,例如温度偏高、液位接近上限。
  • 提示(Information/Note):低优先级,通常用蓝色或灰色表示,用于记录状态变化或操作事件,例如阀门开到位、模式切换完成。

在项目实际配置中,默认类别往往不够用。例如一条“通信中断”报警,它既不是工艺错误也不是简单提示,需要单独的颜色和确认策略。此时应创建自定义报警类别。创建时需要在报警类别属性中设置以下关键项:

属性说明示例值
名称类别的唯一标识Communication_Fault
显示颜色报警行在控件中的背景色紫色 #8E44AD
确认方式是否需要确认、由谁确认需要操作员确认
优先级数值越小优先级越高2
归档是否写入报警归档是

这里有一个容易忽略的点:优先级数值与显示顺序相反。在WinCC中,优先级数值越小,报警越靠前、越优先显示。如果自定义类别优先级设为2,而默认“错误”为1,那么通信中断会排在错误之后、警告之前。配置时要先明确项目的报警分级约定,再统一填写,避免后期混乱。

二、报警类型:定义触发机制与数据格式

报警类型决定“报警怎么被触发”。WinCC中常用的报警类型包括:

  • 离散量报警(Discrete Alarm):由位变量触发,某个位从0变1时产生报警。适合开关量、故障触点、联锁信号。例如变量Motor1_Fault的位0为1时,触发“电机1故障”。
  • 模拟量报警(Analog Alarm):由模拟量越限触发,需要设置上限、下限、死区。适合温度、压力、流量等连续量。例如Temp_Tank1超过85℃触发高温报警,低于80℃自动复位。
  • 系统报警(System Alarm):由WinCC自身或PLC系统产生,例如连接中断、PLC停止、模块故障。这类报警通常不需要手动创建变量,而是由系统消息号映射。

模拟量报警的死区设置非常关键。假设温度上限设为85℃,死区设为2℃,那么报警在85℃触发,但只有当温度回落到83℃以下才会自动复位。如果死区为0,温度在85℃附近波动时会产生大量重复报警,淹没真正重要的信息。工程上一般取量程的1%~3%作为死区,例如量程0~150℃,死区取2~4℃。

三、创建自定义类别并关联变量

下面以“通信中断”为例,说明从创建类别到关联变量的完整过程。假设项目中已有变量PLC_Comm_Status,类型为二进制位,1表示通信正常,0表示中断。

  1. 打开报警记录(Alarm Logging)编辑器,在左侧导航中选择“报警类别”。
  2. 右键选择“新建”,命名为Comm_Fault,显示颜色设为紫色,确认方式设为“需要确认”,优先级设为2,归档设为“是”。
  3. 切换到“报警类型”,确认已存在“离散量报警”类型。若需要特殊消息块结构,可复制默认类型后修改。
  4. 在报警记录的消息列表中新建一条消息,消息文本填写“PLC通信中断,请检查网络连接”。
  5. 在消息的“参数”页中,将报警类别选择为Comm_Fault,报警类型选择“离散量报警”。
  6. 在“触发”页中,关联变量PLC_Comm_Status,触发位选择“位0”,触发条件选择“0”表示通信中断时触发。
  7. 保存并编译报警记录,激活运行系统后,将PLC_Comm_Status置0,观察报警控件中是否出现紫色报警行。
离散量报警的触发条件可以设为“1”或“0”。对于故障信号,通常用“1”触发;对于“正常信号丢失”类报警,用“0”触发更直观。配置时要在消息文本中写清楚触发含义,避免操作员误判。

四、类别与类型的组合关系

报警类别和报警类型是正交的两个维度。同一个类别可以搭配不同报警类型,同一个报警类型也可以属于不同类别。例如“错误”类别下既可以有离散量报警(电机故障),也可以有模拟量报警(温度超高限);“模拟量报警”类型既可以用于“警告”类别,也可以用于“错误”类别。真正决定一条报警行为的,是两者的组合结果。

报警类别 × 报警类型 → 报警实例 报警类别(严重程度) 错误 Error 红色 · 优先级1 · 需确认 警告 Warning 黄色 · 优先级3 · 需确认 提示 Info 蓝色 · 优先级5 · 无需确认 Comm_Fault(自定义) 紫色 · 优先级2 · 需确认 报警类型(触发机制) 离散量报警 位变量 0→1 或 1→0 例:Motor1_Fault 位0 模拟量报警 上限/下限/死区 例:Temp_Tank1 > 85℃ 系统报警 连接中断/PLC停止 由系统消息号映射 报警实例(变量关联) 电机1过载 Motor1_Fault · 位0=1 罐1温度偏高 Temp_Tank1 > 85℃ PLC通信中断 PLC_Comm_Status · 位0=0 阀门开到位 Valve1_Open · 位0=1 类别决定“多严重” 类型决定“怎么触发” 实例决定“哪个变量”

从图中可以看到,左侧的类别和中间的报警类型并不是一一对应的。一条“PLC通信中断”报警,它属于自定义的Comm_Fault类别,使用离散量报警类型,关联到PLC_Comm_Status变量。而“罐1温度偏高”属于警告类别,使用模拟量报警类型,关联到Temp_Tank1变量。每个报警实例都是“类别+类型+变量”的三元组合。

五、配置后的验证与常见问题

配置完成后,不能只看编辑器里有没有报错,要在运行系统中实际验证。验证时重点观察三件事:

  • 颜色是否正确:报警控件中该条报警的背景色是否与类别定义一致。如果颜色不对,通常是类别没有正确关联到消息。
  • 触发是否准确:手动将变量置为触发值,报警是否立即出现;恢复后是否按死区或确认策略复位。
  • 确认行为是否符合预期:需要确认的报警在操作员点击确认前是否保持高亮,确认后是否变为已确认状态。
常见问题:模拟量报警设置了上限但没有设置死区,导致变量在阈值附近波动时反复触发和复位。解决方法是给每条模拟量报警设置合理的死区值,并在调试阶段用变量仿真观察报警抖动情况。

另一个常见问题是自定义类别的优先级与默认类别冲突。例如把自定义类别优先级设为1,与“错误”相同,运行时两条报警的排序可能不稳定。建议在项目初期就规划好优先级编号:1~2为错误级,3~4为警告级,5~6为提示级,自定义类别插入对应区间,避免重叠。

报警类别与类型的配置是报警系统的骨架。类别管“怎么显示、怎么确认”,类型管“怎么触发、带什么数据”,变量管“具体监控谁”。三者关系理清后,后续的报警归档、消息块定制和事件追溯才有稳定的基础。