Pārlūkot izejas kodu

docs: 更新用户运行程序导出说明

main
suyu pirms 3 nedēļām
vecāks
revīzija
e8f5e81690
4 mainītis faili ar 18 papildinājumiem un 13 dzēšanām
  1. +8
    -5
      docs/ai/handoff.md
  2. +4
    -2
      docs/architecture.md
  3. +1
    -1
      docs/用户使用/数据监控与离线初始值说明.md
  4. +5
    -5
      docs/用户使用/用户运行程序导出说明.md

+ 8
- 5
docs/ai/handoff.md Parādīt failu

@@ -9,7 +9,7 @@
- D 区 Float32/REAL 读写已接入:HMI 和自由监控可选 Int16/Float32,底层仍保存原始 16 位字,Float32 使用低字/高字连续双 D 编解码 - D 区 Float32/REAL 读写已接入:HMI 和自由监控可选 Int16/Float32,底层仍保存原始 16 位字,Float32 使用低字/高字连续双 D 编解码
- 真机本地梯形图只读推算已实现:HMI/自由监控继续读写 PLC,本地梯形图只读 PLC 缓存并在临时仓库推算轨迹 - 真机本地梯形图只读推算已实现:HMI/自由监控继续读写 PLC,本地梯形图只读 PLC 缓存并在临时仓库推算轨迹
- 编辑态 M/D 数据监控已接入:监控面板可在编辑态修改虚拟 M/D,并将值作为下一次离线仿真的进程内初始值;运行输出不会污染初始值 - 编辑态 M/D 数据监控已接入:监控面板可在编辑态修改虚拟 M/D,并将值作为下一次离线仿真的进程内初始值;运行输出不会污染初始值
- 数据监控面板在编辑态停靠显示,进入离线/真机运行后隐藏编辑面板并复用运行监控中的同一监控服务;离线写虚拟仓库,真机写 PLC 缓存
- 数据监控在编辑态作为与 HMI 页面、控制逻辑并列的第三个编辑页签显示,运行监控窗口继续复用同一监控服务;离线写虚拟仓库,真机写 PLC 缓存
- 应用外部配置业务已经完成,固定读取可执行文件目录下的 `config/application.ini` - 应用外部配置业务已经完成,固定读取可执行文件目录下的 `config/application.ini`
- 配置支持 6 个体验型数量上限、2 个新建 HMI 页面默认尺寸和 6 个 PLC 串口默认参数 - 配置支持 6 个体验型数量上限、2 个新建 HMI 页面默认尺寸和 6 个 PLC 串口默认参数
- 配置启动时只读取一次,不热更新,不覆盖已有文件,不回写 PLC 配置窗口中的临时修改 - 配置启动时只读取一次,不热更新,不覆盖已有文件,不回写 PLC 配置窗口中的临时修改
@@ -17,7 +17,7 @@


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


