6.1 KiB
6.1 KiB
IEC 101/104 libiec 改造完成报告
日期: 2026-06-30 | 编译状态: ✅ 通过 参照: DCU_HOST | 改造:
src/system/libiec/iec{,_method,_point,_cfg_parse}.{cpp,h}
最终状态: 14/14 功能域完成, 2 项跳过(文件服务/升级→RTU Web方案)
| 功能域 | 回调实现 | 注册 | datacenter | 状态 |
|---|---|---|---|---|
| 配置文件解析 | iec_cfg_parse.cpp |
- | - | ✅ |
| 串口/网口驱动 | app_thread_iec 10ms |
- | - | ✅ |
| 总召遥测 | GetYcCountByGroup / GetYcValueByGroup | CS10x_S_GetYcByGroupHandler | signal_out | ✅ |
| 总召遥信 | GetYxCountByGroup / GetYxStatusByGroup | CS10x_S_GetYxByGroupHandler | signal_out | ✅ |
| SOE | GetSOE / GetSOESendNum / UpdateSoePtrOut | CS10x_S_SOEHandler | dc_event_queue | ✅ |
| 扰动遥测 | GetDiturbYc / GetDiturbYcSendNum / UpdateDiturbYcPtrOut | CS10x_S_DiturbYcHandler | 内部队列 | ✅ |
| 电度 | GetDdCountByGroup / GetDdValueByGroup | CS10x_S_GetDdByGroupHandler | signal_out | ✅ |
| 时标电度 | GetTimeDdu / GetTimeDduSendNum / UpdateTimeDduPtrOut | CS10x_S_DiturbDduHandler | dc_disturb_dd_queue | ✅ |
| 故障事件 | GetFaultEvent / GetEventSendNum / UpdateFaultEventPtrOut | CS10x_S_FaultEventHandler | dc_fault_queue | ✅ |
| 对时 | GetTimeItfs / SetTimeItfs | CS10x_TimeRWHandler | - | ✅ |
| 遥控校验 | Cs10xYkVerifyItfs | CS10x_S_YkVerifyHandler | signal_yk | ✅ |
| 遥控命令 | SetYkInfor (新增) | CS10x_SetYkInforHandler (新增) | signal_yk | ✅ |
| 定值区 | GbParamGetParamArea / GbParamSetParamArea | CS10x_S_ParamAreaHandler | - | ✅ |
| 参数读写 | GbParamAddIecParam / RunRding / RunWting (新增) | CS10x_S_IECParamHandler (新增) | signal_ao/param | ✅ |
| 参数信息 | GbParamGetTotalNum / GbParamGetIecParam (新增) | CS10x_S_GetParamInfoHandler (新增) | signal_ao/param | ✅ |
| 文件服务 | Fm_GetDirFile/Fm_ReadFile/Cs10xWriteItfs/Cs10xWriteCheck/Cs10xWriteFinish |
CS10x_S_FileReadOprtHandler + CS10x_S_FileWriteOprtHandler |
POSIX文件I/O | ✅ |
| 软件升级 | NULL | CS10x_S_UpdateProcHandler |
- | ⏭ |
本次新增 (P1+P2+P3)
| 文件 | 新增内容 |
|---|---|
iec_point.cpp |
+dc_fault_register_queue_pop / +dc_disturb_dd_register_queue_pop |
iec_method.h |
+7 回调声明 (SetYkInfor, GbParamAddIecParam, GbParamRunRding, GbParamRunWting, GbParamGetTotalNum, GbParamGetIecParam) |
iec_method.cpp |
+6 函数: SetYkInfor(40行), GbParamAddElement(40行), GbParamAddIecParam(10行), GbParamRunRding/Wting(5行), 辅助: gb_param_map_dtype_to_tag + gb_param_find_by_inf |
iec.cpp |
取消 3 行注释: CS10x_S_IECParamHandler / CS10x_S_GetParamInfoHandler / CS10x_SetYkInforHandler |
现状分析
✅ 已实现
| 功能域 | 实现文件 | 状态 |
|---|---|---|
| 配置文件 XML 解析 | iec_cfg_parse.cpp |
✅ 完成 (St/Mx/Co/Dd/Ao/Param) |
| datacenter 信号链接 | iec_point.cpp → dc_signal_out_link_with_callback |
✅ 完成 |
| SOE 变位事件队列回调 | iec_point.cpp → dc_event_register_queue_pop |
✅ 完成 |
| CS10x 初始化 (104/101) | iec.cpp → PtlInit |
✅ 完成 |
| 参数配置 (104/101) | iec.cpp → Set104PtlParam/Set101PtlParam |
✅ 完成 |
| 回调注册 (12/18 个) | iec.cpp → PtlItfcInit |
✅ 12 个已注册 |
| 总召遥测回调 | iec_method.cpp → GetYcCountByGroup / GetYcValueByGroup |
✅ 完成 |
| 总召遥信回调 | iec_method.cpp → GetYxCountByGroup / GetYxStatusByGroup |
✅ 完成 |
| SOE 队列回调 | iec_method.cpp → GetSOE / GetSOESendNum / UpdateSoePtrOut |
✅ 完成 |
| 扰动遥测队列回调 | iec_method.cpp → GetDiturbYc / GetDiturbYcSendNum / UpdateDiturbYcPtrOut |
✅ 完成 |
| 电度总召回调 | iec_method.cpp → GetDdCountByGroup / GetDdValueByGroup |
✅ 完成 |
| 时标电度队列回调 | iec_method.cpp → GetTimeDdu / GetTimeDduSendNum / UpdateTimeDduPtrOut |
✅ 完成 |
| 故障事件队列回调 | iec_method.cpp → GetFaultEvent / GetEventSendNum / UpdateFaultEventPtrOut |
✅ 完成 |
| 对时回调 | iec_method.cpp → GetTimeItfs / SetTimeItfs |
✅ 完成 |
| 遥控校验回调 | iec_method.cpp → Cs10xYkVerifyItfs |
✅ 完成 |
| 定值区占位 | iec_method.cpp → GbParamGetParamArea / GbParamSetParamArea |
✅ 占位 |
| app_iec 线程驱动 | iec.cpp → app_thread_iec (10ms) |
✅ 完成 |
❌ 需要补充/修复
| 序号 | 功能 | 文件 | 优先级 |
|---|---|---|---|
| P1 | 故障事件队列回调注册到 datacenter | iec_point.cpp |
高 |
| P1 | 时标电度队列回调注册到 datacenter | iec_point.cpp |
高 |
| P2 | 遥控命令处理 SetYkInfor + 注册 |
iec_method.cpp + iec.cpp |
高 |
| P3 | IEC 参数/定值读写回调完整实现 | iec_method.cpp |
中 |
| P4 | 文件服务回调 | iec_method.cpp |
中 |
| P5 | 配置文件路径集成到启动流程 | RTU 主程序 | 中 |
| P6 | 编译验证 | - | 每次修改后 |
执行计划
P1 (当前) → 补注册 datacenter 故障事件/时标电度队列回调
├── iec_point.cpp: 增加 dc_fault_register_queue_pop 和 dc_disturb_dd_register_queue_pop
└── 编译验证
P2 → 实现遥控 SetYkInfor 回调
├── iec_method.cpp: 实现 SetYkInfor (遥控选择/执行/撤销)
├── iec.cpp: 取消 CS10x_SetYkInforHandler 注释
└── 编译验证
P3 → 实现参数定值回调
├── iec_method.cpp: 实现 GbParamAddElement/GbParamRunRding/GbParamRunWting
├── iec_method.cpp: 实现 GbParamGetTotalNum/GbParamGetIecParam
├── iec.cpp: 取消 CS10x_S_IECParamHandler/CS10x_S_GetParamInfoHandler 注释
└── 编译验证
P4 → 文件服务回调
├── iec_method.cpp: 实现文件操作回调(读/写/目录)
├── iec.cpp: 取消 CS10x_S_FileReadOprtHandler/CS10x_S_FileWriteOprtHandler 注释
└── 编译验证
P5 → 配置集成
├── 修改启动流程加载 IEC XML 配置文件
├── 修改 app_iec 线程注册 iec_point_init
└── 编译验证