RTU/mimo/plan/libiec_IEC104改造计划.md

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.cppdc_signal_out_link_with_callback 完成
SOE 变位事件队列回调 iec_point.cppdc_event_register_queue_pop 完成
CS10x 初始化 (104/101) iec.cppPtlInit 完成
参数配置 (104/101) iec.cppSet104PtlParam/Set101PtlParam 完成
回调注册 (12/18 个) iec.cppPtlItfcInit 12 个已注册
总召遥测回调 iec_method.cppGetYcCountByGroup / GetYcValueByGroup 完成
总召遥信回调 iec_method.cppGetYxCountByGroup / GetYxStatusByGroup 完成
SOE 队列回调 iec_method.cppGetSOE / GetSOESendNum / UpdateSoePtrOut 完成
扰动遥测队列回调 iec_method.cppGetDiturbYc / GetDiturbYcSendNum / UpdateDiturbYcPtrOut 完成
电度总召回调 iec_method.cppGetDdCountByGroup / GetDdValueByGroup 完成
时标电度队列回调 iec_method.cppGetTimeDdu / GetTimeDduSendNum / UpdateTimeDduPtrOut 完成
故障事件队列回调 iec_method.cppGetFaultEvent / GetEventSendNum / UpdateFaultEventPtrOut 完成
对时回调 iec_method.cppGetTimeItfs / SetTimeItfs 完成
遥控校验回调 iec_method.cppCs10xYkVerifyItfs 完成
定值区占位 iec_method.cppGbParamGetParamArea / GbParamSetParamArea 占位
app_iec 线程驱动 iec.cppapp_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
  └── 编译验证