Files
weinviews-unitouch/界面开发记录.md
T
admin 04aa36be43 重置:仅保留最新版本快照
原 master 12f4831「更新工程/XD/素材 (x1Y2, 组1982)」。仓库瘦身:历史合并为单一根提交;unitouch.cxob(EB Pro 编译产物)不再入库。
2026-09-25 12:38:39 +08:00

24 KiB
Raw Blame History

JOYEA 触摸屏开发记录(CMT2167X / EasyBuilder Pro 6.10)

工程目录:E:\AiCodeGitea\weinveiw-touch | 远程:http://124.220.63.9:30000/admin/weinviews-unitouch.git

1. 目标与环境

  • 硬件:WEINTEK CMT2167X,1920×1080,arm64,24VDC。
  • 软件:EasyBuilder Pro 6.10.02.421。
  • 通讯/设备:与现有 unitouch 工程一致(不改 PLC 与地址映射)。

2. 工程资产

文件 说明
unitouch.cmtp(+ bak1~3) EB Pro 工程文件
unitouch.cxob 编译输出(gzip→tar:config/mt8000/project/runtime/fonts)
unitouch.debug 调试数据
lwaddr.xls / lwaddr.csv 系统地址大全(1429 条,查系统寄存器用)
制丸线HMI界面UniTouch布局202500915.xd XD 设计源(18 画板)
msg-login.txt 登录提示宏源码(记事本复制用)

config:MachineIds=[216702] / Resolution=1920x1080 / SocType=arm64。

XD 画板:A_start、B_PID、C_运行1~3、D_点动1/2、E_配方1~3、F_设备参数2、G_清洗主机1、H_报警1、I_数据1~3、J_关于。

3. 窗口结构

窗口 名称 用途
4 — 白色底窗口(层叠底层)
10 start-login 启动登录页
11 — 无权限提示弹窗(600×300,位 LB-110)
12 — 修改时间弹窗(位 LB-120)
13 about 关于(1200×800 弹窗,位 LB-123)
14 用户管理 用户管理弹窗(位 LB-122)
15 — 删除确认弹窗(位 LB-121)
20 点检 启动点检页(1920×1080 全屏)
100 common window joyea 公共窗口(顶部栏/导航/常驻元件)
101~128 X1Y1 ~ X4Y7 主画面,共 28 个

4. 命名与导航

  • 画面名:X{段}Y{功能}_{工艺段}_{功能}
  • X(工艺段):X1 配料/上料、X2 制丸1、X3 制丸2、X4 清洗
  • Y(功能):Y1 初始状态、Y2 运行、Y3 配方、Y4 设备参数、Y5 I/O监控、Y6 报警、Y7 数据趋势
  • 窗口号:WIN = 101 + (X-1)*7 + (Y-1)(101~128)
  • 导航机制:按钮宏把 X/Y 与目标窗口号写入 LW-0/1/2,由 PLC 控制元件「切换基本窗口」(触发地址 LW-2,回写 LW-3)执行切窗。
  • 顶部「运行/点动」为全局状态,暂不参与 X/Y 导航。

5. 地址规划

5.1 导航 / 公共

地址 用途
LW-0 X(1~4)
LW-1 Y(1~7)
LW-2 目标窗口号(PLC 控制元件触发地址)
LW-3 当前窗口号(PLC 控制元件回写)
LW-9222 当前登录用户类别位(bit0=A 工程师 / bit1=B 管理员 / bit2=C 上料 / bit3=D 制丸;0=未登录)

5.2 弹窗 / 状态位

位 用途
LB-110 无权限提示弹窗(→ 11 号窗)
LB-120 修改时间弹窗(→ 12 号窗)
LB-121 删除确认弹窗(→ 15 号窗)
LB-122 用户管理弹窗(→ 14 号窗)
LB-123 关于弹窗(→ 13 号窗)
LB-131 三个 PLC 联机汇总(触发条件 AND → 位状态指示灯)

5.3 控制地址(高级安全模式)

地址 用途
LW-100 命令(见 5.4)
LW-101 命令结果(结果码见 5.5)
LW-102 用户索引(列表选中 / 读剩余时间的结果)
LW-103 用户权限位(bit0=A / bit1=B / bit2=C / bit3=D)
LW-104~111 用户名(ASCII,8 words)
LW-112~119 密码(ASCII,8 words)

5.4 LW-100 命令表

