9ceb218f80
Co-authored-by: Cursor <cursoragent@cursor.com>
82 lines
3.1 KiB
Markdown
82 lines
3.1 KiB
Markdown
# 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)
|
||
|