文档:补录 12 条宏正文(039~050),更新清单状态与 5 个存疑点

- x2y2-focus-area1~3/close:win=30/31/32,关=0
- IO切换上料/清洗/制丸:写 LW-300 组索引 + LW-2 窗口
- 上料参数:LW-2=210(与清洗-点动重名,存疑)
- 温度监控/出条温度监控:float 拷贝长度与注释不符
- 屏蔽通讯异常提示:100ms 周期压 LB-11960~11967
- IO:050 只补到第 6 组,其余待补
- 新增 6.2.1 问题清单(LW-300 双占用等)
This commit is contained in:
2026-10-27 13:50:33 +08:00
parent d3e70a3985
commit 927145de45
+149 -23
View File
@@ -14,7 +14,7 @@
| 001~007 | `btn-y1`~`btn-y7` | — | Y 页签导航(权限 + 页面存在位图) | 有正文 |
| 008~011 | `btn-x1`~`btn-x4` | — | X 页签导航 | 有正文 |
| 012 | `btn-login-index` | — | 索引登入 + 内联提示映射 | 有正文 |
| 013 | `macro_13` | — | **未命名宏**,疑似废弃残留 | **未记录** |
| 013 | `macro_13` | — | **空宏**:只有 `macro_command main()` / `end macro_command`,无任何语句;无执行条件、非周期、非开机 | ✅ 已核对:**可删** |
| 014 | `close-msg` | — | 关 11 号无权限窗 | 有正文 |
| 015~017 | `open-time` / `set-time` / `close-time` | — | 修改时间 | 有正文 |
| 018 | `logout` | — | 注销并回 10 号窗 | 有正文 |
@@ -28,16 +28,16 @@
| 036 | `line-ab-switch` | — | A/B 线切换(仅 role=1) | 有正文 |
| 037 | `net-apply` | I | 网络参数套用(HMI + 设备 4/5 IP) | 有正文(10-27 已加 IP 保护) |
| 038 | `net-read` | — | 系统网络值 → 暂存 `RW` | 有正文 |
| 039~041 | `x2y2-focus-area1`~`area3` | — | X2Y2 三区聚焦 → `LW-50` | **正文缺失**(旧文档写作 `area-1~3`,名字已不符) |
| 042 | `IO切换上料` | — | 待确认(疑似 IO 监控页切换) | **未记录** |
| 043 | `x2y2-focus-area-close` | — | 关区域弹窗(`LW-50=0`) | **正文缺失**(旧文档写作 `area-close`) |
| 044 | `IO切换清洗` | — | 待确认 | **未记录** |
| 045 | `IO切换制丸` | — | 待确认 | **未记录** |
| 046 | `上料参数` | — | 待确认 | **未记录** |
| 047 | `温度监控` | P | 周期采集/判断温度 | **未记录** |
| 048 | `屏蔽通讯异常提示` | P | 周期置 ON `LB-11960~11967`(设备 1~8 的 “Device No Response”) | **未记录**(旧文档只提 11963/11964) |
| 049 | `出条温度监控` | P | 周期监控出条温度 | **未记录** |
| 050 | `IO` | — | 待确认 | **未记录** |
| 039~041 | `x2y2-focus-area1`~`area3` | — | X2Y2 三区聚焦 → `LW-50` = 30/31/32 | 已补录(6.2) |
| 042 | `IO切换上料` | — | IO 组索引 9 → `LW-300`,窗口 158 | 已补录(6.2) |
| 043 | `x2y2-focus-area-close` | — | 关区域弹窗(`LW-50=0`) | 已补录(6.2) |
| 044 | `IO切换清洗` | — | IO 组索引 15 → `LW-300`,窗口 168 | 已补录(6.2) |
| 045 | `IO切换制丸` | — | IO 组索引 1 → `LW-300`,窗口 151 | 已补录(6.2) |
| 046 | `上料参数` | — | 窗口 210(与「清洗-点动」重名,存疑) | 已补录(6.2) |
| 047 | `温度监控` | P(1s) | 读 16 个 REAL(`HMI_EM02.Temperature_PV`)→ `LW-200` | 已补录(6.2) |
| 048 | `屏蔽通讯异常提示` | P(100ms) | 周期置 ON `LB-11960~11967`(设备 1~8 的 “Device No Response”) | 已补录(6.2) |
| 049 | `出条温度监控` | P(1s) | 读 10 个 REAL(`HIKMICRO_Temp_R`)→ `LW-240` | 已补录(6.2) |
| 050 | `IO` | P(100ms) | 按 `LW-300` 索引读 `PLC.Tags.Table.Local_*` | ⚠ 已补 1~6 组,7 以后待补 |
### 6.0.1 与旧文档的差异(已确认)
@@ -45,19 +45,21 @@
2. **48 号宏 `屏蔽通讯异常提示` 是周期执行(P)**,不是开机一次;它把 `LB-11960~11967` 八台设备全屏蔽,不是文档写的 63/64 两台。
3. **7 条宏文档完全没有**:`macro_13`、`IO切换上料`、`IO切换清洗`、`IO切换制丸`、`上料参数`、`温度监控`、`出条温度监控`、`IO`(含 3 条周期温度宏)。
4. **ID 031 缺失**(工程里已删除,文档无记录)。
5. `macro_13` 未命名,建议确认是否可删。
5. `macro_13`(ID 013)是**空宏**(无语句、无执行条件),建议直接删除,不留占位。
### 6.0.2 待补正文(按优先级)
| 优先 | 宏 | 需要的确认 |
|---|---|---|
| 高 | `x2y2-focus-area1~3`、`-close` | ~~`LW-50` 是 30~32 还是 141~144~~ → **已确认 30/31/32**(工程窗口表) |
| 高 | `net-apply` | 新工程是否已含“IP 首段为 0 不覆盖”保护 |
| 中 | `IO切换上料/清洗/制丸`、`IO` | 是否属于 IO 监控页的页签切换,地址用哪批 |
| 中 | `上料参数` | 是否写 PLC 配方参数 |
| 低 | `温度监控`、`出条温度监控` | 周期时间、报警阈值地址 |
| 低 | `macro_13` | 是否废弃可删 |
### 6.0.2 核对状态(2026-10-27 收尾)
| 项 | 状态 |
| --- | --- |
| 38 条原有正文 | 与工程一致,未发现改动 |
| 039/040/041/043(区域弹窗) | ✅ 已补录:`win` = 30 / 31 / 32,关闭写 0 |
| 042/044/045(IO 切换) | ✅ 已补录:写 `LW-300`=组索引、`LW-2`=窗口 |
| 046(上料参数) | ✅ 已补录,但**窗口 210 与「清洗-点动」重名,存疑** |
| 047/049(温度) | ✅ 已补录,但 **float 拷贝长度与注释不符**(见 6.2.1) |
| 048(屏蔽通讯) | ✅ 已补录:100 ms 周期压 8 个位 |
| 050(IO) | ⚠ **只补到第 6 组**,7 以后的分支待补 |
| 013(macro_13) | ✅ 空宏,可删 |
| 000(main-init) | ⚠ 待核对:窗口扩到 282 后 `LW-70~73` 位图值是否仍为 127/18/127/18 |
## 6.1 宏正文(逐行注释)
> 命名:导航 = `btn-*`、登录 = `main-init`/`btn-login-index`/`logout`、管理员登录 = `admin-open`/`admin-login`/`admin-close`、用户管理 = `user-open` + `usr-*`(你的工程删除类为 `usr-delete*`)、关于窗 = `about-open`/`about-close`、时间 = `open-time`/`set-time`/`close-time`、弹窗 = `close-msg`/`close-nopage`。
@@ -1137,4 +1139,128 @@ end macro_command // 宏结束
**只有 3 个区域**(原第④区已并入③),没有 area-4。
**窗口号已确认**:工程窗口表里 `30/31/32 = x2y2-focus-area1/2/3`,所以 `LW-50` 写的是 **30/31/32**;旧版本节写的 `141/142/143` 作废(`地址表.md` 5.1 已同步)。
**窗口号已确认**:工程窗口表里 `30/31/32 = x2y2-focus-area1/2/3`,所以 `LW-50` 写的是 **30/31/32**;旧版本节写的 `141/142/143` 作废(`地址表.md` 5.1 已同步)。
---
## 6.2 补录:2026-10-27 从工程逐个截图核对的宏
> 以下正文与 EB 宏编辑器里的实际内容一致(编号/名称取自宏列表)。执行条件:无标记=按钮触发;`P`=周期执行。
**`x2y2-focus-area1`(ID 039)**
```
macro_command main() // 宏入口:点该区域时执行
short win = 30 // 目标弹窗窗口号
SetData(win, "Local HMI", LW, 50, 1) // 写 LW-50 → 间接窗口显示 30
end macro_command // 宏结束
```
**`x2y2-focus-area2`(ID 040)**:同上,`win = 31`(显示 31)
**`x2y2-focus-area3`(ID 041)**:同上,`win = 32`(显示 32)
```
macro_command main() // 宏入口:关闭区域弹窗
short z = 0 // 常量 0
SetData(z, "Local HMI", LW, 50, 1) // 写 LW-50=0 → 间接窗口收起
end macro_command // 宏结束
```
(`x2y2-focus-area-close`,ID 043)
**`IO切换上料`(ID 042)/ `IO切换清洗`(ID 044)/ `IO切换制丸`(ID 045)**
三支结构相同,只有两个常量不同:
```
macro_command main()
unsigned char byteA, byteB
byteA = 9 // → LW-300:IO 组索引(供 050 IO 判断)
byteB = 158 // → LW-2:目标窗口号
SetData(byteA, "Local HMI", LW, 300, 1)
SetData(byteB, "Local HMI", LW, 2, 1)
end macro_command
```
| 宏 | `byteA`(LW-300) | `byteB`(LW-2 → 窗口) | 对应窗口 |
| --- | --- | --- | --- |
| `IO切换上料` | 9 | 158 | 158 = 上料-IO监控DI1-2 |
| `IO切换清洗` | 15 | 168 | 168 = 清洗-IO监控DO11-12 |
| `IO切换制丸` | 1 | 151 | 151 = 制丸-IO监控DI1-2 |
**`上料参数`(ID 046)**
```
macro_command main()
unsigned char byteB
byteB = 210 // 目标窗口号
SetData(byteB, "Local HMI", LW, 2, 1)
end macro_command
```
> ⚠ **存疑**:窗口 210 在工程窗口表里是「清洗-点动」,不是上料参数页。要么宏值过时,要么窗口被改作他用,需现场确认。
**`温度监控`(ID 047,周期 10×100ms = 1 s)**
```
macro_command main()
float temp[16] // 16 个 REAL,每个占 2 个 LW
GetData(temp[0], "制丸1", "PLC.Blocks.HMI_EM02.Temperature_PV[1]", 0, 16)
SetData(temp[0], "Local HMI", LW, 200, 16)
end macro_command
```
> ⚠ **长度存疑**:`float` 每个占 2 个寄存器,16 个 REAL = 32 字(LW200~231)。但 `SetData(..., LW, 200, 16)` 只写 16 字 = 8 个 REAL。注释写的 `[16]→LW230/231` 与调用参数**必有一处错**,需核对显示元件的地址范围。
**`出条温度监控`(ID 049,周期 10×100ms = 1 s)**
```
macro_command main()
float temp[10]
GetData(temp[0], "制丸1", "PLC.Blocks.HMI_EM02.HIKMICRO_Temp_R[1]", 0, 10)
SetData(temp[0], "Local HMI", LW, 240, 10)
end macro_command
```
> ⚠ 同上:10 个 REAL = 20 字(LW240~259),`count=10` 只覆盖到 LW249。
**`屏蔽通讯异常提示`(ID 048,周期 1×100ms = 100 ms)**
```
macro_command main()
short ON
ON = 1
SetData(ON, "Local HMI", LB, 11960, 1)
SetData(ON, "Local HMI", LB, 11961, 1)
SetData(ON, "Local HMI", LB, 11962, 1)
SetData(ON, "Local HMI", LB, 11963, 1)
SetData(ON, "Local HMI", LB, 11964, 1)
SetData(ON, "Local HMI", LB, 11965, 1)
SetData(ON, "Local HMI", LB, 11966, 1)
SetData(ON, "Local HMI", LB, 11967, 1)
end macro_command
```
> 含义:每 100 ms 把**设备 1~8** 的 "Device No Response" 弹窗全部压回屏蔽。要恢复提示必须改这支宏。周期可放宽到 1 s,没必要 100 ms。
**`IO`(ID 050,周期 1×100ms = 100 ms)——正文待补后半段**
```
macro_command main()
short bTrigger
unsigned char byteA, byteB, byteC, byteD
bTrigger = 0
byteA = 0
byteB = 0
byteC = 0
byteD = 0
GetData (bTrigger, "Local HMI", LW, 300, 1) // IO 组索引(由 042/044/045 写入)
if bTrigger==1 then // 制丸 DI1-2
GetData (byteA, "制丸1", "PLC.Tags.Table.Local_DI01A", 1)
GetData (byteB, "制丸1", "PLC.Tags.Table.Local_DI01B", 1)
GetData (byteC, "制丸1", "PLC.Tags.Table.Local_DI02A", 1)
GetData (byteD, "制丸1", "PLC.Tags.Table.Local_DI02B", 1)
end if
...(2=DI3-4、3=DI5-6、4=DO1-2、5=DO3-4、6=上料 DI1-2 …)
end macro_command
```
> 已看到 1~6 组;**6 之后的分支待补**。注意它读的是 `PLC.Tags.Table.Local_*` 这一族符号(不是 `HMI_EM02` DB)。
### 6.2.1 补录时发现的问题
| # | 问题 | 影响 |
| --- | --- | --- |
| 1 | **`LW-300` 被两处占用**:`X1Y1` 文档里是「节点状态」首地址;现在 042/044/045 写它、050 读它 | 若 X1Y1 仍用 `LW-300~311`,节点状态会被 IO 索引覆盖 |
| 2 | `上料参数` 写 `LW-2 = 210`,而 210 是「清洗-点动」 | 点“上料参数”会跳到清洗点动页 |
| 3 | 047/049 的 float 拷贝长度与注释不符 | 显示可能只更新一半点位 |
| 4 | 048 周期 100 ms 写 8 个位 | 无谓负载,建议 1 s |
| 5 | 050 周期 100 ms 读 4×N 个符号 | IO 页不看时也在刷,建议改成按页面触发 |