Bläddra i källkod

docs: document ladder command input

main
suyu 3 veckor sedan
förälder
incheckning
11d00e4d0e
2 ändrade filer med 63 tillägg och 3 borttagningar
  1. +22
    -3
      docs/ai/handoff.md
  2. +41
    -0
      docs/用户使用/命令语输入说明.md

+ 22
- 3
docs/ai/handoff.md Visa fil

@@ -11,7 +11,7 @@
- 应用外部配置业务已经完成,固定读取可执行文件目录下的 `config/application.ini`
- 配置支持 6 个体验型数量上限、2 个新建 HMI 页面默认尺寸和 6 个 PLC 串口默认参数
- 配置启动时只读取一次,不热更新,不覆盖已有文件,不回写 PLC 配置窗口中的临时修改
- 当前没有代码阻塞,12 个 Release 功能测试、性能测试和 Release 主程序构建均已通过
- 当前没有代码阻塞,命令语输入功能已接入,Release 功能测试和 Release 主程序构建均已通过

## 工作区状态

@@ -21,6 +21,19 @@
- 新增用户文档 `docs/用户使用/应用配置说明.md`,并同步架构、数量边界、测试约定和 `AGENTS.md` 索引
- `build/` 只保存本地构建和测试输出,不纳入 Git
- 未创建或修改发布包内的默认 INI;正式程序首次运行时由加载器按实际可执行文件目录创建
- 新增 `LogicCommandService`,支持首期 14 类命令解析、M/D 地址校验、指令补全数据和原子转换
- 梯形图条件区、横线、Gap 和输出槽支持双击命令输入;成功后复用现有表达式树和图元刷新,失败保留输入并标红
- 连续 `LD` 会创建下一个网络;连续 `AND/ANI` 追加当前网络;连续 `OR/ORI` 将累计条件整体并联且不额外占用主干列
- 命令生成节点直接标记为已配置,不新增命令文本持久化格式;运行、JSON 保存和真机本地推算继续使用结构化梯形图
- 新增 `docs/用户使用/命令语输入说明.md` 和命令解析、连续输入、横线/Gap 替换及原子失败测试
- 命令输入框失焦会自动结束未提交输入,场景刷新会清理旧选择;表达式渲染跳过零长度连接线
- 删除后保留的 `Gap` 会被横线和条件追加优先复用,连续横线插入会消耗目标后的 Gap,不会错误创建新网络
- 已有条件节点和输出节点支持双击进入命令输入;条件节点可用 `LD/LDI/LDP/LDF` 替换,输出节点可用 `OUT/SET/RST/MOV/ADD/SUB` 替换,类型不匹配时原子拒绝
- 双击已有节点时命令输入框会回填当前指令和 M/D 地址;补全弹窗改为左对齐的“指令 / 操作数 / 说明”三列表格,并扩大宽高,输入框在视口边缘自动避让
- 命令补全增加 `LD=`、`LD<>`、`LD<`、`LD<=`、`LD>`、`LD>=` D 值比较指令,格式为比较指令 + D 地址 + 有符号常量
- `MOV/ADD/SUB` 命令输入保留指令对话框允许的常量操作数;补全过滤只按第一段指令名匹配,输入空格后的 M/D 操作数时仍保留指令提示
- 梯形图删除支持框选网络批量删除;混合选中时忽略断路占位,不再弹出“已经是断路”的误导提示
- 梯形图画布统一支持从网络内部或外部开始鼠标拖拽框选,Ctrl 继续追加选择

## 本轮变更结论

@@ -46,6 +59,11 @@
## 最近验证

- 2026-08-25 执行 `run_qt_tests.ps1 -Configuration Release -Suite All`,12 个 Release 功能测试目标和性能测试全部通过
- 2026-08-25 执行 `run_qt_tests.ps1 -Configuration Release -Suite Functional`,包含命令输入测试的 12 个功能测试目标全部通过
- 2026-08-25 重新执行 qmake 和 `mingw32-make -j2`,Release 主程序 `build/release/release/integrated_platform.exe` 链接通过
- 2026-08-25 修复命令输入失焦、零长度连线黑点、删除后 Gap 复用和连续横线插入;Release Functional 测试及主程序构建通过
- 2026-08-25 修复已有节点双击无法进入命令输入;新增条件/输出节点替换回归测试,Release Functional 测试、主程序构建和 `git diff --check` 通过
- 2026-08-25 修复梯形图整网删除误报断路、网络内部无法启动框选;新增批量网络删除原子性测试,Release Functional 测试、主程序构建和 `git diff --check` 通过
- 2026-08-25 新增 Float32 编解码、HMI 双字读写、D3999/D4000 边界、HMI 重叠、自由监控步长/重叠/读写和 Float32 轮询元数据测试;All 套件全部通过
- `application_settings_tests` 覆盖首次创建与默认内容、完整加载、缺失和未知字段、重复字段、越界、非整数、版本不兼容、非法 UTF-8 及创建失败回退
- 领域和服务测试覆盖 HMI 页面/控件、报警、控制逻辑/网络动态上限与新建页面默认尺寸
@@ -54,11 +72,11 @@
- 重新执行 qmake 并完成 Release 主程序链接:`build/float32/release/integrated_platform.exe`
- 新增真机测试覆盖:本地临时输出不改变 PLC 源仓库、同一轮后续网络可见、完整轮询只触发一次推算、断线/通信故障停止推算并返回编辑态、推算故障详情保留
- 使用已有 `build/manual_plc_discovery_probe/release/manual_plc_discovery_probe.exe` 在 `COM3 / 9600 / 8E1 / 站号 1` 完成一次真实 D0 探测,结果找到 PLC;本轮未重复执行真实 M/D 写入恢复流程
- 本轮未做完整真机运行轨迹人工验收:改动的本地推算路径只读取 PLC 缓存、输出只写临时仓库,不改变 PLC 通信写入;交付前仍建议现场连接真实 PLC 确认轨迹随完整轮询刷新
- 本轮未做完整真机运行轨迹人工验收:改动的本地推算路径只读取 PLC 缓存、输出只写临时仓库,不改变 PLC 通信写入;本轮 UI 命令输入改动同样未连接真实 PLC,交付前仍建议现场连接真实 PLC 确认轨迹随完整轮询刷新

