From aed125e18645657a48346383efb17b09f55d7879 Mon Sep 17 00:00:00 2001 From: suyu <1643689728@qq.com> Date: Thu, 13 Aug 2026 10:52:58 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=E6=A2=AF=E5=BD=A2?= =?UTF-8?q?=E5=9B=BE=E7=BD=91=E6=A0=BC=E7=BC=96=E8=BE=91=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ai/handoff.md | 6 +++++- docs/architecture.md | 6 ++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/ai/handoff.md b/docs/ai/handoff.md index df5ee8d..a8d9304 100644 --- a/docs/ai/handoff.md +++ b/docs/ai/handoff.md @@ -7,7 +7,8 @@ ## 当前能力 - 梯形图条件使用递归 `Node / Series / Parallel` 表达式树,可表示 `A OR (B AND C)` 和嵌套串并联 -- 编辑器支持节点前后串联、节点并联、整支路并联、删除节点或支路、设置输出线圈,并按结构自动布线 +- 编辑器使用固定行列网格和正交连线,支持当前节点后串联、单节点并联、连续节点范围并联、删除节点或网络以及设置输出线圈 +- 画布只选择可见节点,不暴露内部表达式容器;橡皮框或多选连续节点后可直接建立并联支路 - 执行器递归求值并生成节点、表达式、网络轨迹,离线运行时画布显示导通路径和故障位置 - 数据点表统一维护地址、类型、名称、注释、当前值和 HMI/LAD 引用位置 - `ActiveRegisterRepository` 在离线虚拟仓库与 PLC 缓存仓库之间切换 @@ -22,6 +23,7 @@ - 工程格式继续使用 `1.0`,当前文件直接保存表达式树和数据点 - 不读取旧的 `stages/branches` 结构,不添加旧格式迁移和兼容层 - 梯形图编辑结构而不是自由线段,避免悬空线、环路和多个输出路径 +- 网格仅作为编辑投影,不进入工程格式;服务层把连续范围操作转换为规范化表达式树 - 条件节点继续使用 `std::variant` 的独立配置类型,不向通用节点添加无关字段 - HMI、梯形图和通信共享 `M0~M4000`、`D0~D4000` 数据点范围 - PLC 读写使用从 `0` 开始的原始 Modbus 地址 @@ -44,6 +46,8 @@ `main_window_tests` 还覆盖 PLC 配置参数往返、独立配置弹窗入口,以及主窗口不再内嵌串口参数控件。 +本轮梯形图编辑重构还验证了:固定网格渲染、水平/垂直正交布线、工具栏直接建立并联支路,以及连续范围 `A AND ((B AND C) OR D)` 的结构变换和非连续范围拒绝。 + Qt Release 应用已完成干净构建,并执行了启动与正常退出冒烟验证。`git diff --check` 无空白错误。 ## 待完成事项 diff --git a/docs/architecture.md b/docs/architecture.md index f0078c6..116e1ab 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -76,9 +76,11 @@ Parallel └── Node(C) ``` -`LogicEditorService` 支持在节点前后串联插入、与节点并联、与整个支路并联、删除节点或支路,以及设置或替换输出线圈。删除后会归一化空容器和只有一个子项的容器,防止无效嵌套进入执行器。 +`LogicEditorService` 支持在当前节点后串联插入,并为单个节点或同一网络中的连续逻辑范围建立并联支路。例如选择 `B、C` 后建立并联会得到 `A AND ((B AND C) OR D)`。服务层负责校验范围连续性和子表达式完整性,拒绝跨网络、非连续或截断内部子表达式的选择。删除后会归一化空容器和只有一个子项的容器,防止无效嵌套进入执行器。 -`LogicEditorWidget` 根据表达式树计算布局并自动生成横线、竖线和支路汇合线。画布可选择节点或表达式范围,并显示选中范围和插入位置;用户编辑结构而不是直接保存线段,因此不会产生悬空线、环路和多输出路径。 +`LogicEditorWidget` 将表达式树投影到固定行列网格,串联节点横向占列,并联分支纵向占行,所有连接只使用水平线和竖线。用户只选择画布中可见的节点:单击定位当前节点,橡皮框或多选连续节点后可直接建立并联支路。内部 `Series / Parallel` 容器不作为可选 UI 对象暴露。网格是编辑投影,不持久化自由线段,因此不会产生悬空线、环路和多输出路径。 + +工具栏中的常开、常闭和比较条件在没有选择时追加到当前网络末尾,选中一个条件节点时插入到该节点后。并联支路按钮默认建立常开触点,下拉菜单可选择常闭触点或比较条件。新增节点保持待配置状态,并自动选中供属性区继续编辑。 条件节点使用 `std::variant` 保存独立配置类型,当前包含 M 常开/常闭触点和 D 值与常量比较。输出支持普通、置位和复位 M 线圈。新增节点类型时应增加独立配置类型及校验、存储和执行分支,不能向通用节点堆叠无关字段。