Files
weinviews-unitouch/设计文档/IO页窗口重构施工单.md
T

300 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# IO 页窗口重构施工单(V2 · 可执行版)
> 角色:**指挥 = 你 / 实施 = wangli / 文档·宏·验收表 = 我**
> 基准工程:`unitouch1025.cmtp`
> 依据:工程窗口表(0~282)、宏列表(50 条)、`158` 的窗口属性、`149` 的元件树
> 本次范围:**IO 相关 24 个窗口**(148/149/150 + 151~171)。操作弹窗与清洗弹窗列 V2,见 §8。
---
## 1. 现状盘点(按工程窗口表)
| 类别 | 窗口号 | 数量 | 当前结构 |
| --- | --- | --- | --- |
| 系统窗 | 3~9 | 5 | EB 内置,不动 |
| 登录/弹窗 | 10~17、20 | 9 | 基本窗口,不动 |
| 区域聚焦弹窗 | 30~32 | 3 | 弹窗,不动 |
| 键盘/ASCII/用户窗 | 50~90 | — | EB 内置,不动 |
| 公共窗口 | 100 `common-window-joyea` | 1 | 顶栏 + 左侧导航 |
| 主画面 | 101~107、109、112、115~121、123、126 | 15 | **X1Y1 式样板,不改** |
| IO 段容器 | 148 `清洗-IO`、149 `上料-IO`、150 `制丸-IO` | 3 | **层叠容器** |
| IO 分组页 | 151~157(制丸)、158~165·170·171(上料)、166~169(清洗) | 21 | **层套层**:底层 100 / 中层 X?Y5 / 顶层 14x |
| 制丸操作弹窗 | 177~185 | 9 | V2 |
| 上料/清洗页 | 190~202、204~210 | 12 | V2 |
| 状态/清洗弹窗 | 215~251、260~265、280 | 39 | V2 |
**判定方法(wangli 先批量查一遍,5 分钟)**
> 窗口列表右键某页 → 属性 → 看「重叠窗口」三栏。有值 = 层套层;全「无」= 已经是独立页。
> 把 24 个窗口的结果记在 §10 的表里,作为施工依据。
---
## 2. 目标规范(X1Y1 式)
```
公共窗口 100(系统参数 → 一般 → 公共窗口 = 100)
└─ 功能页 = 一个基本窗口 1920×1080
├─ 标题(左上,窗口名)
├─ 内容区(表格 / 灯 / 数值)
├─ 页签栏(底部,段内分组)
├─ 返回/总览(右下)
└─ 打开窗口时执行 = io-xxx(写组号 LW-300)
```
**不允许**:窗口属性里再挂底层/中层/顶层。
**允许保留的一层**:弹窗用「直接窗口」弹出(这是交互必需,不算层套层),但要设「重叠 = 独立窗口」,且弹窗自己不透明。
---
## 3. 需要准备的界面(这是“还缺什么”的正面回答)
| # | 界面 / 元件 | 数量 | 谁做 | 说明 |
| --- | --- | --- | --- | --- |
| 1 | **页签栏**(DI1-DI2…AI3,10 个按钮) | 1 套 | wangli | 做成一个**群组**,复制到 21 页。先确认它现在挂在 158 还是 149 上(见 §5 步骤 2) |
| 2 | **页标题** | 21 | wangli | 左上角,文字 = 窗口名(如 `上料-IO监控 DI1-2`) |
| 3 | **返回/总览按钮** | 21 | wangli | 右下角,功能键 → 切到 148/149/150 对应段 |
| 4 | **IO 段总览页** | 3 | 待定 | 148/149/150 保留为“段入口”(三个大按钮进各分组),或直接删掉由左侧导航进入 |
| 5 | **`io-xxx` 宏** | 21 | 我 | 每页写自己的组号(§6 已给全表) |
| 6 | **通讯状态提示条** | 1 | 待定 | 公共窗口顶部,读 `LB-10100`/`LB-10400`,断线变红。V3 |
| 7 | **制丸2 预留页** | 5 | 暂不做 | `050` 里 20~24 号位是给它留的,等有第二台制丸 PLC 再说 |
> **不需要新建的**:表格线、灯、位号文字——这些 158 已经全有了,复制即可。
---
## 4. 单页标准布局(1920×1080)
| 区域 | 元素 | 位置 (x,y) | 尺寸 |
| --- | --- | --- | --- |
| 标题 | 文字(窗口名) | 200, 60 | — |
| 内容-左列 | 灯 + 位号 + 说明 ×16 | 210, 150 起,行高 44 | 灯 30×30 |
| 内容-右列 | 灯 + 位号 + 说明 ×16 | 790, 150 起,行高 44 | 同上 |
| 页签栏 | 10 个按钮 | 210~1700, y=960 | 130×52,间距 8 |
| 返回 | 功能键「返回总览」 | 1700, 960 | 140×52 |
> 现有 158 就是这套坐标,**照抄不用重新量**。
---
## 5. 施工步骤(第一阶段:样板页 158)
### 步骤 0:开工前两件事
1. **系统参数 → 一般 → 公共窗口**,确认值为 `100`。
- 若是 0/空 → 改成 100。否则清空重叠后顶栏会消失,全工程都受影响。
2. `文件 → 另存为` → `unitouch1025.重构前.cmtp`(本地备份,不进库)。
### 步骤 1:清空重叠窗口
1. 窗口列表点 **158**;
2. 右键 → **属性**;
3. 「重叠窗口」三栏全部改成 **(无)**:
- 底层 `100.common-window-joyea` → 无
- 中层 `105.X1Y5` → 无
- 顶层 `149.上料-IO` → 无
4. 确定。
### 步骤 2:确认页签栏在哪个窗口
1. 打开 **149**,在编辑区按 **Ctrl+A**,看状态栏/选框里有没有那 10 个页签按钮;
2. 打开 **158**,同样看一遍。
| 结果 | 动作 |
| --- | --- |
| 页签在 **149** | 149 全选 → Ctrl+C → 158 → Ctrl+V |
| 页签在 **158** | 跳过,只搬 149 的灯和表格 |
### 步骤 3:搬元件
1. 打开 149 → **Ctrl+A** → **Ctrl+C**;
2. 切到 158 → **Ctrl+V**;
3. 弹「内部粘贴偏移」时选 **不偏移(原坐标)**。
### 步骤 4:补标题和返回
1. 左上角放文字:`上料-IO监控 DI1-2`;
2. 右下角放功能键:`返回总览` → 动作 = 切换基本窗口 → `149`。
### 步骤 5:挂宏
1. 右键 158 → 属性 → 宏指令 → **打开窗口时执行** = `io-158`;
2. **循环执行** 保持停用;
3. 确定。
### 步骤 6:编译验收
保存 → **编译** → **在线模拟**,对照 §7 的 5 条。全过才进批量。
---
## 6. 第二阶段:批量(21 页)
### 每页固定 4 个动作
| 动作 | 怎么做 |
| --- | --- |
| ① 复制 | 窗口列表右键 158 → **复制** → 新窗口号 |
| ② 改名 | 窗口名改成对应名称(§10 表) |
| ③ 换宏 | 属性 → 打开窗口时执行 → `io-新号` |
| ④ 挪高亮 | 页签栏里把橙色底/选中图移到当前页签 |
> **元件地址不要动**:所有页的灯都读 `LW-310~313`,共用同一批本地字。
> **复制会把 `io-158` 一起带过去**,这是最容易漏的,必须逐页改。
### 顺序(按批,每批 5 页,批后编译 + commit)
| 批 | 窗口 | 内容 |
| --- | --- | --- |
| 1 | 158、159、160、161、162 | 上料 DI/DO(组号 8~12,已确认) |
| 2 | 163、164、166、167、168 | 上料 DO + 清洗 DI/DO |
| 3 | 169、151、152、153、154 | 清洗 + 制丸 |
| 4 | 155、165、170、171、156、157 | 剩余(含 4 页待定数据源) |
### 组号对照(`io-xxx` 宏)
| 窗口 | idx | 窗口 | idx | 窗口 | idx |
| --- | --- | --- | --- | --- | --- |
| 151 | 1 | 158 | 8 | 166 | 15 |
| 152 | 2 | 159 | 9 | 167 | 16 |
| 153 | 3 | 160 | 10 | 168 | 17 |
| 154 | 4 | 161 | 11 | 169 | 18 |
| 155 | 5 | 162 | 12 | 165 | 20 |
| 156 | 6 | 163 | 13 | 170 | 22 |
| 157 | 7 | 164 | 14 | 171 | 21 |
宏模板(只改第一行):
```
macro_command main()
short idx = 8
SetData(idx, "Local HMI", LW, 300, 1)
end macro_command
```
---
## 7. 第三阶段:收尾
1. **删入口宏里的组号**:`042`/`044`/`045` 中各删一行
`SetData(byteA, "Local HMI", LW, 300, 1)`,只留 `LW-2` 切窗;
2. **清空 149/148/150**:内容全删,窗口先留一周再删;
3. **更新文档**:窗口表、`LW-300/310` 归属(我做)。
---
## 8. 验收清单(每页 5 条)
| # | 检查 | 通过标准 |
| --- | --- | --- |
| 1 | 顶栏 | JOYEA/运行/点动/网络状态/用户/时间 都在,位置不变 |
| 2 | 页签 | 10 个都在,当前页高亮 |
| 3 | 数据 | 切页后灯**与上一页不同** |
| 4 | 点序 | 现场按一个已知输入,**对应那一行**亮 |
| 5 | 往返 | 左侧 5 个导航按钮来回切正常 |
> 第 4 条必做:现有灯位序是乱的(`WL_0 = LW_Bit 310.1`、`WL_15 = 310.0`),重构时按 `310.0 → 311.7` 重排,排完必须实测。
---
## 9. V2 范围(本次不做,先列出来免得漏)
| 类别 | 窗口 | 处理原则 |
| --- | --- | --- |
| 制丸操作弹窗 | 177~185 | 不透明底 + 关闭按钮 + 「重叠 = 独立窗口」 |
| 上料/清洗页 | 190~202、204~210 | 与 IO 页同法,单窗口 |
| 状态弹窗 | 215~251 | 同上,但要确认是否共用同一套元件 |
| IO 弹窗 | 260~265 | 同上 |
---
## 10. 施工记录表(wangli 填,每页打勾)
| 窗口 | 名称 | 重叠清空 | 元件已搬 | 宏 | 高亮 | 验收 |
| --- | --- | --- | --- | --- | --- | --- |
| 158 | 上料-IO监控DI1-2 | ☐ | ☐ | io-158 | ☐ | ☐ |
| 159 | 上料-IO监控DI3-4 | ☐ | ☐ | io-159 | ☐ | ☐ |
| 160 | 上料-IO监控DI5-6 | ☐ | ☐ | io-160 | ☐ | ☐ |
| 161 | 上料-IO监控DI7-8 | ☐ | ☐ | io-161 | ☐ | ☐ |
| 162 | 上料-IO监控DO1-2 | ☐ | ☐ | io-162 | ☐ | ☐ |
| 163 | 上料-IO监控DO3-4 | ☐ | ☐ | io-163 | ☐ | ☐ |
| 164 | 上料-IO监控DO5-6 | ☐ | ☐ | io-164 | ☐ | ☐ |
| 165 | 上料-IO监控AI1-2 | ☐ | ☐ | io-165 | ☐ | ☐ |
| 170 | 上料-IO监控DO7 | ☐ | ☐ | io-170 | ☐ | ☐ |
| 171 | 上料-IO监控AI3 | ☐ | ☐ | io-171 | ☐ | ☐ |
| 151 | 制丸-IO监控DI1-2 | ☐ | ☐ | io-151 | ☐ | ☐ |
| 152 | 制丸-IO监控DI3-4 | ☐ | ☐ | io-152 | ☐ | ☐ |
| 153 | 制丸-IO监控DI5-6 | ☐ | ☐ | io-153 | ☐ | ☐ |
| 154 | 制丸-IO监控DO1-2 | ☐ | ☐ | io-154 | ☐ | ☐ |
| 155 | 制丸-IO监控DO3-4 | ☐ | ☐ | io-155 | ☐ | ☐ |
| 156 | 制丸-IO监控AI1-2 | ☐ | ☐ | io-156 | ☐ | ☐ |
| 157 | 制丸-IO监控AI3-4 | ☐ | ☐ | io-157 | ☐ | ☐ |
| 166 | 清洗-IO监控DI11-12 | ☐ | ☐ | io-166 | ☐ | ☐ |
| 167 | 清洗-IO监控DI13-14 | ☐ | ☐ | io-167 | ☐ | ☐ |
| 168 | 清洗-IO监控DO11-12 | ☐ | ☐ | io-168 | ☐ | ☐ |
| 169 | 清洗-IO监控DO13-14 | ☐ | ☐ | io-169 | ☐ | ☐ |
---
## 11. 风险与回滚
| 风险 | 应对 |
| --- | --- |
| 清空重叠后顶栏消失 | 先确认公共窗口 = 100;158 试点通过再批量 |
| 复制后忘记改宏,全页数据相同 | 每页验收第 3 条必须过 |
| 页签高亮不跟随 | 每页手动挪,做完当页立即看出错 |
| 与其他人同时改同一批窗口 | 开工前口头冻结 24 个窗口 |
| 改坏 | 每批 5 页 `git commit`;本地留 `重构前.cmtp` |
---
## 12. 待确认(指挥拍板)
| # | 事项 | 影响 |
| --- | --- | --- |
| 1 | **AI 页(156/157/165/171)数据源**:数值元件直连 PLC 符号,还是走 `LW` 中转 | 决定这 4 页要不要设组号、`050` 要不要补 AI 分支 |
| 2 | **170(DO7)** 读 `Local_DO07` 还是 `Remote_DO21` | 决定 idx=22 的内容 |
| 3 | 148/149/150 三个段总览页**保留还是删** | 决定 §3 第 4 项 |
| 4 | 页签栏每页复制(10 份)是否可接受 | 若不接受,只能退回“页签放容器页”,与目标冲突 |
> 确认方法(各 30 秒):EB 打开 165,点一个数字显示框看「标签」;打开 170,点一个灯看「标签」。
---
## 13. V3 定案(2026-10-27 14:50,101 实测确认)
### 13.1 标准形态(以 101 为准)
`101 X1Y1` 的「窗口设置」实测:
```
窗口名称:X1Y1 编号:101 大小:1920 × 1080
重叠窗口:底层 = 100.common-window-joyea
中层 = 无
顶层 = 无
```
**结论:每页 = 100(顶栏) + 本页自己的内容(含左侧导航)。不再有第二、第三层。**
### 13.2 IO 页的差距
| 层 | 101(标准) | IO 页(现状) | 处理 |
| --- | --- | --- | --- |
| 底层 | 100 | 100 | 保留 |
| 中层 | 无 | `105.X1Y5` | **清空** |
| 顶层 | 无 | `149`/`150`(灯)/ `158~171`(文字) | **清空,内容并入本页** |
| 本页内容 | 导航 + 全部 | 只有文字或只有灯 | **合并** |
### 13.3 每页 4 个动作(替代 §5 的旧步骤)
1. **清层**:窗口设置里,中层 `105` → **无**;顶层 `149/150` → **无**(底层 100 保留);
2. **搬导航**:打开 101,选中左侧导航群组(`GP_0`、`GP_1` 及其子元件)→ `Ctrl+C` → 粘到本页同坐标;
3. **并内容**:把本页对应的文字标签页(158~171)全选复制,贴进带 32 个灯的那一页(149/150)里;两份内容从此只在**一个窗口**中;
4. **挂宏**:窗口设置 → 宏指令 → 打开窗口时执行 = `io-<窗口号>`(组号见 §6)。
### 13.4 顺序调整
先做 **158**(文字页 + 149 的灯合并),验收通过后,其余页按 §6 批次推进。
> 注意:合并后每个 IO 页都自带 32 个灯,`LW-310~313` 仍为共用地址,**不要改成各自独立的地址**,否则 `050` 要跟着大改。