重置:仅保留最新版本快照
原 master 12f4831「更新工程/XD/素材 (x1Y2, 组1982)」。仓库瘦身:历史合并为单一根提交;unitouch.cxob(EB Pro 编译产物)不再入库。
This commit is contained in:
@@ -0,0 +1,567 @@
|
||||
# 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`**(Y1~Y3 全开放:取 A/B/C/D) Y4~Y7 仅 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-9017`~`9022` → `LW-40`~`45`,置 `LB-120` |
|
||||
| `set-time` | 12 号窗「设定」 | `LW-40`~`45` → `LW-9017`~`9022`(设置 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 110~1900,y 90~1000)**
|
||||
|
||||
| # | 区域 | 控件 | 元件 | 地址 | 位置(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-300`~`305`。
|
||||
11. 「状态设置」给 4 个状态配图/色:`0` 灰(未开始)、`1` 绿(进行中)、`2` 蓝(完成)、`3` 红(异常)。
|
||||
12. 复制这 6 个到第二组 `y = 560`,地址改 `LW-306`~`311`。
|
||||
|
||||
**③ 节点人工修正(显示+可改都用同一地址)**
|
||||
13. `元件 → 输入 → 数值`,放在每个节点下方:同 `x`、`y = 362`、`100×40`;地址=对应节点状态字(`LW-300`~`305`)。
|
||||
14. 属性 **「安全」页 → 操作类别 = 类别 A(工程师)**(只有工程师能改);可勾 **「操作前先确认」** 防误改。
|
||||
15. 第二组同样:`y = 622`,地址 `LW-306`~`311`。
|
||||
|
||||
**④ 圆形开关**
|
||||
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 | 建立窗口骨架与命名规则(X1~X4 × Y1~Y7 → 101~128) |
|
||||
| 09-23 | 导航机制落地:宏算 `LW-2` + PLC 控制元件切换基本窗口 |
|
||||
| 09-23 | 完成登录页、权限控制(`LW-9222`)、按钮宏与无权限弹窗 |
|
||||
| 09-24 | 完成用户管理(索引命令)、点检页、关于页、修改时间、PLC 联机状态、登录提示框 |
|
||||
| 09-24 | 文档精简;准备开始 28 个主画面的设计 |
|
||||
Reference in New Issue
Block a user