diff --git a/docs/ai/handoff.md b/docs/ai/handoff.md index 1744f79..66305c7 100644 --- a/docs/ai/handoff.md +++ b/docs/ai/handoff.md @@ -16,6 +16,9 @@ - 真机连接收集 HMI 和梯形图实际引用地址,按 M/D 分区并合并相邻地址读取 - 真机模式要求首次读取完成,不复制离线值,不运行 PC 软件逻辑执行器 - 通信错误停止轮询并保留最后一次有效缓存,状态栏和日志显示错误 +- 通信故障立即撤销当前连接的首读资格;真机运行中发生故障会自动返回编辑态,重新进入真机前必须重新连接并完成新一轮首读 +- PLC 故障态可直接“重新配置”,连接前自动清理旧串口会话,不再要求用户先手动点击断开 +- PLC 日志区分串口未打开、串口已打开但 PLC 无响应、USB 转串口从电脑移除、已建立通信后的超时和 Modbus 协议异常 - 主窗口静态控件已迁入 `main_window.ui`,PLC 参数由独立配置对话框收集后再发起连接 - 已增加运行监控工作台:离线仿真同时显示 HMI、梯形图轨迹和自由监控,真机运行只显示 HMI 和自由监控 - 自由监控支持 `M0~M4000`、`D0~D4000` 地址输入、连续批量添加、去重、删除、清空和最多 64 项限制 @@ -85,6 +88,21 @@ HMI 控件在离线运行工作台中显示为空白。现在每次同步运行 Qt Release 应用已完成干净构建,并执行了启动与正常退出冒烟验证。`git diff --check` 无空白错误。 +本轮修正 PLC 故障恢复状态链。通信服务发生错误时会清除当前连接的首次读取资格,运行模式 +服务同时校验 PLC 必须处于 `Connected` 且当前连接已完成首读;真机运行期间发生故障会自动 +返回编辑态,避免使用旧连接的首读结果重新进入真机运行。故障状态下主窗口开放“PLC 重新 +配置”,用户确认后自动断开并清理旧会话,再发起新连接。旧连接未完成的异步回复使用连接代次 +隔离,不能污染重连后的新会话。 + +PLC 错误分类已拆到独立基础设施模块:连接阶段串口未打开、串口已打开但 PLC 首次无响应、 +电脑侧 USB 转串口移除、已建立有效通信后的超时、Modbus 协议异常、读写错误和配置错误使用 +不同中文日志。PLC 侧 A/B 断开但 USB 转串口仍在时,日志报告本地串口仍打开且 PLC 通信超时; +电脑侧 USB 转串口移除时,日志报告转换器已从电脑移除。 + +本轮新增自动化测试覆盖故障自动退回编辑态、首读资格撤销、故障后禁止重新进入真机、故障态 +直接重连清理旧会话、主窗口重新配置入口和五类核心通信错误。`plc_runtime_tests`、 +`runtime_mode_service_tests`、`main_window_tests` 均通过,Qt Release 工程完成干净构建。 + 本轮参照 TouchWin 按钮业务新增四种位操作:置 ON、置 OFF、取反、瞬时 ON。按钮操作 使用领域枚举并写入工程 `1.0` JSON;运行服务按 Pressed/Released 事件生成写值,瞬时 ON 按下写 1、释放写 0,其他模式释放不重复写入。属性面板只在选中按钮时显示操作模式,新建 @@ -100,7 +118,7 @@ HMI 图元现已分离编辑选择与运行输入状态。运行按钮悬停时 1. 在 PLC STOP 状态确认 COM2 参数和 RS-485 A/B 接线 2. 用安全测试地址读取 `M0`、`D0` 3. 写入 `M0`、`D0` 并由 PLC 监控和下一次轮询确认 -4. 验证断线、超时和重新连接流程 +4. 真机复核电脑侧 USB 转串口拔除、PLC 侧 A/B 断开、超时和重新连接日志及恢复流程 5. PLC 切换 RUN 后执行完整 HMI 与设备联动测试 6. 整理测试记录、构建说明和演示工程 diff --git a/docs/architecture.md b/docs/architecture.md index 818b47f..84c2b22 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -140,6 +140,15 @@ PLC 连接后可以动态增删自由监控地址。存在读取请求时,新 HMI 写入只表示异步请求已受理,不乐观修改 PLC 缓存,实际值由后续读回确认。超时、协议错误或断线会停止轮询、保留最后一次有效值并进入故障状态,错误通过运行模式服务交给 UI 展示。 +通信故障会立即撤销当前连接的首次读取资格。若故障发生在真机运行态,运行模式服务自动返回 +编辑态,PLC 最后一次有效缓存仍保留用于日志和故障诊断,但不能作为再次进入真机运行态的依据。 +重新进入真机运行必须重新连接 PLC,并在当前连接中重新完成首次读取。 + +通信服务结合 Qt Modbus 错误、串口是否曾成功打开、配置端口是否仍存在以及当前连接是否收到过 +有效响应,区分以下故障:串口未打开导致的连接失败、串口已打开但 PLC 首次无响应、USB 转 +串口从电脑移除、已建立通信后的超时、Modbus 协议异常、读写失败和串口参数错误。故障态允许 +直接重新配置;用户确认连接后,运行模式服务先清理旧串口会话,再使用新参数连接。 + ## 运行模式边界 | 模式 | 允许编辑 | 寄存器来源 | 软件逻辑执行器 | 进入约束 |