## 待完成

1. 代码功能无待完成项;提交前按逻辑完整改动提交当前配置、真机本地推算和 Float32 功能、测试及文档
1. 代码功能无待完成项;提交前按逻辑完整改动提交当前配置、真机本地推算、Float32 和命令输入功能、测试及文档
2. 现场使用真实 PLC 做一次 Float32 真机验收:读取 D10/D11 原值,写入一个有限 Float32,确认一次双寄存器请求,轮询读回显示正确,恢复原值并再次读回确认
3. 现场同时确认 HMI 写入仍正常、本地轨迹随每轮 PLC 缓存刷新、PLC 源 M/D 不被本地梯形图输出改变

@@ -67,3 +85,4 @@
1. 先运行 `git status --short`,保留当前应用配置和真机本地推算的全部未提交修改
2. 若继续改配置字段,同步更新默认文件内容、严格加载器、配置测试和 `docs/用户使用/应用配置说明.md`
3. 提交前重新运行 Release 测试、主程序构建和 `git diff --check`
4. 命令输入尚未做完整人工 UI 验收,交付前需在编辑器中双击已有触点、条件网格、横线、Gap 和输出槽,确认替换、输入框位置、补全、错误标红和连续光标移动

+ 41
- 0
docs/用户使用/命令语输入说明.md Visa fil

@@ -0,0 +1,41 @@
# 梯形图命令语输入

梯形图编辑器支持在条件网格、横线、断路网格和输出槽上双击输入首期支持的 PLC 命令。命令确认后会立即转换为现有的结构化梯形图数据,工程文件不单独保存命令文本。

## 输入位置

- 条件区第 1~10 列:输入 `LD`、`LDI`、`LDP`、`LDF`、`LD=`、`LD<>`、`LD<`、`LD<=`、`LD>`、`LD>=`、`AND`、`ANI`、`OR`、`ORI`
- 横线或 `Gap` 网格:输入条件指令,替换当前网格
- 输出槽:输入 `OUT`、`SET`、`RST`、`MOV`、`ADD`、`SUB`
- 条件区不能输入输出指令,输出槽不能输入条件指令

## 连续输入

输入一条条件并回车后,输入框会移动到下一列。连续输入的含义如下:

```text
LD M0
AND M1
OR M2
OUT M3
```

生成的结构为:

```text
(M0 AND M1) OR M2 -> M3
```

`OR/ORI` 只增加并联支路,不额外占用主干列。连续输入新的 `LD` 会结束当前网络并创建下一个网络;已有网络编辑时,`OR/ORI` 需要先选中同一网络内连续的条件节点。

## 地址和错误

- 触点、线圈地址使用 `M0~M4000`
- 数据指令地址使用 `D0~D4000`
- D 值比较使用 `LD= D0 0`、`LD<= D10 -3` 这类格式,第二个操作数是有符号常量
- 操作数数量、区域、范围或放置位置错误时,工程不会发生修改
- 错误命令会保留在输入框中并标红,按 `Esc` 取消输入

双击已有触点、比较条件或输出指令时,输入框会回填当前可编辑命令和地址;补全列表按“指令 / 操作数 / 说明”三列显示,输入 `LD`、`MOV` 等指令名即可看到当前支持的 `M` 或 `D` 操作数提示。

当前支持:`LD`、`LDI`、`LDP`、`LDF`、`LD=`、`LD<>`、`LD<`、`LD<=`、`LD>`、`LD>=`、`AND`、`ANI`、`OR`、`ORI`、`OUT`、`SET`、`RST`、`MOV`、`ADD`、`SUB`。

Laddar…
Avbryt
Spara