|
|
|
@@ -45,6 +45,7 @@ main.cpp -> UI + Services + Infrastructure |
|
|
|
运行界面统一投影到独立顶层 `RuntimeMonitorWindow` 中的唯一 `RuntimeMonitorWidget`。该窗口是编程器的工程师运行监控大屏,不是旧的纯 HMI 操作员窗口: |
|
|
|
|
|
|
|
- 进入离线或真机运行后,弹出并最大化运行监控窗口;主编程器窗口保留在后面且不改变布局,运行期间由同一份 `ModePolicy` 禁用编辑入口 |
|
|
|
- 运行监控窗口顶部始终提供“离线仿真/真机运行”模式选择;从一种运行模式切换到另一种时由 UI 自动经过编辑态,再执行目标模式的完整校验 |
|
|
|
- 主窗口不保留运行监控页签;编辑态主窗口提供与“HMI 页面”“控制逻辑”并列的“数据监控”编辑页签,运行态显示弹窗中的运行监控投影 |
|
|
|
- 离线时显示可交互 HMI、软件梯形图轨迹和自由监控;真机时同时显示可交互 HMI、自由监控和根据 PLC 缓存计算的“本地推算轨迹” |
|
|
|
- HMI 页面跳转、按钮和数值输入都通过同一份 `HmiNavigationService` 和活动寄存器仓库完成;离线写虚拟 M/D,真机写 PLC,仿真停止或通信不可用时禁止写入 |
|
|
|
@@ -158,7 +159,7 @@ ApplicationSettings(启动后只读) |
|
|
|
编辑:UI -> Editor Services -> ProjectService -> Project |
|
|
|
└── ProjectStorage -> JSON |
|
|
|
|
|
|
|
编辑态数据监控:UI -> RegisterMonitorService -> VirtualRegisterRepository |
|
|
|
编辑态数据监控:UI -> RegisterMonitorService -> 虚拟 M/D 或 PLC 缓存 |
|
|
|
└── 离线初始值 VirtualRegisterRepository(进程内) |
|
|
|
|
|
|
|
离线:运行监控弹窗 -> ActiveRegisterRepository -> VirtualRegisterRepository |
|
|
|
@@ -176,7 +177,7 @@ PLC <-> PlcCommunicationService <--------------------┘ |
|
|
|
|
|
|
|
| 模式 | 允许工程编辑 | 寄存器来源 | 软件逻辑执行器 | 进入条件 | |
|
|
|
| --- | --- | --- | --- | --- | |
|
|
|
| 编辑态 | 是 | 数据监控使用虚拟 M/D 初始值;其他编辑操作不启用运行数据源 | 停止 | 运行态先退出 | |
|
|
|
| 编辑态 | 是 | 未连接 PLC 时使用虚拟 M/D;连接并完成首读后数据监控使用 PLC 缓存 | 停止 | 运行态先退出 | |
|
|
|
| 离线运行 | 否 | 虚拟 M/D | 运行 | 工程通过运行校验 | |
|
|
|
| 真机运行 | 否 | HMI 使用 PLC 读回缓存;轨迹使用缓存副本 | 本地只读推算 | PLC 已连接并完成本次首读,工程通过运行校验 | |
|
|
|
|
|
|
|
@@ -184,7 +185,7 @@ PLC <-> PlcCommunicationService <--------------------┘ |
|
|
|
|
|
|
|
自由监控是会话级诊断工具,不属于 `Project`,不写入 JSON。M 监控点固定为位值,D 监控点可选 `Int16`、`Int32`、`Float32` 或 `Float64`。批量添加的步长等于类型占用字数:Int16 为 1,Int32/Float32 为 2,Float64 为 4;类型列显示完整占用范围。完全重复点拒绝,部分重叠点允许添加但提示。读写统一使用连续字块接口;真机 Int16 使用单字写入,Int32、Float32 和 Float64 使用一次多保持寄存器写入,并继续受连接与首读门槛约束。 |
|
|
|
|
|
|
|
编辑态数据监控写入虚拟 M/D 时,同时更新当前进程内的离线初始值仓库。启动离线仿真时,运行仓库先清空,再复制这份初始值;仿真扫描产生的线圈、MOVE、ADD 和 SUB 结果只写入本轮运行仓库。仿真停止或返回编辑态时丢弃本轮输出并恢复初始值。离线初始值和监控地址均不写入工程 JSON。运行态监控继续复用同一 `RegisterMonitorService`,离线写入虚拟仓库,真机写入 PLC 缓存并等待轮询确认。 |
|
|
|
编辑态数据监控未连接 PLC 时写入虚拟 M/D,并同时更新当前进程内的离线初始值;连接 PLC 并完成首读后,读写直接使用 PLC 缓存,写入等待后续轮询确认且不更新离线初始值。PLC 已连接但尚未完成首读时只显示等待状态并禁止写入。启动离线仿真时,运行仓库先清空,再复制离线初始值;仿真扫描产生的线圈、MOVE、ADD 和 SUB 结果只写入本轮运行仓库。仿真停止或返回编辑态时丢弃本轮输出并恢复初始值。离线初始值和监控地址均不写入工程 JSON。运行态监控继续复用同一 `RegisterMonitorService`,离线写入虚拟仓库,真机写入 PLC 缓存并等待轮询确认。 |
|
|
|
|
|
|
|
## Modbus RTU 通信 |
|
|
|
|
|
|
|
|