# 综合平台编程器开发顺序 > 本文规定项目的推荐开发顺序。原则是先建立稳定的数据模型和模块边界,再完成编辑功能,最后接入仿真与真实 PLC。每个阶段完成后都应保证项目可以构建、运行并提交一次 Git 记录。 ## 当前进度 第 1~11 步的软件实现和现场验证已完成,工程格式统一为包含连续网格、状态文本和按钮启用条件的 `4.0`,不保留旧工程兼容代码。当前重点是第 12 步的交付资料和最终演示整理。 ## 1. 建立开发基线 - 初始化 Git 仓库,确认 `.gitignore`、编码规则和提交规范。 - 验证 Qt 5.15.2、qmake、MinGW、Qt SerialBus 的构建环境。 - 建立可启动的 Qt Widgets 空工程和独立构建目录。 完成标准:空程序可以通过 qmake 构建并正常启动。 ## 2. 搭建项目分层骨架 - 建立 UI、领域、服务、基础设施和测试目录。 - 明确模块依赖方向,`MainWindow` 只负责界面组织,不承载业务逻辑。 - 在 `docs/architecture.md` 中记录目录职责和核心数据流。 完成标准:各层具有清晰入口,工程仍可独立构建。 ## 3. 定义核心数据模型与接口 - 定义工程、HMI 页面、HMI 控件、结构化控制逻辑和 M/D 地址模型。 - 定义统一的寄存器仓库接口,隔离虚拟寄存器与真实 PLC 寄存器。 - 定义编辑态、离线运行态和真机运行态的状态边界。 完成标准:核心模型不依赖具体 UI、串口或 Modbus 实现。 ## 4. 实现工程管理 - 实现新建、保存、另存为和加载工程。 - 保存 HMI 配置、控制逻辑、M/D 绑定和必要的工程版本信息。 - 使用服务层编排工程操作,基础设施层负责版本化 JSON 转换和原子文件写入。 - 对无效文件、缺失字段和不兼容版本给出明确错误。 完成标准:空工程和示例工程可以保存后重新加载,数据保持一致。 ## 5. 完成主界面与状态管理 - 使用 Qt Designer 搭建工具栏、工程区域、HMI 编辑区、逻辑编辑区、属性区和状态反馈区。 - 实现编辑态与运行态的统一切换入口。 - 根据当前状态限制不可用操作,避免编辑与运行同时发生。 完成标准:主界面结构完整,状态切换行为明确且可见。 ## 6. 实现 HMI 编辑器 - 支持基础控件的添加、选择、移动、删除和属性配置。 - 支持按钮、指示灯、数值显示和数值输入等基础控件。 - HMI 控件只绑定统一寄存器仓库,不直接访问仿真器或串口。 完成标准:能够管理多个有序 HMI 页面,配置初始页、固定文本和页面跳转,并随工程保存和加载。 ## 7. 实现控制逻辑编辑器 - 使用连续 10 列 `LadderCell` 和独立 `VerticalConnection` 建立梯形图网格,横线、竖线和条件节点分别持久化。 - 支持节点按列插入、并联支路、输出槽配置、行上方/下方插入和行删除。 - 支持鼠标横向连续画线、纵向连续连接、独立删线和网络拆分;`F11/F12` 与 `Shift+F11/Shift+F12` 分别操作当前选中的网格或竖线。 - 实现 M 常开/常闭触点、M 上升沿/下降沿触点、D 值与常量比较、普通/置位/复位 M 线圈以及 MOVE、ADD/SUB。 - 上升沿和下降沿按一次扫描脉冲执行;ADD/SUB 以有符号 16 位结果饱和处理溢出,不能让一次越界中止扫描。 - 梯形图节点只引用项目统一的 M/D 地址;新增或恢复指令时,必须同步领域模型、编辑器、JSON、执行器和测试。 - M/D 注释作为工程级地址元数据保存,网络注释作为 `LadderRung` 字段保存,两者都不改变寄存器轮询行为。 - 新增节点类型时使用独立配置类型,不向通用节点结构持续堆叠无关字段。 - 编辑器只生成逻辑模型,不直接修改 HMI 或 PLC。 - 工程可包含多个有序控制逻辑,离线执行器按顺序扫描全部启用项,运行工作台只切换当前轨迹投影。 - 画布按固定网格绘制左右母线和输出槽,行间网络由竖线连通分量决定;不允许节点自由拖动,也不保存自由像素线段。 完成标准:能够表达 `A OR (B AND C)` 等嵌套逻辑,并配置启动、停止和状态保持逻辑。 ## 8. 实现离线仿真运行 - 实现虚拟 M/D 寄存器和固定周期的软件逻辑执行器,边沿触点的上一轮输入按逻辑 ID 和节点 ID 隔离保存。 - 将 HMI、虚拟寄存器和控制逻辑形成完整闭环。 - 验证常开/常闭、边沿脉冲、线圈模式、MOVE 和 ADD/SUB 的网络顺序语义。 - 实现启动、停止、异常和当前运行状态反馈。 - 记录节点、支路和网络导通轨迹,在画布突出导通路径和故障节点。 完成标准:不连接 PLC 时,可以通过 HMI 操作并观察逻辑运行结果。 ## 9. 实现 Modbus RTU 真机通信 - 使用 Qt SerialBus 的 `QModbusRtuSerialMaster` 封装独立通信服务。 - 实现串口配置、连接、断开、M/D 读写、轮询、超时和错误反馈。 - 使用从 `0` 开始的原始 Modbus 地址,通信过程不得阻塞 UI。 - 收集 HMI 和梯形图实际引用地址,按 M/D 分区并合并相邻地址轮询。 - 写请求不乐观更新缓存,等待下一次读回确认 PLC 实际值。 完成标准:软件链路和自动化测试完成后,先在 PLC STOP 状态下稳定读取和写入 `M0`、`D0`,再验证批量轮询。 ## 10. 完成运行模式集成 - 离线模式连接虚拟寄存器并启动软件逻辑执行器。 - 真机模式连接 PLC 寄存器缓存;每轮完整轮询后把引用的 M/D 复制到临时仓库,仅推算本地梯形图轨迹,不向 PLC 写本地输出。 - 切换到真机模式时先读取 PLC 数据,不自动下发离线仿真值。 完成标准:两种运行模式可安全切换,数据来源和界面状态不会混淆。 ## 11. 完成稳定性与测试 - 优先为地址边界、M/D 区域约束、HMI 和逻辑配置校验、工程校验以及模式切换规则编写自动化测试。 - 工程文件实现后测试保存加载往返和错误文件处理 - 逻辑执行器实现后测试启动停止保持等代表性场景 不为每个简单访问器单独编写测试 - 通信层验证断线、超时、CRC/协议异常和关键地址读写 真机只做少量安全冒烟测试 - 完成一次离线仿真闭环和一次真机 RUN 联动流程测试 完成标准:核心流程可重复执行,异常有反馈,程序不会崩溃或误写 PLC。 完成情况:自动化回归已覆盖核心领域、编辑服务、JSON 存储、离线仿真、运行模式和 Fake PLC;主界面在交付前人工验收。真实串口和 STOP 安全读写已经完成,2026-08-21 由用户在已连接的 XDH-60T4-E 上完成 RUN 联动手动验收。自动化测试不能替代这项现场验证,因为它还依赖 PLC 内部程序、接线和实际负载。 ## 12. 完成交付与演示 - 整理规格书、方案书、测试大纲、构建运行说明和演示工程。 - 准备工程创建、HMI 配置、逻辑配置、离线仿真、真机联机和状态反馈的演示流程。 - 最后再评估新增控件、设备适配或插件机制等可选加分项。 完成情况:工程创建/保存/加载、HMI 配置、逻辑配置、离线仿真、编辑态与运行态切换、PLC 真机联机、RUN 联动和状态反馈均已有演示路径;剩余工作是整理最终交付资料和演示顺序。 完成标准:在干净环境中可以按文档构建,并完整演示验收流程。 ## 建议进度 | 周期 | 阶段 | | --- | --- | | 第 1 周 | 第 1~5 步:基线、架构、模型、工程管理和主界面 | | 第 2 周 | 第 6~8 步:HMI、控制逻辑和离线仿真 | | 第 3 周 | 第 9~10 步:Modbus RTU 和运行模式集成 | | 第 4 周 | 第 11~12 步:测试、修复、文档和演示 | ## 执行纪律 - 不跨阶段提前堆叠功能;发现前置模型不稳定时,先修正前置阶段。 - 每完成一个阶段,都执行构建和对应测试,并更新 `docs/ai/handoff.md`。 - 核心验收功能完成前,不优先开发插件系统、复杂动画和非必要控件。