Przeglądaj źródła

docs: 补充用户运行程序导出说明

main
suyu 3 tygodni temu
rodzic
commit
669bb7ee4b
4 zmienionych plików z 56 dodań i 3 usunięć
  1. +1
    -0
      AGENTS.md
  2. +13
    -3
      docs/ai/handoff.md
  3. +4
    -0
      docs/architecture.md
  4. +38
    -0
      docs/用户使用/用户运行程序导出说明.md

+ 1
- 0
AGENTS.md Wyświetl plik

@@ -26,6 +26,7 @@
- 原始需求:`docs/0_综合平台编程器_修改.md` - 原始需求:`docs/0_综合平台编程器_修改.md`
- 数量边界最终规则:`docs/用户使用/数量边界确认方案.md` - 数量边界最终规则:`docs/用户使用/数量边界确认方案.md`
- 应用配置文件:`docs/用户使用/应用配置说明.md` - 应用配置文件:`docs/用户使用/应用配置说明.md`
- 用户运行程序导出:`docs/用户使用/用户运行程序导出说明.md`
- 数据监控与离线初始值:`docs/用户使用/数据监控与离线初始值说明.md` - 数据监控与离线初始值:`docs/用户使用/数据监控与离线初始值说明.md`
- 工程 JSON 格式:`docs/工程格式说明.md` - 工程 JSON 格式:`docs/工程格式说明.md`
- 开发阶段顺序:`docs/开发顺序.md`(阶段参考,当前状态以 handoff 为准) - 开发阶段顺序:`docs/开发顺序.md`(阶段参考,当前状态以 handoff 为准)


+ 13
- 3
docs/ai/handoff.md Wyświetl plik

@@ -1,6 +1,6 @@
# 当前开发交接 # 当前开发交接


> 更新日期:2026-08-25。本文件只保留当前工作区状态、最近验证和下一步,不记录历史开发流水账;稳定架构和业务细节分别以 `docs/architecture.md` 及对应专题文档为准。
> 更新日期:2026-08-26。本文件只保留当前工作区状态、最近验证和下一步,不记录历史开发流水账;稳定架构和业务细节分别以 `docs/architecture.md` 及对应专题文档为准。


## 当前状态 ## 当前状态


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


## 工作区状态 ## 工作区状态


@@ -34,8 +34,14 @@
- 双击已有节点时命令输入框会回填当前指令和 M/D 地址;补全弹窗改为左对齐的“指令 / 操作数 / 说明”三列表格,并扩大宽高,输入框在视口边缘自动避让 - 双击已有节点时命令输入框会回填当前指令和 M/D 地址;补全弹窗改为左对齐的“指令 / 操作数 / 说明”三列表格,并扩大宽高,输入框在视口边缘自动避让
- 命令补全增加 `LD=`、`LD<>`、`LD<`、`LD<=`、`LD>`、`LD>=` D 值比较指令,格式为比较指令 + D 地址 + 有符号常量 - 命令补全增加 `LD=`、`LD<>`、`LD<`、`LD<=`、`LD>`、`LD>=` D 值比较指令,格式为比较指令 + D 地址 + 有符号常量
- `MOV/ADD/SUB` 命令输入保留指令对话框允许的常量操作数;补全过滤只按第一段指令名匹配,输入空格后的 M/D 操作数时仍保留指令提示 - `MOV/ADD/SUB` 命令输入保留指令对话框允许的常量操作数;补全过滤只按第一段指令名匹配,输入空格后的 M/D 操作数时仍保留指令提示
- 双击命令输入只打开空输入框,不再自动弹出补全列表;用户开始输入指令名后才显示补全,并移除未实现的 `TON/CTU` 提示项
- 梯形图删除支持框选网络批量删除;混合选中时忽略断路占位,不再弹出“已经是断路”的误导提示 - 梯形图删除支持框选网络批量删除;混合选中时忽略断路占位,不再弹出“已经是断路”的误导提示
- 梯形图画布统一支持从网络内部或外部开始鼠标拖拽框选,Ctrl 继续追加选择 - 梯形图画布统一支持从网络内部或外部开始鼠标拖拽框选,Ctrl 继续追加选择
- 新增“文件 -> 导出用户运行程序”:导出前执行运行校验,将当前工程写入临时 JSON,调用 Qt 资源打包流程生成带内嵌工程的专用 exe,并复制 Qt DLL 与平台插件到用户选择的目标目录
- 修复运行版资源参数被 qmake 工程路径覆盖的问题;每次导出使用独立构建目录,打包脚本校验 `runtime-project.json` 资源已生成,主窗口通过异步 `QProcess` 和阶段进度显示导出过程
- 导出入口改为选择目标父目录并输入文件夹名称,最终生成“文件夹/同名 exe + 运行库”的完整目录,覆盖已有目录前需要确认
- 用户运行版启动后隐藏编程器编辑器,直接进入离线仿真;运行监控顶部提供离线/真机切换、PLC 配置、断开和退出程序操作
- 修复用户运行版未完成 PLC 首次读取时切换真机导致运行监控窗口隐藏、应用无可见窗口而退出的问题;现在保持离线运行并在运行监控窗口提示先配置 PLC 并完成首次读取


## 本轮变更结论 ## 本轮变更结论


