選択できるのは25トピックまでです。
トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
当前开发交接
更新日期:2026-08-19。本文件只保留当前状态和下一步;完成事项合并成结论,不追加按日期排列的开发日志。
当前状态
- 分支:
main
- 核心软件闭环已经可用:HMI 编辑、结构化梯形图、离线仿真、工程 JSON、独立 HMI 运行窗口、自由监控和 Modbus RTU 真机读写均已实现
- 当前工作区有未提交改动:批量删除并联支路的结构清理修复、独立 HMI 运行窗口、相关 UI 回归测试和本交接更新;开始工作前先看
git status 和相关 diff,不要重置
docs/二次开发/ 是已有未跟踪资料,不能因当前任务删除
- 当前没有代码阻塞;下一里程碑是实际设备 RUN 联动和交付整理
已实现能力
- 工程格式为严格的
1.0,保存多 HMI 页面、初始页、报警定义、M/D 注释、多控制逻辑和结构化梯形图;不读取旧 dataPoints 或 stages/branches 格式
- HMI 现有 8 类控件:Button、Indicator、NumericDisplay、NumericInput、Label、PageJump、AlarmList、ProgressBar
- 梯形图使用
Node / Wire / Series / Parallel 表达式树和正交网格,不保存自由线段;前 10 列为条件区,输出最多位于第 11 列
- 梯形图支持 M 触点与上下沿、T/C 触点、普通/置位/复位线圈、TON、CTU/CTD、MOVE、ADD/SUB
- 只有输出、没有条件的网络按恒真执行;只有条件、没有输出的启用网络不能运行;空网络扫描时跳过
- 离线执行器按控制逻辑和网络顺序扫描,使用虚拟 M/D,并生成按逻辑 ID 隔离的运行轨迹
- 真机模式只使用 PLC 读回缓存,停止本地逻辑执行器,不下载本地梯形图,也不显示伪造的 PLC 梯形图轨迹
- 自由监控属于当前会话,支持 M/D 批量添加、去重、读取和单点写入,不写入工程 JSON
- PLC 通信使用异步 Qt Modbus RTU;轮询地址来自 HMI、报警、梯形图和自由监控的引用并集,写入后等待轮询确认,不乐观修改缓存
- 真机进入要求当前连接完成首次读取;通信故障撤销首读资格并退出真机运行,恢复通信后仍停留在编辑态
- 进入离线或真机运行后会打开最大化的独立 HMI 窗口,主窗口保留工程师诊断工作台;两个视图共享运行页面和寄存器数据源,关闭独立窗口会统一返回编辑态
- 所有数量上限和超限处理见
docs/用户使用/数量边界确认方案.md,核心常量集中在 app/src/domain/project_limits.h
当前未提交改动
- 条件表达式归一化会递归移除空的
Series / Parallel 容器,避免批量删除整条并联行后残留空支路
LogicEditorService::removeNodes() 删除并归一化后重新校验网络,结构非法时恢复编辑前状态
- 服务测试覆盖批量删除并联支路全部触点、结构归一化和撤销恢复;UI 测试覆盖画布整行多选删除及竖线连接清理
- 新增
HmiRuntimeWindow,复用运行态 HMI 画布,窗口生命周期和页面跳转由 RuntimePanelController 编排,不改变运行模式、PLC 通信或离线执行器
- 每个新的运行会话都会强制重建独立 HMI 当前页面,避免页面 ID 不变时遗漏编辑态新增控件
最近验证
- 批量删除并联支路回归已通过专项探针、
logic_editor_service_tests 和 main_window_tests;逐个删除、删除完整支路和部分批量删除均保持有效
- 修复后全量测试目标均通过:
alarm_service_tests、domain_tests、hmi_editor_service_tests、logic_editor_service_tests、main_window_tests、offline_simulation_service_tests、plc_runtime_tests、project_management_tests、register_monitor_service_tests、runtime_mode_service_tests
- Qt Release 主程序已重新构建并链接成功
git diff --check 通过
- 真实 PLC 已使用
COM3 / 9600 / 8E1 / 站号 1 验证首次读取、断线恢复和重新首读
- 2026-08-19 已读取
D4000=0,写入并读回 1,随后恢复并读回 0;没有下载 PLC 程序
- 本次修复只影响梯形图编辑结构归一化和删除校验,不涉及 PLC 通信或真机运行,因此没有重复写 PLC
- 独立 HMI 窗口改动已通过
main_window_tests(显示、关闭退出、页面同步,以及退出编辑后新增控件再次运行的页面刷新)及 runtime_mode_service_tests,Qt Release 主程序重新构建通过
- 本次独立窗口改动没有改变 PLC 通信协议或寄存器写入逻辑,因此未做额外真机读写
待完成
- 在确认接线、地址和负载安全后,将 PLC 切到 RUN,完成 HMI 与实际设备的完整联动测试
- 整理最终演示工程、构建说明和验收记录
- 复核当前未提交 diff,并按逻辑拆分提交;不要把
docs/二次开发/ 等来源不明改动混入提交
下一会话起点
- 运行
git status --short,确认当前未提交和未跟踪文件仍在
- 根据任务读取
docs/architecture.md、数量边界文档或硬件/Modbus 要点,不再从旧开发日志推断现状
- 修改代码后运行受影响测试和 Release 构建;涉及真机通信时按
AGENTS.md 做 COM3 读写及恢复验证