文档:补录 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:
+148
-22
@@ -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`。
|
||||
@@ -1138,3 +1140,127 @@ 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 已同步)。
|
||||
---
|
||||
|
||||
## 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 页不看时也在刷,建议改成按页面触发 |
|
||||
|
||||
Reference in New Issue
Block a user