170 lines
8.0 KiB
Markdown
170 lines
8.0 KiB
Markdown
# 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 / 内部协议 —— 全部 ⬜
|