值 命令 配合地址
1 / 2 名称登入 / 索引登入 LW-104+LW-112 / LW-102+LW-112
3 注销 —
4 改当前账号密码 名=原密码、密=新密码
5 新增 LW-104+LW-112+LW-103
6 / 15 新增临时账号(分/天) 上述 + LW-102=有效期(0=永久)
7 / 8 名称删除 / 索引删除 LW-104 / LW-102
9 / 10 名称设权限 / 索引设权限 +LW-103
11 / 12 名称设密码 / 索引设密码 +LW-112
13 / 14 名称读权限 / 索引读权限 结果→LW-103
16 / 17 新增限期账号(分/天) 有效期不得为 0
18~21 读剩余分钟/天数 结果→LW-102

5.5 LW-101 结果码

Hex 含义 排查
01 成功 —
02 错误命令 LW-100 值无效
04 账户已存在 LW-104 重名
08 账户不存在 LW-104/LW-102 对不上
10 密码错误 LW-112 内容
20 命令无法执行 删当前账号 / admin
40 名称不合法 LW-104
80 密码含无效字符 LW-112
100 / 200 导入无效 / 超期 U 盘 / 安全密钥

5.6 提示 / 点检 / 时间

地址 用途
LW-260 登录提示字符串(字符框 16 words)
LW-261 登录提示字符串表编号(0 空 / 1 成功 / 2 不存在 / 3 密码错 / 4 无法执行 / 5 名称不合法 / 6 密码无效 / 7 登录失败)
LW-20 点检位(LW_Bit-2000~2008 设备状态 9 项;LW_Bit-2009/2010 物料状态 2 项;全勾=2047)
LW-9017~9022 RTC:秒/分/时/日/月/年(写入即设置时间)
LW-40~45 改时间暂存:秒/分/时/日/月/年

5.7 网络 / 版本(关于页)

项目 地址 元件
HMI IP LW-9129~9132 数值 ×4(16-bit,3 位)
子网掩码 LW-10750~10753 数值 ×4
网关 LW-9125~9128 数值 ×4
MAC LW-9135(6 words) 字符元件,字长 6
以太网端口 LW-9133 数值
DNS LW-10804~10807 数值 ×4
连接速度 LW-10815 数值(0 失败/10/100/1000)
DHCP LW-10812 数值(0 关/1 开)
程序版本 LW-9120 数值 32-bit
OS 版本 LW-9026/9027/9028 数值(年/月/日)
工程名称 LW-9100(14 words) 字符,字长 14
工程编译日期 LW-9122/9123/9124 数值(年/月/日)
HMI 名称 LW-10884(16 words) 字符,字长 16
HMI 机型 ID LW-9054 数值 32-bit
HMI 识别码 LW-9046 数值 32-bit
工程文件大小 LW-9118 数值 32-bit(K bytes)
工程校验和 LW-12752(16 words) 字符,字长 16

网络写回控制位:LB-12041 刷新、LB-12094/LB-12095 更新(写 IP/掩码/网关后置 ON)、LB-12822 桥接模式。

6. 宏清单

命名:导航/权限类 = btn-*、登录 = main-init/btn-login-index/logout、用户管理 = usr-*、点检 = insp-*、时间 = open-time/set-time/close-time/-、提示 = msg-login、弹窗 = close-msg。 权限判定统一用 LW-9222 的类别位(GETBIT 取值 + if,不用 and/&)。

main-init(开机执行一次)

macro_command main()
    short x = 1, y = 1, win = 0
    SetData(x, "Local HMI", LW, 0, 1)
    SetData(y, "Local HMI", LW, 1, 1)
    SetData(win, "Local HMI", LW, 2, 1)
end macro_command

btn-x1(X1,权限 A/B/C) x2/x3 换 x = 2/3 且取位改为 A/B/D;btn-x4 换 x = 4 且取 A/B/C/D

macro_command main()
    short cls = 0, x = 1, y = 0, win = 0, ok = 0
    short pop = 1
    short bA = 0, bB = 0, bC = 0
    GetData(cls, "Local HMI", LW, 9222, 1)
    GETBIT(cls, bA, 0)
    GETBIT(cls, bB, 1)
    GETBIT(cls, bC, 2)
    if bA == 1 then
        ok = 1
    end if
    if bB == 1 then
        ok = 1
    end if
    if bC == 1 then
        ok = 1
    end if
    if ok == 1 then
        SetData(x, "Local HMI", LW, 0, 1)
        GetData(y, "Local HMI", LW, 1, 1)
        win = 101 + (x - 1) * 7 + (y - 1)
        SetData(win, "Local HMI", LW, 2, 1)
    else
        SetData(pop, "Local HMI", LB, 110, 1)
    end if
