文档:net-apply 定为唯一权威版本(设备4=制丸1 / 设备5=上料清洗,含 IP 保护,注释已改正)
This commit is contained in:
+26
-49
@@ -1013,7 +1013,12 @@ macro_command main() // 宏入口:进 13
|
||||
end macro_command // 宏结束
|
||||
```
|
||||
|
||||
**`net-apply`**(13 号窗「应用」按钮;另勾选宏属性「当 HMI 启动时即执行一次」,开机自动套用)
|
||||
**`net-apply`**(工程宏 ID 037;13 号窗「应用」按钮 + 宏属性勾「当 HMI 启动时即执行一次」)
|
||||
|
||||
> **设备归属(10-27 按 EB 设备列表实测,数字以此为准)**
|
||||
> `设备4 = 制丸1(192.168.189.22)`、`设备5 = 上料清洗(192.168.189.2)`,两台都是 S7CommPlus + 符号寻址。
|
||||
> 所以:**上料 IP → `LW-9605` / `LB-10071`(设备5)**,**制丸 IP → `LW-9600` / `LB-10070`(设备4)**。
|
||||
|
||||
```
|
||||
macro_command main() // 宏入口:点「应用」/ 开机自动套用
|
||||
short v[4] = {0,0,0,0} // 4 字暂存数组
|
||||
@@ -1026,7 +1031,7 @@ macro_command main() // 宏入口:点「
|
||||
GetData(hmi0, "Local HMI", RW, 20, 1) // 读 RW-20(HMI IP 第一段)
|
||||
GetData(role, "Local HMI", RW, 60, 1) // 读 RW-60(本机角色)
|
||||
GetData(line, "Local HMI", RW, 61, 1) // 读 RW-61(线别)
|
||||
if line == 0 then // 线别未设置/无效?
|
||||
if line == 0 then // 线别未设置?
|
||||
line = 1 // 默认 A 线
|
||||
end if // 结束判断
|
||||
if role == 1 then // 上料屏?
|
||||
@@ -1053,69 +1058,41 @@ macro_command main() // 宏入口:点「
|
||||
SetData(on, "Local HMI", LB, 12094, 1) // 置 LB-12094 → HMI 网络生效
|
||||
end if // 结束判断
|
||||
GetData(v[0], "Local HMI", RW, 40, 4) // RW → 上料 PLC IP
|
||||
if v[0] == 0 then // 上料 IP 没填(新屏/模拟)?
|
||||
v[0] = 0 // 不写、不重连,保留工程里的设备 IP
|
||||
else // 已填 → 套用
|
||||
SetData(v[0], "Local HMI", LW, 9600, 4) // 写上料 PLC(设备4)
|
||||
SetData(on, "Local HMI", LB, 10070, 1) // 重连设备4
|
||||
end if // 结束判断(防把设备 IP 刷成 0.0.0.0)
|
||||
if v[0] == 0 then // 没填(新屏/模拟)→ 不写、不重连
|
||||
v[0] = 0 // 保留工程里的设备 IP
|
||||
else // 已填 → 套用(设备5 = 上料清洗)
|
||||
SetData(v[0], "Local HMI", LW, 9605, 4) // 写设备5 IP
|
||||
SetData(on, "Local HMI", LB, 10071, 1) // 重连设备5
|
||||
end if // 结束判断
|
||||
if okp == 1 then // 需要连制丸设备?
|
||||
if line == 1 then // 选 A 线
|
||||
GetData(v[0], "Local HMI", RW, 44, 4) // RW → 制丸A IP
|
||||
else // 选 B 线
|
||||
GetData(v[0], "Local HMI", RW, 48, 4) // RW → 制丸B IP
|
||||
end if // 结束判断
|
||||
if v[0] == 0 then // 制丸 IP 没填?
|
||||
v[0] = 0 // 不写、不重连
|
||||
else // 已填 → 套用
|
||||
SetData(v[0], "Local HMI", LW, 9605, 4) // 写制丸 PLC(设备5)
|
||||
SetData(on, "Local HMI", LB, 10071, 1) // 重连设备5
|
||||
if v[0] == 0 then // 没填 → 不写、不重连
|
||||
v[0] = 0 // 保留工程里的设备 IP
|
||||
else // 已填 → 套用(设备4 = 制丸1)
|
||||
SetData(v[0], "Local HMI", LW, 9600, 4) // 写设备4 IP
|
||||
SetData(on, "Local HMI", LB, 10070, 1) // 重连设备4
|
||||
end if // 结束判断
|
||||
end if // 结束判断(角色=0:不连制丸设备,防误连)
|
||||
DELAY(1000) // 等 1 秒
|
||||
DELAY(1000) // 等 1 秒(嫌开机慢可改 300)
|
||||
SetData(z, "Local HMI", LB, 12094, 1) // 清 LB-12094
|
||||
SetData(z, "Local HMI", LB, 10070, 1) // 清 LB-10070
|
||||
SetData(z, "Local HMI", LB, 10071, 1) // 清 LB-10071
|
||||
end macro_command // 宏结束
|
||||
```
|
||||
|
||||
> **IP 为 0 不覆盖(10-27 修订)**:`RW-40~51` 首段为 0(新屏未填、PC 模拟器空值)时跳过写入与重连。否则开机/在线模拟会把设备 IP 刷成 `0.0.0.0` 并主动重连 → 通讯必失败,绑 PLC 地址的元件整片不显示(详见 `开发主文件.md` 10.1)。
|
||||
**与工程现版(10-27 摘录)的三个差别**
|
||||
|
||||
#### ✅ 工程实际版(10-27 摘录)—— 已确认:**代码是对的,注释写反了**
|
||||
|
||||
工程里 `net-apply` 的实际代码:
|
||||
|
||||
```
|
||||
GetData(v[0], RW, 40, 4) → SetData(v[0], LW, 9605, 4) + SetData(on, LB, 10071, 1) // 注释写「上料 PLC(设备4)」
|
||||
GetData(v[0], RW, 44/48, 4) → SetData(v[0], LW, 9600, 4) + SetData(on, LB, 10070, 1) // 注释写「制丸 PLC(设备5)」
|
||||
```
|
||||
|
||||
按 `lwaddr.csv` 的系统定义:
|
||||
|
||||
| 系统寄存器 | 含义 |
|
||||
| --- | --- |
|
||||
| `LW-9600`~`9603` | **设备 4** 的 IP0~IP3 |
|
||||
| `LW-9605`~`9608` | **设备 5** 的 IP0~IP3 |
|
||||
| `LB-10070` / `LB-10071` | 在线改 IP 后**重连设备 4 / 设备 5** |
|
||||
| `LB-10100` / `LB-10400` | 与**设备 4 / 设备 5** 的通讯状态 |
|
||||
|
||||
**EB 设备列表实测(10-27)**:
|
||||
|
||||
| 设备 | 名称 | IP | 协议 |
|
||||
| --- | --- | --- | --- |
|
||||
| 设备 4 | `制丸1` | `192.168.189.22:102` | S7CommPlus / Symbolic Addressing |
|
||||
| 设备 5 | `上料清洗` | `192.168.189.2:102` | S7CommPlus / Symbolic Addressing |
|
||||
|
||||
于是:**上料 IP → 设备 5、制丸 IP → 设备 4,与设备列表完全一致,代码正确**。写反的是脚本注释(和改版前的文档):
|
||||
|
||||
- `// 写上料 PLC(设备4)` → 应为 **设备5**
|
||||
- `// 重连设备4` → 应为 **重连设备5**
|
||||
- `// 写制丸 PLC(设备5)` / `// 重连设备5` → 应为 **设备4**
|
||||
|
||||
> **只改注释,不要改 9600/9605、10070/10071 的数字。**
|
||||
|
||||
**与上文(理想版)仍有的两处差异**:① 没有 `v[0]==0` 的 IP 保护(新屏/模拟会把 IP 写成 `0.0.0.0`);② 末尾 `DELAY(1000)` 会让开机界面卡 1 秒。
|
||||
| # | 现版 | 本节 |
|
||||
| --- | --- | --- |
|
||||
| 1 | 注释把设备号写反(`写上料 PLC(设备4)`) | 注释已改正;**数字一个没改** |
|
||||
| 2 | 无 `v[0]==0` 保护,RW 为空时把 IP 刷成 `0.0.0.0` | 首段为 0 跳过写入与重连 |
|
||||
| 3 | `DELAY(1000)` | 保留,可改 300 缩短开机等待 |
|
||||
|
||||
> `LB-11963`/`LB-11964` 那条屏蔽设备 1~8 通讯弹窗的宏(ID 048 `屏蔽通讯异常提示`,周期执行)与本宏无关,别混。
|
||||
**`line-ab-switch`**(13 号窗「A/B 切换」按钮;仅本机角色=1 生效)
|
||||
```
|
||||
macro_command main() // 宏入口:点 A/B 线切换按钮
|
||||
|
||||
Reference in New Issue
Block a user