# Current Handoff - Goal: 完成综合平台编程器的结构化梯形图、数据点管理、离线仿真和 Modbus RTU 真机链路 - Branch: `main` - Current status: 第 1~10 步的软件实现与自动化测试已完成,待连接 XDH-60T4-E 进行真机安全验证和整理最终交付资料 ## 当前能力 - 梯形图条件使用递归 `Node / Series / Parallel` 表达式树,可表示 `A OR (B AND C)` 和嵌套串并联 - 编辑器支持节点前后串联、节点并联、整支路并联、删除节点或支路、设置输出线圈,并按结构自动布线 - 执行器递归求值并生成节点、表达式、网络轨迹,离线运行时画布显示导通路径和故障位置 - 数据点表统一维护地址、类型、名称、注释、当前值和 HMI/LAD 引用位置 - `ActiveRegisterRepository` 在离线虚拟仓库与 PLC 缓存仓库之间切换 - `PlcCommunicationService` 使用 Qt SerialBus 异步连接、轮询和单点写入,UI 不阻塞 - 真机连接收集数据点、HMI 和梯形图地址,按 M/D 分区并合并相邻地址读取 - 真机模式要求首次读取完成,不复制离线值,不运行 PC 软件逻辑执行器 - 通信错误停止轮询并保留最后一次有效缓存,状态栏和日志显示错误 - 主窗口静态控件已迁入 `main_window.ui`,PLC 参数由独立配置对话框收集后再发起连接 ## 关键决策 - 工程格式继续使用 `1.0`,当前文件直接保存表达式树和数据点 - 不读取旧的 `stages/branches` 结构,不添加旧格式迁移和兼容层 - 梯形图编辑结构而不是自由线段,避免悬空线、环路和多个输出路径 - 条件节点继续使用 `std::variant` 的独立配置类型,不向通用节点添加无关字段 - HMI、梯形图和通信共享 `M0~M4000`、`D0~D4000` 数据点范围 - PLC 读写使用从 `0` 开始的原始 Modbus 地址 - HMI 写请求不乐观修改 PLC 缓存,由下一次轮询确认真实值 - 真机运行时 PLC 内部程序是控制源,软件逻辑执行器保持停止 ## 自动化验证 以下测试均已完成干净构建并通过: - `domain_tests` - `logic_editor_service_tests` - `offline_simulation_service_tests` - `project_management_tests` - `hmi_editor_service_tests` - `runtime_mode_service_tests` - `data_point_service_tests` - `plc_runtime_tests` - `main_window_tests` `main_window_tests` 还覆盖 PLC 配置参数往返、独立配置弹窗入口,以及主窗口不再内嵌串口参数控件。 Qt Release 应用已完成干净构建,并执行了启动与正常退出冒烟验证。`git diff --check` 无空白错误。 ## 待完成事项 1. 在 PLC STOP 状态确认 COM2 参数和 RS-485 A/B 接线 2. 用安全测试地址读取 `M0`、`D0` 3. 写入 `M0`、`D0` 并由 PLC 监控和下一次轮询确认 4. 验证断线、超时和重新连接流程 5. PLC 切换 RUN 后执行完整 HMI 与设备联动测试 6. 整理测试记录、构建说明和演示工程 ## 建议下一步 运行 Release 应用,配置实际 COM 口、站号、波特率和校验方式,在 PLC STOP 状态完成 `M0`、`D0` 首次安全读写。未确认设备程序与负载安全前不要在 RUN 状态写控制地址。