end macro_command

btn-y1(Y1Y3 全开放:取 A/B/C/D) Y4Y7 仅 A/B:只取 bA/bB

macro_command main()
    short cls = 0, x = 0, y = 1, win = 0, ok = 0
    short pop = 1
    short bA = 0, bB = 0, bC = 0, bD = 0
    GetData(cls, "Local HMI", LW, 9222, 1)
    GETBIT(cls, bA, 0)
    GETBIT(cls, bB, 1)
    GETBIT(cls, bC, 2)
    GETBIT(cls, bD, 3)
    if bA == 1 then
        ok = 1
    end if
    if bB == 1 then
        ok = 1
    end if
    if bC == 1 then
        ok = 1
    end if
    if bD == 1 then
        ok = 1
    end if
    if ok == 1 then
        SetData(y, "Local HMI", LW, 1, 1)
        GetData(x, "Local HMI", LW, 0, 1)
        win = 101 + (x - 1) * 7 + (y - 1)
        SetData(win, "Local HMI", LW, 2, 1)
    else
        SetData(pop, "Local HMI", LB, 110, 1)
    end if
end macro_command

btn-login-index(登录:索引登入 → 按组定位;31 为 msg-login 的宏编号)

macro_command main()
    short cmd = 2, res = 0, cls = 0, x = 1, y = 1, win = 0
    short bA = 0, bB = 0, bC = 0, bD = 0
    SetData(cmd, "Local HMI", LW, 100, 1)
    DELAY(2000)
    GetData(res, "Local HMI", LW, 101, 1)
    ASYNC_TRIG_MACRO(31)
    if res == 1 then
        GetData(cls, "Local HMI", LW, 9222, 1)
        GETBIT(cls, bA, 0)
        GETBIT(cls, bB, 1)
        GETBIT(cls, bC, 2)
        GETBIT(cls, bD, 3)
        if bD == 1 then
            x = 2
        end if
        if bA == 1 then
            x = 1
        end if
        if bB == 1 then
            x = 1
        end if
        if bC == 1 then
            x = 1
        end if
        win = 101 + (x - 1) * 7 + (y - 1)
        SetData(x, "Local HMI", LW, 0, 1)
        SetData(y, "Local HMI", LW, 1, 1)
        SetData(win, "Local HMI", LW, 2, 1)
    end if
end macro_command

logout(注销并回登录页;10 号窗「打开窗口时执行」也用它)

macro_command main()
    short cmd = 3, win = 10, z = 0
    SetData(cmd, "Local HMI", LW, 100, 1)
    SetData(z, "Local HMI", LW, 0, 1)
    SetData(z, "Local HMI", LW, 1, 1)
    SetData(win, "Local HMI", LW, 2, 1)
end macro_command

msg-login(把 LW-101 结果码转成字符串表编号 → LW-261)

macro_command main()
    short res = 0, idx = 0
    GetData(res, "Local HMI", LW, 101, 1)
    idx = 7
    if res == 1 then
        idx = 1
    end if
    if res == 8 then
        idx = 2
    end if
    if res == 16 then
        idx = 3
    end if
    if res == 32 then
        idx = 4
    end if
    if res == 64 then
        idx = 5
    end if
    if res == 128 then
        idx = 6
    end if
    if res == 0 then
        idx = 0
    end if
    SetData(idx, "Local HMI", LW, 261, 1)
end macro_command

close-msg(关闭无权限提示窗)

macro_command main()
    short z = 0
    SetData(z, "Local HMI", LB, 110, 1)
end macro_command

用户管理 usr-*

宏 命令 说明
usr-init — 14 号窗「打开窗口时执行」:清 LW-104/LW-112/LW-103/LW-101,清 LB-121
usr-open — 顶部按钮:仅 B/admin → 置 LB-122
usr-back — 清 LB-122
usr-add 5 新增(LW-104+LW-112+LW-103)
usr-del — 置 LB-121 弹确认
usr-del-ok 8 按索引删除
usr-del-cancel — 清 LB-121
usr-getlevel 14 按索引读权限 → LW-103
usr-setlevel 10 按索引设权限
usr-setpwd 12 按索引设密码
macro_command main()
    short cmd = 14
    SetData(cmd, "Local HMI", LW, 100, 1)
end macro_command

