8.0 KiB
8.0 KiB
RTU_ALL_AI 开发完成事项清单
日期: 2026-07-13
阶段 0:基础设施
| 任务 | 模块 | 状态 |
|---|---|---|
| 搭建构建系统 | release/linux.mk, makefile, build.sh, copy_headers.sh |
✅ |
| 创建 myBase.h 基础定义 | release/inc/myBase.h |
✅ |
| 实现侵入式链表 | liblist |
✅ |
| 实现日志系统 | liblog |
✅ |
| 实现基础工具函数(65个) | libfunc |
✅ |
阶段 1:数据基础设施
| 任务 | 模块 | 状态 |
|---|---|---|
| 实现 MD5 摘要算法 | libmd5 |
✅ |
| 实现 xxHash 快速哈希 | libmy_xxhash |
✅ |
| 实现 cJSON 解析 | libcJSON |
✅ |
| 实现命令处理框架 | libcmd |
✅ |
| 实现 XML 解析 | libxml |
✅ |
| 实现数据中心(15文件拆分) | libdatacenter |
✅ |
| 实现任务调度 | libtask |
✅ |
| 单元测试 | test_datacenter.cpp(34项全通过) |
✅ |
| x86 编译验证 | 10/10 模块全通过 | ✅ |
| ARM 交叉编译验证 | 10/10 模块全通过 | ✅ |
阶段 2:通讯与协议
| 任务 | 模块 | 状态 |
|---|---|---|
| 通讯抽象层 | libcomm |
✅ |
| 通讯抽象层测试 | test_comm.cpp(17项全通过) |
✅ |
| Modbus 协议栈 | libmodbus(开源库 v3.1.12,导入+日志适配) |
✅ |
| IEC 60870-5-104 | lib60870(原工程自研协议栈,导入) |
✅ |
| Modbus 主站管理 | libmodbus_m(原工程自研模块,导入+适配) |
✅ |
| 通讯通道解码 | libcom_decode |
⬜ |
| Web 管理服务 | libweb_server(3 文件拆分,单线程,EV_STOP 支持) |
✅ |
| Mongoose 网络库 | libmongoose(开源库 v7.22,导入+适配) |
✅ |
| 主程序入口 | RTU(X-Macro 框架 + app_config.json 启停控制 + 独立 config/ 目录) |
✅ |
阶段 2:通讯与协议(续)
| 任务 | 模块 | 状态 |
|---|---|---|
| ICP67 自定义协议库 | libicp67(纯C,4文件: frame+decode+core+headers) |
✅ |
| 自协议应用层模块 | libself_ptl(C++,3文件: core+cfg+cb + 2 headers) |
✅ |
| 通信路由中枢 | libcom_router(C++,3文件: core+dispatch+header, bind_app协议绑定路由) |
✅ |
| ICP67 单元测试 | test_icp67.c(21 项全通过) |
✅ |
| IEC-104 服务端模块 | libiec(5文件: iec104.cpp+cfg.cpp+point.cpp+2 headers, 26个CS10x回调) |
✅ |
| 通信路由中枢 bind_app | libcom_router(dispatch_cb 注册表, 通道配置 bind_app 协议绑定) |
✅ |
阶段 2:v3.1 修复与增强(2026-07-10)
| 任务 | 模块 | 状态 |
|---|---|---|
| 修复死锁(持锁回调) | libdatacenter — dc_async_timeout_check |
✅ |
| 修复线程安全(static string) | libdatacenter — dc_get_type_name → thread_local |
✅ |
| 修复队列无上限 | libdatacenter — event queues MAX_SIZE=1024 |
✅ |
| 修复回路阻断竞态 | libdatacenter — dirty_by_multi 标志 |
✅ |
| 补全值范围校验 | libdatacenter — dc_check_val_valid 12种数值类型 min/max |
✅ |
| 补全strcmp比较 | libdatacenter — C8/C32/C64/C128/STR 用 strcmp |
✅ |
| 代码格式规范化 | libiec(3文件)— LOCAL/Tab/大括号独占行 |
✅ |
| self_ptl 测试命令 | libself_ptl(CMD_REGISTER_C, 9个子命令) |
✅ |
| 代码审查+修复 | libicp67(TI_1/TI_6边界检查, TI_3续帧修复等15项) |
✅ |
| EV_STOP 补全 | self_ptl + com_router + modbus_m(3模块) |
✅ |
| libiec 模块文档 | docs/system/libiec/(待补) |
⬜ |
阶段 2:v3.2 WSL 本地测试准备(2026-07-13)
| 任务 | 模块 | 状态 |
|---|---|---|
| 新增 tcp_client 通道解析 | com_router — JSON 解析 + 默认配置支持 COMM_TYPE_TCP_CLIENT |
✅ |
| 新增 FTU 网口通道配置 | config/CHANNEL/channel_cfg.json — tcp_ftu (127.0.0.1:54321 TCP 客户端) |
✅ |
| 编译脚本增强 | release/build.sh — 编译前删除旧 RTU, 编译后拷贝到 config 同级目录 |
✅ |
| x86 编译验证 | 全量编译通过, RTU 可正常启动到 RTU> 提示符 | ✅ |
阶段 3:系统集成
阶段 3:系统集成
| 任务 | 模块 | 状态 |
|---|---|---|
| 端到端集成测试 | — | ⬜ |
| README 文档 | — | ⬜ |
缺失测试的模块
| 模块 | 应写测试 | 优先级 |
|---|---|---|
liblist |
test_list.c |
低(头文件宏,无运行时逻辑) |
liblog |
test_log.c |
中 |
libfunc |
test_func.c |
中 |
libmd5 |
test_md5.c |
低(算法标准,验证向量固定) |
libcJSON |
test_cjson.c |
中 |
libmy_xxhash |
test_xxhash.c |
低(算法标准) |
libtask |
test_task.c |
中 |
libxml |
test_xml.c |
低(thin wrapper over tinyxml2) |
libcmd |
test_cmd.c |
中 |
已有测试:
test_datacenter.cpp(34项) ✅test_comm.cpp(17项) ✅
阶段 4:PLC 遥测运算 + 前端增强(2026-07-15)
4.1 后端 — PLC 遥测运算引擎
| 任务 | 模块 | 状态 |
|---|---|---|
| 新增 6 个 MX 节点类型 (50-56) | libplc — ADD/SUB/MAX/MIN/MUL/DIV/ABS |
✅ |
| 新增 MX_CMP 比较元件 (57) | libplc — A>B→1, 否则→0 |
✅ |
| 7 个 MX execute 函数 | libplc — add/sub/max/min/mul/div/abs/cmp |
✅ |
| dst_pin 引脚排序通用化 | libplc — 从 SR/RS 扩展到所有多输入门 |
✅ |
| MX 输出信号 F32 注册 | libplc — plc.mx.out.0~19, DATA_TYPE_F32 |
✅ |
| 减法改为有符号 a-b | libplc — 原为 |a-b|,改为 a-b(可负数) |
✅ |
| 修复重复 MX float 写入块 | libplc — plc_set_out_by_id 去重 |
✅ |
| 更新 dst_pin 注释 | libplc — 0=A/S, 1=B/R |
✅ |
| XML 配置持久化 | libweb_server — dc_save_out_signals_xml |
✅ |
4.2 前端 — PLC 配置页面
| 任务 | 模块 | 状态 |
|---|---|---|
| 合并运算符按钮 | plc_config.js — 遥信/遥测运算 → 统一 "运算符" |
✅ |
| MX 引脚 A/B 标注 | plc_config.js — drawGraphContent 画布引脚标签 |
✅ |
| MX inMax 限制为 2 | plc_config.js — ADD~DIV 固定 2 输入,ABS 固定 1 |
✅ |
| MX 信息弹窗 | plc_config.js — showMXInfoModal(引脚来源+顺序警告) |
✅ |
| 修复编辑加载备份 Bug | plc_config.js — indexOf → endsWith 精确匹配 |
✅ |
| 信号行 入/出 按钮 | plc_config.js — 每行信号增加 [入][出] 独立按钮 |
✅ |
| 新增运算符面板 | plc_config.js — 18 种运算符侧栏,点击即添加 |
✅ |
| Canvas 字体增大 | plc_config.js — 全节点字号+2~3px,节点尺寸+10px |
✅ |
| 信号面板加宽 | plc_config.js — 230→290px, 运算符面板 150→160px |
✅ |
4.3 前端 — PLC 调试页面
| 任务 | 模块 | 状态 |
|---|---|---|
| 三列堆叠布局 | plc_debug.js — 左(遥信入+遥测入) | 中(信号表) | 右(遥信出+遥测出) |
✅ |
| 遥信输入按钮翻转 | plc_debug.js — 点击按钮 0↔1,发送 WS set 命令 |
✅ |
| 遥信输出 LED 指示 | plc_debug.js — >0 亮绿灯,≤0 灭 |
✅ |
| 遥测输入设值框 | plc_debug.js — 输入框+[设置]按钮,显示当前值(括号) |
✅ |
| 遥测输出值展示 | plc_debug.js — 实时显示浮点值 |
✅ |
| 箭头按钮全称+对齐 | plc_debug.js — ←遥信输入/遥信输出→,space-between |
✅ |
| 信号表 #序号+大字 | plc_debug.js — 增加序号列,font-size 12px,去除截断 |
✅ |
| 修复 MX 设置不发送 | plc_debug.js — 移除 WsClient.send 返回值误判 |
✅ |
| CSS 三列 Grid | style.css — 1fr 1.2fr 1fr + .plc-block 堆叠 |
✅ |
4.4 Git 记录
| 提交 | 内容 |
|---|---|
4edabf2 |
feat: PLC遥测运算完善 + 调试页五区布局 + 比较元件 + MX输出注册 |
4f07275 |
fix: MX设置按钮修复 + 信号面板加宽 + Canvas字号增大 |
4.5 编译状态
- x86 全量编译: ✅ 0 错误
- JS 语法检查: ✅ plc_config.js + plc_debug.js 均通过
阶段 5(预留)
ICP67 / IEC61850 MMS / MQTT / 嵌入式HTTP / 内部协议 —— 全部 ⬜