- 当前未提交修改同时包含应用外部配置功能、真机本地只读推算功能和 M/D 数据监控初始值功能,涉及启动加载、领域与服务动态上限、运行模式、PLC 轮询回调、UI 轨迹投影、监控停靠面板、测试和文档
- 当前未提交修改同时包含应用外部配置功能、真机本地只读推算功能和 M/D 数据监控初始值功能,涉及启动加载、领域与服务动态上限、运行模式、PLC 轮询回调、UI 轨迹投影、第三个数据监控编辑页签、测试和文档
- 工程树的新建页面、新建控制逻辑及重命名入口已统一禁止提交空名称或纯空白名称,确认按钮会随输入有效性即时启停 - 工程树的新建页面、新建控制逻辑及重命名入口已统一禁止提交空名称或纯空白名称,确认按钮会随输入有效性即时启停
- 新增 `ApplicationSettings`、严格 UTF-8 INI 加载器及独立 `application_settings_tests` - 新增 `ApplicationSettings`、严格 UTF-8 INI 加载器及独立 `application_settings_tests`
- 新增用户文档 `docs/用户使用/应用配置说明.md`,并同步架构、数量边界、测试约定和 `AGENTS.md` 索引 - 新增用户文档 `docs/用户使用/应用配置说明.md`,并同步架构、数量边界、测试约定和 `AGENTS.md` 索引
@@ -37,8 +37,9 @@
- 双击命令输入只打开空输入框,不再自动弹出补全列表;用户开始输入指令名后才显示补全,并移除未实现的 `TON/CTU` 提示项 - 双击命令输入只打开空输入框,不再自动弹出补全列表;用户开始输入指令名后才显示补全,并移除未实现的 `TON/CTU` 提示项
- 梯形图删除支持框选网络批量删除;混合选中时忽略断路占位,不再弹出“已经是断路”的误导提示 - 梯形图删除支持框选网络批量删除;混合选中时忽略断路占位,不再弹出“已经是断路”的误导提示
- 梯形图画布统一支持从网络内部或外部开始鼠标拖拽框选,Ctrl 继续追加选择 - 梯形图画布统一支持从网络内部或外部开始鼠标拖拽框选,Ctrl 继续追加选择
- 新增“文件 -> 导出用户运行程序”:导出前执行运行校验,将当前工程写入临时 JSON,调用 Qt 资源打包流程生成带内嵌工程的专用 exe,并复制 Qt DLL 与平台插件到用户选择的目标目录
- 修复运行版资源参数被 qmake 工程路径覆盖的问题;每次导出使用独立构建目录,打包脚本校验 `runtime-project.json` 资源已生成,主窗口通过异步 `QProcess` 和阶段进度显示导出过程
- 新增“文件 -> 导出用户运行程序”:导出前执行运行校验,将当前工程写入临时 JSON,复制已编译的编程器 exe 并把工程数据封装到 exe 尾部,再复制 Qt DLL 与平台插件到用户选择的目标目录
- 新增 `RuntimeProjectBundleService`,封装格式包含固定魔数、版本、长度和 SHA-256;导出使用本地进度窗口和原子文件写入,不再在导出时调用 PowerShell、qmake 或 MinGW
- `scripts/package_qt_app.ps1` 只负责维护者构建编程器发布包;发布包携带 Qt 运行库后可移动到任意目录导出,用户运行版继续兼容旧的 `:/runtime-project.json` 资源
- 导出入口改为选择目标父目录并输入文件夹名称,最终生成“文件夹/同名 exe + 运行库”的完整目录,覆盖已有目录前需要确认 - 导出入口改为选择目标父目录并输入文件夹名称,最终生成“文件夹/同名 exe + 运行库”的完整目录,覆盖已有目录前需要确认
- 用户运行版启动后隐藏编程器编辑器,直接进入离线仿真;运行监控顶部提供离线/真机切换、PLC 配置、断开和退出程序操作 - 用户运行版启动后隐藏编程器编辑器,直接进入离线仿真;运行监控顶部提供离线/真机切换、PLC 配置、断开和退出程序操作
- 修复用户运行版未完成 PLC 首次读取时切换真机导致运行监控窗口隐藏、应用无可见窗口而退出的问题;现在保持离线运行并在运行监控窗口提示先配置 PLC 并完成首次读取 - 修复用户运行版未完成 PLC 首次读取时切换真机导致运行监控窗口隐藏、应用无可见窗口而退出的问题;现在保持离线运行并在运行监控窗口提示先配置 PLC 并完成首次读取
@@ -67,13 +68,15 @@


## 最近验证 ## 最近验证