其余 usr-* 同上模板:cmd = 5 / 8 / 10 / 12;usr-open/usr-back/usr-del/usr-del-cancel/usr-init 见 6.21.5。

点检 insp-*

insp-init(20 号窗「打开窗口时执行」)

macro_command main()
    short z = 0
    SetData(z, "Local HMI", LW, 20, 1)
end macro_command

insp-next(可选:11 项全勾才进主画面)

macro_command main()
    short v = 0, cls = 0, x = 1, y = 1, win = 0
    short bA = 0, bB = 0, bC = 0, bD = 0, np = 1
    GetData(v, "Local HMI", LW, 20, 1)
    if v == 2047 then
        GetData(cls, "Local HMI", LW, 9222, 1)
        GETBIT(cls, bA, 0)
        GETBIT(cls, bB, 1)
        GETBIT(cls, bC, 2)
        GETBIT(cls, bD, 3)
        if bD == 1 then
            x = 2
        end if
        if bA == 1 then
            x = 1
        end if
        if bB == 1 then
            x = 1
        end if
        if bC == 1 then
            x = 1
        end if
        win = 101 + (x - 1) * 7 + (y - 1)
        SetData(x, "Local HMI", LW, 0, 1)
        SetData(y, "Local HMI", LW, 1, 1)
        SetData(win, "Local HMI", LW, 2, 1)
    else
        SetData(np, "Local HMI", LB, 110, 1)
    end if
end macro_command

修改时间

宏 触发 作用
open-time 时钟上透明按钮(仅 B) 读 LW-90179022 → LW-4045,置 LB-120
set-time 12 号窗「设定」 LW-4045 → LW-90179022(设置 RTC),清 LB-120
close-time 12 号窗「取消」 清 LB-120
macro_command main()                             // set-time
    short v[6] = {0,0,0,0,0,0}
    short z = 0
    GetData(v[0], "Local HMI", LW, 40, 6)
    SetData(v[0], "Local HMI", LW, 9017, 6)
    SetData(z, "Local HMI", LB, 120, 1)
end macro_command

7. 各页面要点

7.1 登录页(10 号窗)

  • 项目选单(来源=用户账号)→ 写 LW-102;密码字符输入(勾系统键盘)→ LW-112。
  • 底部字符框读 LW-260(或文字元件用字符串表,编号 LW-261)。
  • 「登录」按钮 → btn-login-index。
  • 窗口属性 → 「打开窗口时执行」= logout(每次回来强制重新登录)。
  • 顶部账户显示读 PLW-10754,上面盖透明功能键 → 长按 1s(安全页最少按键时间=1)→ logout。

7.2 公共窗口(100 号窗)

  • 顶部:品牌、页签、?/首页/用户/报警图标;右上角「日期/时间」元件。
  • PLC 联机:触发条件(3 台联机位 AND)→ LB-131 → 位状态指示灯。
  • 直接窗口 ×5:LB-110→11、LB-120→12、LB-121→15、LB-122→14、LB-123→13。
  • 入口按钮:点检(功能键→切换基本窗口=20);关于(仅 A,安全页操作类别=类别 A);用户管理(usr-open)。
  • X/Y 导航按钮:btn-x1~x4、btn-y1~y7。

7.3 用户管理(14 号窗,1200×800 弹窗)

见 6.21.10:列表(LW-102)+ 用户名/密码 + 4 个权限开关(LW_Bit-10300~10303)+ 读取权限/修改权限/修改密码/删除/新增/关闭 + 结果 LW-101。 只读管理员(B/admin)可用;改权限前先「读取权限」。

7.4 点检(20 号窗,1920×1080)

  • 布局按 XD B_PID:左「设备状态」9 项、右「物料状态」2 项(LW_Bit-2000~2010),右侧两个提示框,右下插画 pic/pid-illustration.png。
  • 「关闭」= 功能键 → 返回上一个窗口;「下一步」= insp-next。
  • 点检暂不强制。

7.5 关于(13 号窗,1200×800 弹窗)

  • 字段与地址见 5.7;LB-123 弹窗。
  • 入口仅工程师(A)。

7.6 修改时间(12 号窗)

  • 6 个数值输入(LW-40~45 秒/分/时/日/月/年)+ 设定/取消。
  • 入口:100 号窗时钟上透明功能键(仅 B)→ open-time。

7.7 主画面(101~128)

  • 每个画面 = 某工艺段 × 某功能组合,底图按 XD/pic 素材放置,控件按各功能需求(待逐个设计)。

