4. 故障注入类型与分类
在虚拟调试中,故障注入的价值不在于“让系统报错”,而在于用可控、可复现的方式模拟现场可能出现的异常,从而验证PLC程序、安全逻辑、HMI报警、通信恢复策略是否真正有效。要做到这一点,首先必须建立清晰的故障分类视角:故障发生在信号链的哪一环、表现为什么形态、在虚拟环境中用什么手段复现、验证时观察哪些量。本节围绕六类常见故障展开,并给出虚拟调试中的具体表现形式与可操作的注入思路。
一、按信号链位置划分的六类故障
虚拟调试的对象通常是一条从现场设备到控制器的信号链:传感器采集物理量→信号调理与传输→PLC输入模块→控制逻辑运算→PLC输出模块→执行器动作。故障可以发生在链路的任意位置,因此最实用的分类方式是“按位置+按表现”双维度划分。
- 传感器故障:信号源本身异常,如断线、短路、量程超限、卡死在某值、漂移。虚拟调试中常表现为输入变量被强制为固定值、超出工程范围或跳变为无效值。
- 执行器故障:输出侧设备不动作、动作不到位、卡阻、反馈丢失。虚拟调试中表现为输出线圈得电但执行机构模型无响应,或反馈信号与指令不一致。
- 通信故障:总线断线、丢包、延迟、从站掉站、数据错帧。虚拟调试中通过仿真通信层注入延迟、丢包或断开连接来复现。
- 逻辑故障:程序联锁条件错误、状态机跳转异常、互锁失效。虚拟调试中通过修改逻辑分支或强制条件变量来触发。
- 参数漂移:设定值、增益、阈值随时间或工况缓慢偏移。虚拟调试中通过缓慢改变仿真模型参数或PLC寄存器值来模拟。
- 间歇性故障:时有时无、随机出现、难以稳定复现。虚拟调试中通过概率触发、定时抖动或随机脉冲注入来模拟。
二、传感器故障的虚拟调试表现形式
传感器故障在虚拟调试中最容易实现,也最容易被忽视其多样性。常见的注入形式包括:将模拟量输入强制为超量程值(如4-20mA对应0-27648,强制为32767表示断线)、将数字量输入强制为常0或常1、在仿真模型中让传感器输出卡死在某一固定值。例如某温度传感器量程0-150℃,正常输出对应0-27648,注入断线故障时将该通道值设为32767,PLC程序中的超限判断应触发报警并切换到备用传感器或安全停机。
验证要点是观察PLC是否在合理时间内识别故障、HMI是否显示正确的报警代码、安全逻辑是否将设备导向安全状态。如果程序只做了量程判断而没有断线检测,这个故障就会漏报,这正是虚拟调试要暴露的问题。
三、执行器故障与通信故障的注入方式
执行器故障的注入通常发生在输出侧。在虚拟调试中,可以让PLC输出线圈得电,但仿真执行机构模型不动作,或者动作后不返回到位信号。例如某气缸控制,PLC输出Q0.0=1,但仿真模型中气缸位置保持0不变,同时反馈输入I0.1始终为0。此时程序中的“动作超时”定时器应触发报警。另一种形式是执行器卡在中间位置,反馈信号既不是0也不是1,用于验证模拟量反馈的容错处理。
通信故障的注入需要仿真通信层支持。以PROFINET为例,可以在仿真环境中设置从站掉站、周期性丢包或增加通信延迟。例如让某远程IO从站每10个周期丢失1个周期,观察PLC是否触发站点故障报警、是否影响安全信号传输。通信故障的关键验证点是:故障发生时系统是否进入安全状态,通信恢复后是否自动重新建立连接并恢复数据交换。
四、逻辑故障、参数漂移与间歇性故障
逻辑故障通常不是“注入”出来的,而是通过修改程序条件或强制变量来触发。例如将某个联锁条件强制为TRUE,观察互锁是否失效;或者修改状态机跳转条件,验证异常分支是否被正确处理。这类故障在虚拟调试中用于验证程序健壮性,尤其是安全逻辑的独立性。
参数漂移的注入方式是缓慢改变参数值。例如将PID控制器的比例增益从1.0逐步增加到3.0,观察系统是否出现振荡;或者将报警阈值从80℃缓慢降到60℃,验证报警是否在正确时机触发。漂移故障的特点是“渐变”,因此验证时要关注趋势和累积效应,而不是单次跳变。
间歇性故障最难复现,但在虚拟调试中反而容易实现。可以通过概率触发、定时抖动或随机脉冲来模拟。例如让某数字量输入每100ms随机翻转一次,持续500ms后恢复,观察PLC程序是否出现误动作、计数器是否误计数、报警是否频繁闪烁。间歇性故障的验证重点是滤波、去抖和故障确认机制是否有效。
五、分类对照与验证要点
| 故障类型 | 注入位置 | 虚拟调试表现形式 | 关键验证点 |
|---|---|---|---|
| 传感器故障 | 输入侧 | 强制超量程、断线值、卡死 | 超限报警、断线检测、安全切换 |
| 执行器故障 | 输出侧 | 输出得电但无动作、反馈丢失 | 动作超时、反馈一致性、安全停机 |
| 通信故障 | 传输层 | 丢包、延迟、从站掉站 | 站点报警、安全状态、自动恢复 |
| 逻辑故障 | 程序层 | 强制条件、修改跳转、互锁失效 | 异常分支处理、安全逻辑独立 |
| 参数漂移 | 参数层 | 阈值/增益缓慢变化 | 趋势判断、累积效应、报警时机 |
| 间歇性故障 | 随机/时序 | 随机翻转、抖动、脉冲 | 滤波去抖、故障确认、误动作 |
在实际虚拟调试中,六类故障往往需要组合注入。例如先注入通信延迟,再叠加传感器漂移,观察系统在复合异常下的表现。分类的价值在于帮助调试人员系统性地设计测试用例,而不是随机地“制造错误”。每一类故障都对应一组明确的观察量和判断标准,只有这样才能把虚拟调试从“跑通程序”提升到“验证异常处理能力”的层次。