9ceb218f80
Co-authored-by: Cursor <cursoragent@cursor.com>
3.1 KiB
3.1 KiB
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. 运行流程(简述)
- 外部模块调用
v_set_fault_data(...)上报动作; - 动作进入缓存队列;
v_fault_task()周期调用v_fault_cache_process();- 内部
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:测试开关,打开后可屏蔽实际故障处理;- 当前接口运行在任务上下文,若在中断上下文调用需增加保护或改为事件投递。