7.7 主画面设计

7.7.1 X1Y1(配料/上料 · 初始状态)完整操作表

地址栏留空(__)处待 PLC 工程师填写;元件先建好、地址后补。

布局(1920×1080;内容区 x 1101900,y 901000)

# 区域 控件 元件 地址 位置(x,y) 尺寸
1 批次行 「产品配方」标签 文字 — 190,110 —
2 批次行 产品配方 数值输入 LW-__ 250,105 210×44
3 批次行 选择 功能键 / 位状态设置 LB-__ 470,105 90×46
4 批次行 「料次」标签 文字 — 580,110 —
5 批次行 料次 数值输入 LW-__ 640,105 100×44
6 批次行 「批号」标签 文字 — 760,110 —
7 批次行 批号(存储) 字符输入(8 words) RW-__ 820,105 220×44
8 批次行 「报警信息」标签 文字 — 1060,110 —
9 批次行 报警信息 报警条(一行滚动) 事件登录 1140,105 500×44
10 批次行 变频器复位 功能键 / 位状态设置 LB-__ 1700,105 180×46
11 流程1组 节点1~6 多状态指示灯 LW-__ ×6 x=680/850/1020/1190/1360/1530,y=300 160×56
12 流程1组 节点1~6 修正 数值输入(仅工程师) 同节点地址 同 x,y=362 100×40
13 状态区 圆形开关 位状态指示灯 LB-__ 700,430 80×50
14 状态区 进度条 棒图(0~100) LW-__ 250,470 400×20
15 状态区 「投料 / 输送1」标签 文字 — 250,435 —
16 流程2组 节点7~12 多状态指示灯 LW-__ ×6 同 x,y=560 160×56
17 流程2组 节点7~12 修正 数值输入(仅工程师) 同节点地址 同 x,y=622 100×40
18 状态区 圆形开关 位状态指示灯 LB-__ 700,690 80×50
19 状态区 进度条 棒图(0~100) LW-__ 250,730 400×20

节点状态配色(多状态指示灯「状态设置」)

值 含义 颜色/图片
0 未开始 灰
1 进行中 绿
2 已完成 蓝
3 异常 红

操作步骤(从上到下逐个做)

0. 准备

  1. 打开 101 号窗口(X1Y1)。
  2. 工程文件 → 地址(地址标签库)建标签(地址先用占位,PLC 给了再换): 产品配方 LW-330、料次 LW-331、批号 RW-0、节点状态 LW-300~311、进度 LW-320/321、圆形开关 LB-300/301、选择 LB-311、变频器复位 LB-310。

① 批次信息行(y≈105) 3. 元件 → 绘图 → 文字/批注 放 4 个标签:「产品配方」(190,110)、「料次」(580,110)、「批号」(760,110)、「报警信息」(1060,110)。 4. 产品配方:元件 → 输入 → 数值,地址 LW-330,(250,105) 210×44;属性「数值输入」页勾 系统键盘。 5. 料次:数值输入,地址 LW-331,(640,105) 100×44,勾系统键盘。 6. 批号:元件 → 输入 → 字符,地址 RW-0、字长 8,(820,105) 220×44,勾系统键盘(RW 掉电保持 → 自动保存)。 7. 「选择」:元件 → 按钮/开关 → 功能键,动作选 位状态设置 或 宏指令,写 LB-311,(470,105) 90×46;「图片」标签可设按钮底图。 8. 「变频器复位」:功能键,写 LB-310,(1700,105) 180×46。 9. 报警信息:元件 → 报警 → 报警条,(1140,105) 500×44(报警来源见 ⑥)。

② 流程节点(两组 × 6) 10. 元件 → 指示灯 → 多状态指示灯,放 6 个:x = 680 / 850 / 1020 / 1190 / 1360 / 1530,y = 300,160×56;地址 LW-300305。 11. 「状态设置」给 4 个状态配图/色:0 灰(未开始)、1 绿(进行中)、2 蓝(完成)、3 红(异常)。 12. 复制这 6 个到第二组 y = 560,地址改 LW-306311。

③ 节点人工修正(显示+可改都用同一地址) 13. 元件 → 输入 → 数值,放在每个节点下方:同 x、y = 362、100×40;地址=对应节点状态字(LW-300305)。 14. 属性 「安全」页 → 操作类别 = 类别 A(工程师)(只有工程师能改);可勾 「操作前先确认」 防误改。 15. 第二组同样:y = 622,地址 LW-306311。

