# fault_cheak 模块说明 > 路径:`app/fault_cheak/` > 作用:完成故障检测、故障动作缓存、实时故障状态维护,以及历史故障持久化触发。 ## 1. 模块组成 - `fault_interface.h/.c` - 对外故障接口(`v_set_fault_data`、`v_get_fault_data`、`u8_get_fault_sum` 等) - 故障动作缓存队列管理(`v_fault_cache_init`、`u8_fault_cache_add`、`v_fault_cache_process`) - 故障信息中文描述与故障位置描述 - `faultcheck_task.h/.c` - 故障检测任务主循环 - 故障输入状态检查(急停、门禁、水浸、防雷、烟感、枪温等) - 拔枪恢复逻辑与任务周期调度 ## 2. 功能职责 ### 2.1 实时故障状态管理 - 维护 `s_real_fault`: - `u8_fault_cnt`:当前故障数量 - `u8_warn_cnt`:当前告警数量 - `fault_data[]`:当前故障列表 - `warn_data[]`:当前告警列表 - 支持“同位置+同故障码”去重,避免重复入表。 ### 2.2 故障动作缓存解耦 - 对外 `v_set_fault_data()` 只做“入缓存队列”,不直接重处理逻辑。 - 任务周期内由 `v_fault_cache_process()` 分批执行,避免单周期耗时过长影响主循环实时性。 ### 2.3 历史故障持久化触发 - 故障/告警新增时,触发历史记录持久化: - 主路径:`flash_file_mgr`(索引 EEPROM + 数据 externalflash) - 可选路径:`FATFS_ENABLE_FAULT` 打开时同步缓存到 FATFS 故障缓存 - 恢复动作当前仅更新实时状态(是否保存恢复动作可按业务再打开)。 ## 3. 关键数据结构 - `HIS_FAULT_DATA_T`(`faultcheck_task.h`) - 故障位置 `e_site` - 故障码 `e_fault_info` - 发生时间 `s_occur_time` - 动作类型 `ActType`(恢复/故障/告警) - 扩展值 `s16_value1/s16_value2` - `REAL_FAULT_DATA_T`(`fault_interface.h`) - 当前态故障/告警存储 - `FAULT_ACTION_CACHE_T`(`fault_interface.h`) - 故障动作缓存环形队列 ## 4. 运行流程(简述) 1. 外部模块调用 `v_set_fault_data(...)` 上报动作; 2. 动作进入缓存队列; 3. `v_fault_task()` 周期调用 `v_fault_cache_process()`; 4. 内部 `v_set_fault_data_internal()` 完成: - 实时故障表增删 - 必要日志输出 - 新增故障/告警时持久化到历史存储模块。 ## 5. 与 flash_file_mgr 的关系 - `fault_cheak` 负责“故障业务判断与动作触发”; - `flash_file_mgr/fault_flash_impl` 负责“历史故障持久化实现”; - 两者通过 `v_hisFault_save_record()` 解耦。 ## 6. 配置与注意事项 - `FAULT_ACTION_CACHE_SIZE`:缓存大小,过小会丢动作; - `FAULT_TEST`:测试开关,打开后可屏蔽实际故障处理; - 当前接口运行在任务上下文,若在中断上下文调用需增加保护或改为事件投递。 ## 7. 相关文档 - [主说明 README](../../README.md) - [flash_file_mgr 模块说明](../../BSP/flash_file_mgr/flash_file_mgr模块说明.md) - [eeprom 模块说明](../../BSP/eeprom/eeprom模块说明.md) - [externalflash 模块说明](../../BSP/externalflash/externalflash模块说明.md)