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

261 lines
11 KiB
Markdown
Raw Normal View History

# 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,点一个灯看「标签」。