12 KiB
IO 页窗口重构施工单(V2 · 可执行版)
角色:指挥 = 你 / 实施 = wangli / 文档·宏·验收表 = 我 基准工程:
unitouch1025.cmtp依据:工程窗口表(0282)、宏列表(50 条)、171)。操作弹窗与清洗弹窗列 V2,见 §8。158的窗口属性、149的元件树 本次范围:IO 相关 24 个窗口(148/149/150 + 151
1. 现状盘点(按工程窗口表)
| 类别 | 窗口号 | 数量 | 当前结构 |
|---|---|---|---|
| 系统窗 | 3~9 | 5 | EB 内置,不动 |
| 登录/弹窗 | 10~17、20 | 9 | 基本窗口,不动 |
| 区域聚焦弹窗 | 30~32 | 3 | 弹窗,不动 |
| 键盘/ASCII/用户窗 | 50~90 | — | EB 内置,不动 |
| 公共窗口 | 100 common-window-joyea |
1 | 顶栏 + 左侧导航 |
| 主画面 | 101 |
15 | X1Y1 式样板,不改 |
| IO 段容器 | 148 清洗-IO、149 上料-IO、150 制丸-IO |
3 | 层叠容器 |
| IO 分组页 | 151 |
21 | 层套层:底层 100 / 中层 X?Y5 / 顶层 14x |
| 制丸操作弹窗 | 177~185 | 9 | V2 |
| 上料/清洗页 | 190 |
12 | V2 |
| 状态/清洗弹窗 | 215 |
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:开工前两件事
- 系统参数 → 一般 → 公共窗口,确认值为
100。- 若是 0/空 → 改成 100。否则清空重叠后顶栏会消失,全工程都受影响。
文件 → 另存为→unitouch1025.重构前.cmtp(本地备份,不进库)。
步骤 1:清空重叠窗口
- 窗口列表点 158;
- 右键 → 属性;
- 「重叠窗口」三栏全部改成 (无):
- 底层
100.common-window-joyea→ 无 - 中层
105.X1Y5→ 无 - 顶层
149.上料-IO→ 无
- 底层
- 确定。
步骤 2:确认页签栏在哪个窗口
- 打开 149,在编辑区按 Ctrl+A,看状态栏/选框里有没有那 10 个页签按钮;
- 打开 158,同样看一遍。
| 结果 | 动作 |
|---|---|
| 页签在 149 | 149 全选 → Ctrl+C → 158 → Ctrl+V |
| 页签在 158 | 跳过,只搬 149 的灯和表格 |
步骤 3:搬元件
- 打开 149 → Ctrl+A → Ctrl+C;
- 切到 158 → Ctrl+V;
- 弹「内部粘贴偏移」时选 不偏移(原坐标)。
步骤 4:补标题和返回
- 左上角放文字:
上料-IO监控 DI1-2; - 右下角放功能键:
返回总览→ 动作 = 切换基本窗口 →149。
步骤 5:挂宏
- 右键 158 → 属性 → 宏指令 → 打开窗口时执行 =
io-158; - 循环执行 保持停用;
- 确定。
步骤 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. 第三阶段:收尾
- 删入口宏里的组号:
042/044/045中各删一行SetData(byteA, "Local HMI", LW, 300, 1),只留LW-2切窗; - 清空 149/148/150:内容全删,窗口先留一周再删;
- 更新文档:窗口表、
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 |
与 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 的旧步骤)
- 清层:窗口设置里,中层
105→ 无;顶层149/150→ 无(底层 100 保留); - 搬导航:打开 101,选中左侧导航群组(
GP_0、GP_1及其子元件)→Ctrl+C→ 粘到本页同坐标; - 并内容:把本页对应的文字标签页(158~171)全选复制,贴进带 32 个灯的那一页(149/150)里;两份内容从此只在一个窗口中;
- 挂宏:窗口设置 → 宏指令 → 打开窗口时执行 =
io-<窗口号>(组号见 §6)。
13.4 顺序调整
先做 158(文字页 + 149 的灯合并),验收通过后,其余页按 §6 批次推进。
注意:合并后每个 IO 页都自带 32 个灯,
LW-310~313仍为共用地址,不要改成各自独立的地址,否则050要跟着大改。