Преглед изворни кода

docs: 更新编辑历史与批量操作说明

main
suyu пре 1 месец
родитељ
комит
4d80ea4147
3 измењених фајлова са 22 додато и 3 уклоњено
  1. +10
    -1
      docs/ai/handoff.md
  2. +6
    -2
      docs/architecture.md
  3. +6
    -0
      docs/工程格式说明.md

+ 10
- 1
docs/ai/handoff.md Прегледај датотеку

@@ -11,7 +11,8 @@
- 画布只选择可见节点,不暴露内部表达式容器;橡皮框或多选连续节点后可直接建立并联支路
- 执行器递归求值并生成节点、表达式、网络轨迹,离线运行时画布显示导通路径和故障位置
- HMI 和梯形图直接配置 M/D 地址,不依赖预先创建的数据点
- HMI 控件描述注册表统一维护现有 7 种控件的稳定名称、默认值、绑定规则和运行值类型
- HMI 控件描述注册表统一维护现有 8 种控件的稳定名称、默认值、绑定规则和运行值类型
- HMI ProgressBar 使用 D 区 Word 值和可配置范围显示百分比,支持越界钳制、JSON 往返和运行态只读展示
- `ActiveRegisterRepository` 在离线虚拟仓库与 PLC 缓存仓库之间切换
- `PlcCommunicationService` 使用 Qt SerialBus 异步连接、轮询和单点写入,UI 不阻塞
- 真机连接收集 HMI、报警定义和梯形图实际引用地址,按 M/D 分区并合并相邻地址读取
@@ -188,6 +189,14 @@ NumericInput、Label、PageJump 和 AlarmList 的工程稳定类型名、界面
M/D 绑定与运行值匹配及未知类型拒绝。10 个自动化测试工程全部重新构建并通过,Qt Release
主工程完成独立构建,`git diff --check` 无空白错误。

本轮新增 HMI ProgressBar 控件。进度条使用 D 区 Word 绑定,保存最小值、最大值和是否显示百分比,
运行态将读回值钳制到配置范围后绘制水平填充,不接收鼠标写入。属性面板支持范围编辑,JSON
严格要求 `minimumValue`、`maximumValue` 和 `showValue`,领域测试覆盖无效范围、越界映射和
M/D 绑定边界;主窗口测试覆盖创建、属性编辑、运行绘制和只读交互。

此前的 7 种控件已升级为 8 种控件,ProgressBar 的稳定类型名为 `progressBar`,默认范围为
`0~100`,默认尺寸为 `240x36`。

2026-08-17 使用 `COM3 / 9600 / 8E1 / 站号 1` 完成本轮注册表重构后的真机只读复核,
成功读取 `M0~M2 = OFF`、`D0 = 0`,测试结束后正常关闭串口,全程没有执行 PLC 写操作。



+ 6
- 2
docs/architecture.md Прегледај датотеку

@@ -64,10 +64,10 @@ main.cpp -> UI + Services + Infrastructure

`Project::validate()` 允许未绑定控件、待配置节点和未完成网络作为编辑草稿保存。`Project::validateForRunning()` 额外拒绝未绑定 HMI、待配置节点、空条件和缺少输出的网络,并检查已启用逻辑中的 T 触点必须有唯一的 TON 驱动。

HMI 控件公共描述由无 Qt 依赖的 `hmi_control_registry` 模块统一提供。当前 7 种控件的工程稳定类型名、
HMI 控件公共描述由无 Qt 依赖的 `hmi_control_registry` 模块统一提供。当前 8 种控件的工程稳定类型名、
界面名称、默认 ID 前缀、默认文字、默认尺寸、M/D 绑定规则和运行值类型只在注册表中定义一次。
领域校验、编辑服务、运行服务、JSON 存储和属性面板共同查询该描述;控件绘制、按钮写入、
PageJump 导航和 AlarmList 展示等专用行为仍留在各自模块,不进入公共描述表。
PageJump 导航、AlarmList 展示和 ProgressBar 范围计算等专用行为仍留在各自模块,不进入公共描述表。

HMI 按钮操作作为工程 `1.0` 的强类型字段保存,支持 `置 ON`、`置 OFF`、`取反` 和
`瞬时 ON`。新建按钮默认使用瞬时 ON;按钮按下和释放事件由 UI 转交运行服务解释,UI
@@ -77,6 +77,10 @@ HMI 按钮操作作为工程 `1.0` 的强类型字段保存,支持 `置 ON`、

`AlarmList` 是不绑定单个寄存器的运行状态投影。项目级 `AlarmDefinition` 只支持 M 位为 ON、D 值大于等于阈值和 D 值小于等于阈值三种条件,不设置提示、警告、故障等级。`AlarmEditorService` 负责定义增删改,`AlarmService` 统一读取活动寄存器仓库并维护当前报警的发生时间和确认状态,所有页面上的 AlarmList 共享这份状态。报警条件恢复后立即删除对应运行记录;运行态没有报警时 AlarmList 隐藏,出现报警时显示并置顶。返回编辑态时清空运行记录,工程 JSON 只保存报警定义。

`ProgressBar` 绑定 D 区字地址,以 `minimumValue` 和 `maximumValue` 将读回值钳制并映射到
`0~100%`。进度条配置还保存 `showValue`,最小值必须严格小于最大值;控件只读,不产生 PLC
写请求。运行值读取沿用 `HmiRuntimeService` 的 Word 读取契约,绘制层只接收运行值和领域配置。

## 结构化梯形图

网络条件采用递归表达式:


+ 6
- 0
docs/工程格式说明.md Прегледај датотеку

@@ -48,6 +48,7 @@
| `label` | 必须为 `null` | 无 |
| `pageJump` | 必须为 `null` | `targetPageId` |
| `alarmList` | 必须为 `null` | 无 |
| `progressBar` | D 地址或 `null` 草稿 | `minimumValue`、`maximumValue`、`showValue` |

按钮操作字符串为 `setOn`、`setOff`、`toggle` 或 `momentaryOn`。PageJump 使用目标页面稳定 ID,不使用名称或数组位置:

@@ -67,6 +68,11 @@

AlarmList 只负责显示项目级当前报警,不保存独立触发逻辑,也不直接绑定单个寄存器。多个页面放置 AlarmList 时共享同一组当前报警和确认状态。运行态没有报警时控件隐藏;报警恢复后对应记录立即移除,最后一条报警恢复后控件再次隐藏。

ProgressBar 使用绑定 D 地址的有符号 16 位字值,并将其限制在 `minimumValue` 到
`maximumValue` 的范围后映射为百分比。`minimumValue` 和 `maximumValue` 必须是有符号 16 位整数,
且最小值严格小于最大值;`showValue` 为布尔值,决定是否在进度条上显示百分比。ProgressBar
是只读控件,不产生 PLC 写请求。

## 报警定义

```json


Loading…
Откажи
Сачувај