RTU_ALL_AI/COMPLETION.md

170 lines
8.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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`纯C4文件: 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 协议绑定) | ✅ |
## 阶段 2v3.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/`(待补) | ⬜ |
## 阶段 2v3.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项
## 阶段 4PLC 遥测运算 + 前端增强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 / 内部协议 —— 全部 ⬜