@@ -64,8 +70,12 @@
- 2026-08-25 执行 `run_qt_tests.ps1 -Configuration Release -Suite All`,12 个 Release 功能测试目标和性能测试全部通过 - 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 执行 `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 重新执行 qmake 和 `mingw32-make -j2`,Release 主程序 `build/release/release/integrated_platform.exe` 链接通过
- 2026-08-26 修复用户运行版未配置 PLC 切换真机的窗口生命周期问题,Release 主程序 qmake 和 `mingw32-make -j2` 编译通过,`git diff --check` 通过
- 2026-08-26 使用 `json/motor_forward_reverse.json` 重新生成 `build/package/motor_forward_reverse_fixed`,运行版启动后进程保持运行,确认补丁已编入用户运行版入口
- 2026-08-25 修复用户运行程序导出资源错配:使用合法 `1.0` 工程夹具验证 qrc 指向 JSON、运行版 exe 启动不再出现 `illegal value`;Release 主程序构建、All 测试及普通/运行版打包均通过
- 2026-08-25 新增数据监控停靠面板和离线初始值生命周期;Release Functional 测试、主程序 qmake/`mingw32-make -j2` 和新增快照回归通过 - 2026-08-25 新增数据监控停靠面板和离线初始值生命周期;Release Functional 测试、主程序 qmake/`mingw32-make -j2` 和新增快照回归通过
- 2026-08-25 修复命令输入失焦、零长度连线黑点、删除后 Gap 复用和连续横线插入;Release Functional 测试及主程序构建通过 - 2026-08-25 修复命令输入失焦、零长度连线黑点、删除后 Gap 复用和连续横线插入;Release Functional 测试及主程序构建通过
- 2026-08-25 修复双击空网格时补全列表提前弹出;现在仅在用户开始输入后显示补全,并移除未实现的 TON/CTU 提示;Release Functional 测试和主程序构建通过
- 2026-08-25 修复已有节点双击无法进入命令输入;新增条件/输出节点替换回归测试,Release Functional 测试、主程序构建和 `git diff --check` 通过 - 2026-08-25 修复已有节点双击无法进入命令输入;新增条件/输出节点替换回归测试,Release Functional 测试、主程序构建和 `git diff --check` 通过
- 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 套件全部通过 - 2026-08-25 新增 Float32 编解码、HMI 双字读写、D3999/D4000 边界、HMI 重叠、自由监控步长/重叠/读写和 Float32 轮询元数据测试;All 套件全部通过
@@ -81,7 +91,7 @@


## 待完成 ## 待完成


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




+ 4
- 0
docs/architecture.md Wyświetl plik

@@ -104,6 +104,10 @@ ApplicationSettings(启动后只读)


字段、范围和用户操作方式见 `docs/用户使用/应用配置说明.md`。 字段、范围和用户操作方式见 `docs/用户使用/应用配置说明.md`。


## 用户运行程序导出

编程器通过“导出用户运行程序”把当前工程先原子写入临时 JSON,再交给发布脚本生成 Qt 资源并编译到专用 exe。导出的 exe 检测到内嵌 `:/runtime-project.json` 后直接加载工程、隐藏编辑器并进入离线运行;运行监控顶部提供离线/真机切换、PLC 配置、断开和退出程序入口。默认 `integrated_platform.exe` 没有该资源时仍按编程器入口启动。

## 结构化梯形图 ## 结构化梯形图


网络条件保存为规范化表达式树: 网络条件保存为规范化表达式树:


+ 38
- 0
docs/用户使用/用户运行程序导出说明.md Wyświetl plik

@@ -0,0 +1,38 @@
# 用户运行程序导出说明

编程器中的“文件 -> 导出用户运行程序”会把当前工程构建成一个专用的 Windows 运行程序。导出的程序不包含工程编辑器,用户双击 exe 后直接进入该工程的运行监控界面。

## 导出流程

1. 先在编程器中完成 HMI 页面、控制逻辑、报警和 M/D 地址绑定
2. 确认工程可以进入运行态,不能保留未配置的运行节点
3. 选择“文件 -> 导出用户运行程序”
4. 先选择目标父目录,再输入导出文件夹名称,例如 `电机正反转`
5. 等待导出进度完成,程序会在父目录下生成同名文件夹,里面包含 exe、Qt 运行库和平台插件

最终目录示例:

```text
目标父目录/
└── 电机正反转/
├── 电机正反转.exe
├── Qt5Core.dll
├── Qt5Gui.dll
├── ...
├── platforms/
└── styles/
```

导出期间编程器仍然可以响应界面,但同一时间只能执行一个导出任务;关闭编程器会等导出结束。

工程 JSON 会在构建时嵌入 exe,用户不需要接触 JSON,也不需要安装编程器。

## 用户操作

打开导出的 exe 后直接进入离线仿真。运行界面顶部可以切换“离线仿真”和“真机运行”。真机运行前点击“PLC 配置”,设置串口、站号、波特率、数据位、校验位和停止位,连接成功并完成首次读取后再切换到真机运行。

“退出程序”只退出用户运行程序,不会进入工程编辑器。

## 构建前提

编程器导出功能调用项目中的 `scripts/package_qt_app.ps1`,因此开发机需要安装约定的 Qt 5.15.2 MinGW 环境和 PowerShell 7。若运行的是不带项目脚本的已安装编程器,需要把项目脚本和 Qt 构建环境一并部署,或使用同目录的发布工具完成导出。

Ładowanie…
Anuluj
Zapisz