- 2026-08-26 将数据监控从停靠面板迁移为第三个编辑页签;Release 主程序重新执行 qmake 和 `mingw32-make -j2` 链接通过,Release All 套件和 `git diff --check` 通过
- 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 修复用户运行版未配置 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-26 使用 `json/motor_forward_reverse.json` 重新生成 `build/package/motor_forward_reverse_fixed`,运行版启动后进程保持运行,确认补丁已编入用户运行版入口
- 2026-08-26 新增用户运行程序 exe 尾部工程封装,Release 主程序、封装回归测试和 Functional 套件通过;导出链路不再依赖 `package_qt_app.ps1`
- 2026-08-25 修复用户运行程序导出资源错配:使用合法 `1.0` 工程夹具验证 qrc 指向 JSON、运行版 exe 启动不再出现 `illegal value`;Release 主程序构建、All 测试及普通/运行版打包均通过 - 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 修复双击空网格时补全列表提前弹出;现在仅在用户开始输入后显示补全,并移除未实现的 TON/CTU 提示;Release Functional 测试和主程序构建通过
- 2026-08-25 修复已有节点双击无法进入命令输入;新增条件/输出节点替换回归测试,Release Functional 测试、主程序构建和 `git diff --check` 通过 - 2026-08-25 修复已有节点双击无法进入命令输入;新增条件/输出节点替换回归测试,Release Functional 测试、主程序构建和 `git diff --check` 通过


+ 4
- 2
docs/architecture.md Parādīt failu

@@ -45,7 +45,7 @@ main.cpp -> UI + Services + Infrastructure
运行界面统一投影到独立顶层 `RuntimeMonitorWindow` 中的唯一 `RuntimeMonitorWidget`。该窗口是编程器的工程师运行监控大屏,不是旧的纯 HMI 操作员窗口: 运行界面统一投影到独立顶层 `RuntimeMonitorWindow` 中的唯一 `RuntimeMonitorWidget`。该窗口是编程器的工程师运行监控大屏,不是旧的纯 HMI 操作员窗口:


- 进入离线或真机运行后,弹出并最大化运行监控窗口;主编程器窗口保留在后面且不改变布局,运行期间由同一份 `ModePolicy` 禁用编辑入口 - 进入离线或真机运行后,弹出并最大化运行监控窗口;主编程器窗口保留在后面且不改变布局,运行期间由同一份 `ModePolicy` 禁用编辑入口
- 主窗口不保留运行监控页签;编辑态主窗口提供独立的“数据监控”停靠面板,进入运行态后隐藏该面板并显示弹窗中的运行监控投影
- 主窗口不保留运行监控页签;编辑态主窗口提供与“HMI 页面”“控制逻辑”并列的“数据监控”编辑页签,运行态显示弹窗中的运行监控投影
- 离线时显示可交互 HMI、软件梯形图轨迹和自由监控;真机时同时显示可交互 HMI、自由监控和根据 PLC 缓存计算的“本地推算轨迹” - 离线时显示可交互 HMI、软件梯形图轨迹和自由监控;真机时同时显示可交互 HMI、自由监控和根据 PLC 缓存计算的“本地推算轨迹”
- HMI 页面跳转、按钮和数值输入都通过同一份 `HmiNavigationService` 和活动寄存器仓库完成;离线写虚拟 M/D,真机写 PLC,仿真停止或通信不可用时禁止写入 - HMI 页面跳转、按钮和数值输入都通过同一份 `HmiNavigationService` 和活动寄存器仓库完成;离线写虚拟 M/D,真机写 PLC,仿真停止或通信不可用时禁止写入
- 运行监控只能通过界面内的返回编辑按钮请求 `MainWindow -> RuntimeModeService` 返回编辑态;运行期间系统窗口关闭路径被忽略,离线时先停止软件扫描,真机时保留 PLC 连接但撤销运行会话;应用退出时允许顶层窗口真正关闭 - 运行监控只能通过界面内的返回编辑按钮请求 `MainWindow -> RuntimeModeService` 返回编辑态;运行期间系统窗口关闭路径被忽略,离线时先停止软件扫描,真机时保留 PLC 连接但撤销运行会话;应用退出时允许顶层窗口真正关闭
@@ -106,7 +106,9 @@ ApplicationSettings(启动后只读)


