会新建独立的MaxWell.Watchdog项目,不复用MaxWellHardwareMonitor。后者继续负责设备连接检测。
方案如下:
- 看门狗作为无界面独立进程,由主程序启动后立即拉起,并在主程序运行期间持续监控其进程与心跳。
- 主程序在硬件可能带电时写入“已布防”状态,并周期性刷新心跳;正常退出前先执行既有安全停机流程,再撤防并通知看门狗。
- 看门狗发现主程序进程异常消失、心跳超时或未完成正常退出标记时,立即进入一次性的安全停机流程。
- 安全停机不依赖已退出主程序的内存对象。看门狗读取独立配置,直接连接每个已启用工站的主控板/PLC,并按限定超时、逐站隔离失败的方式执行。
- 停机顺序固定为:关闭测试使能 -> 将电源下调至可配置的安全电压 -> 关闭高压电源输出 -> 发送各硬件的安全停机命令。每步都记录结果,即使单站或单设备通信失败,也不会阻塞其它工站。
- 用命名内存映射或命名事件实现进程间状态同步;所有安全配置放入单独 JSON,避免依赖主程序工作目录中的临时状态。
- 看门狗在触发后保持运行并落盘审计日志,防止重复发送控制命令,同时明确记录哪些站点已安全关闭、哪些设备失联。
MaxWell主程序仅增加轻量的看门狗启动、布防、心跳、正常退出撤防集成;硬件实际控制逻辑放在看门狗内,保证主程序崩溃后仍可执行。
实施计划:
- 新建
MaxWell.Watchdog控制台项目并加入MaxWell.sln,引用当前主控板协议和配置模型。 - 定义独立的看门狗配置,包括被监控进程、心跳超时、安全电压、站点主控板/PLC地址、启用状态和动作超时。
- 实现跨进程心跳、布防、正常退出确认和异常判定。
- 封装每类硬件的安全关闭适配器,优先实现主控板测试使能与高压电源,随后接入 PLC、负载单元等明确支持安全关闭的设备。
- 在
MaxWell的启动、硬件上电/测试开始、正常退出路径接入看门狗状态管理。 - 增加不依赖真实设备的单元测试,覆盖异常退出、心跳超时、正常退出不误触发、单站失败不影响其他站点和重复触发抑制。
- 编译解决方案,并提供现场联调步骤:先在仿真或断开负载的条件下验证主控板协议与安全电压值,再启用生产配置。
有一个需要在实施前确认的硬件边界:PLC 和负载单元的“关闭所有硬件”具体对应哪些安全命令。目前可以确定主控板的测试使能与高压电源关闭接口;其余设备应按现有 PLC 点位和设备协议逐项映射,不能将“断开 TCP”误当成硬件断电。