④ 圆形开关 16. 元件 → 指示灯 → 位状态指示灯,(700,430) 80×50,地址 LB-300;状态 0/1 各配一张圆图(灰/绿)。 17. 第二组 (700,690),地址 LB-301。

⑤ 进度条 18. 元件 → 图例 → 棒图,(250,470) 400×20,地址 LW-320,方向横向、范围 0~100、绿色。 19. 上方加文字「投料 / 输送1」(250,435)。 20. 第二组 (250,730),地址 LW-321。

⑥ 报警 21. 工程文件 → 事件/报警 新建报警条目(地址、触发条件、显示文字、颜色)。 22. 本页用 报警条(步骤 9)做滚动提示;完整列表与确认放在 Y6 报警表页(见 7.7.2)。

⑦ 收尾 23. 各元件「安全」页按需限制操作类别(只显示/只工程师可改)。 24. 保存编译;等 PLC 地址到位后,把占位地址逐个替换即可,元件与布局不动。 底部 X 页签:由 100 号公共窗口的 4 个功能键实现(配料/制丸1/制丸2/清洗 → 切换基本窗口)。

7.7.2 Y6 报警表页面(106 / 113 / 120 / 127)

Y6 = 报警功能;各工艺段各有一个报警表页:106(配料/上料)、113(制丸1)、120(制丸2)、127(清洗)。

控件 元件 关键设置
报警列表 报警显示(或事件显示) 显示全部/未确认报警,一行一条,可上下滚动/翻页
顶部滚动条 报警条 一行滚动显示最新报警(同 X1Y1 的报警行)
报警确认 报警显示元件属性 → 「确认地址」 = LW-__ 操作员确认时,系统把该报警的确认值写入此地址(PLC 可读,用于联动/记录)
清除(当前记录) 位状态设置 → LB-9021(OFF→ON 重置当前事件记录) 系统位
删除事件记录文件 位状态设置 → LB-9023(删除 HMI 内存全部事件记录) 系统位
翻页 / 确认按钮 报警显示元件自带按钮,或自定义功能键 —

做法

  1. 工程文件 → 事件/报警 里逐条建立报警(地址、触发条件、文字、颜色、类别)。
  2. 在 Y6 页放 报警显示 元件(多行列表);X1Y1 等页放 报警条 元件(一行滚动)。
  3. 报警显示的属性里设 确认地址,并为每条报警配确认值 → 操作员确认后写回该地址给 PLC。
  4. 需要"清除"按钮就放 位状态设置 写 LB-9021(重置)/LB-9023(删除文件)。
  5. 4 个 Y6 页可共用同一套事件登录,也可按类别过滤(配料/制丸/清洗各自的报警)。

7.8 弹窗规范(统一用直接窗口)

  • 所有弹窗(11/12/13/14/15)都用 直接窗口元件,放在 100 号公共窗口,由触发位置位弹出。
  • 关键:直接窗口元件属性里的 「重叠」必须选「独立窗口」(cMT/cMT X),否则子窗口画在公共窗口那一层,会被主画面元素盖住;选「独立窗口」后显示在当前画面之上。
  • 弹窗内容做在各自窗口里;关闭用宏清位(如 close-msg 清 LB-110)。
弹窗 触发位 窗口号
无权限提示 LB-110 11
修改时间 LB-120 12
关于 LB-123 13
用户管理 LB-122 14
删除确认 LB-121 15

8. 素材清单(pic/)

素材 说明
common-bg.png / bottom-y.png 早期背景与按钮底板
white-bg.png 1920×1080 纯白底
transparent.png 240×48 全透明(透明功能键底图)
start-bg.png / start-equip.png 启动屏厂区航拍 / 设备渲染
pid-illustration.png / btn-back.png / btn-next.png / pid-logo.png 点检页素材(取自 XD B_PID)
lwaddr.csv 系统地址大全

9. 变更记录(里程碑)

日期 内容
09-23 解包分析现有工程;确定机型/分辨率/运行时与 XD 设计源
09-23 建立窗口骨架与命名规则(X1X4 × Y1Y7 → 101~128)
09-23 导航机制落地:宏算 LW-2 + PLC 控制元件切换基本窗口
09-23 完成登录页、权限控制(LW-9222)、按钮宏与无权限弹窗
09-24 完成用户管理(索引命令)、点检页、关于页、修改时间、PLC 联机状态、登录提示框
09-24 文档精简;准备开始 28 个主画面的设计