## 用户运行程序导出 ## 用户运行程序导出


编程器通过“导出用户运行程序”把当前工程先原子写入临时 JSON,再交给发布脚本生成 Qt 资源并编译到专用 exe。导出的 exe 检测到内嵌 `:/runtime-project.json` 后直接加载工程、隐藏编辑器并进入离线运行;运行监控顶部提供离线/真机切换、PLC 配置、断开和退出程序入口。默认 `integrated_platform.exe` 没有该资源时仍按编程器入口启动。
编程器通过“导出用户运行程序”把当前工程先原子写入临时 JSON,再将当前已编译的编程器 exe 复制为模板,把 JSON 追加到 exe 尾部的固定封装格式中,并复制 Qt 运行库和平台插件。封装格式包含魔数、版本、数据长度和 SHA-256,写入使用临时文件后原子改名。导出的 exe 启动时优先读取自身尾部工程数据;历史带 `:/runtime-project.json` 资源的运行版仍保持兼容。读取工程成功后直接隐藏编辑器并进入离线运行;运行监控顶部提供离线/真机切换、PLC 配置、断开和退出程序入口。普通 `integrated_platform.exe` 没有工程封装时仍按编程器入口启动。

`scripts/package_qt_app.ps1` 只用于维护者构建编程器发布包和复制 Qt 运行库,不参与工程导出。编程器发布包包含自身 exe 及 Qt 运行库后可以移动到任意目录,导出时不再依赖 PowerShell、qmake、MinGW 或项目源码目录。


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




+ 1
- 1
docs/用户使用/数据监控与离线初始值说明.md Parādīt failu

@@ -2,7 +2,7 @@


## 编辑态 ## 编辑态


打开主窗口的“数据监控”停靠面板,添加需要观察的 `M` 或 `D` 地址。编辑态写入的 M/D 不会写入 PLC;它们会同时保存为当前进程内的离线仿真初始值。
打开主窗口与“HMI 页面”“控制逻辑”并列的“数据监控”编辑页,添加需要观察的 `M` 或 `D` 地址。编辑态写入的 M/D 不会写入 PLC;它们会同时保存为当前进程内的离线仿真初始值。


## 离线仿真 ## 离线仿真




+ 5
- 5
docs/用户使用/用户运行程序导出说明.md Parādīt failu

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


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


## 导出流程 ## 导出流程


@@ -23,9 +23,9 @@
└── styles/ └── styles/
``` ```


导出期间编程器仍然可以响应界面,但同一时间只能执行一个导出任务;关闭编程器会等导出结束
导出使用随编程器发布的已编译运行程序模板,不会重新执行 qmake 或 MinGW 编译;同一时间只能执行一个导出任务


工程 JSON 会在构建时嵌入 exe,用户不需要接触 JSON,也不需要安装编程器。
工程 JSON 会在导出时封装到 exe 尾部,并使用长度、版本和 SHA-256 校验保护数据;用户不需要接触 JSON,也不需要安装编程器。


## 用户操作 ## 用户操作


@@ -33,6 +33,6 @@


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


## 构建前提
## 编程器发布


编程器导出功能调用项目中的 `scripts/package_qt_app.ps1`,因此开发机需要安装约定的 Qt 5.15.2 MinGW 环境和 PowerShell 7。若运行的是不带项目脚本的已安装编程器,需要把项目脚本和 Qt 构建环境一并部署,或使用同目录的发布工具完成导出
维护者在构建编程器发布包时仍可使用 `scripts/package_qt_app.ps1` 完成 Qt Release 构建和运行库复制。发布给工程师的编程器目录只需要包含编程器 exe、Qt 运行库、平台插件和配置目录;工程师把整个目录移动到其他位置后,仍可直接导出用户运行程序,不需要安装 PowerShell 7、Qt SDK 或 MinGW

Notiek ielāde…
Atcelt
Saglabāt