文档:设备4=制丸1、设备5=上料清洗(EB 设备列表实测),修正 net-apply 结论与 201 判据

- 地址表 5.8/5.9:设备 4/5 归属互换,补实测 IP 192.168.189.22 / 192.168.189.2,协议 S7CommPlus 符号寻址
- 宏指令 net-apply:确认代码正确、仅注释写反(上料 IP→设备5、制丸 IP→设备4)
- 开发主文件 9.x/10.1:设备引用同步互换;新增「符号名 + 设备绑定」判据;删除不适用的「取消优化块访问」
- 新增 tools/scan-plc.ps1:在不受沙箱限制的 PowerShell 里扫 102 端口并做 COTP 握手
This commit is contained in:
2026-10-27 11:56:23 +08:00
parent 200027fd02
commit 7bfe8945ef
4 changed files with 191 additions and 48 deletions
+19 -14
View File
@@ -1081,13 +1081,13 @@ end macro_command // 宏结束
> **IP 为 0 不覆盖(10-27 修订)**:`RW-40~51` 首段为 0(新屏未填、PC 模拟器空值)时跳过写入与重连。否则开机/在线模拟会把设备 IP 刷成 `0.0.0.0` 并主动重连 → 通讯必失败,绑 PLC 地址的元件整片不显示(详见 `开发主文件.md` 10.1)。
#### ⚠ 工程实际版(10-27 摘录)与上文的差异 —— 设备 4/5 疑似写反
#### ✅ 工程实际版(10-27 摘录)—— 已确认:**代码是对的,注释写反了**
工程里 `net-apply` 的实际代码是:
工程里 `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)」
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` 的系统定义:
@@ -1096,20 +1096,25 @@ GetData(v[0], RW, 44/48, 4)→ SetData(v[0], LW, 9600, 4) + SetData(on, LB, 1007
| --- | --- |
| `LW-9600`~`9603` | **设备 4** 的 IP0~IP3 |
| `LW-9605`~`9608` | **设备 5** 的 IP0~IP3 |
| `LB-10070` | 在线改 IP 后**重连设备 4** |
| `LB-10071` | 在线改 IP 后**重连设备 5** |
| `LB-10100` / `LB-10400` | 与**设备 4** / **设备 5** 的通讯状态 |
| `LB-10070` / `LB-10071` | 在线改 IP 后**重连设备 4 / 设备 5** |
| `LB-10100` / `LB-10400` | 与**设备 4 / 设备 5** 的通讯状态 |
即:**上料 IP 被写进了设备 5,制丸 IP 被写进了设备 4**,与注释和本文件 5.8 的规划正好相反。
**EB 设备列表实测(10-27)**:
两种可能,必须按现场确认(30 秒即可):
| 设备 | 名称 | IP | 协议 |
| --- | --- | --- | --- |
| 设备 4 | `制丸1` | `192.168.189.22:102` | S7CommPlus / Symbolic Addressing |
| 设备 5 | `上料清洗` | `192.168.189.2:102` | S7CommPlus / Symbolic Addressing |
| 可能 | 判断方法 | 结论 |
| --- | --- | --- |
| **A. 代码写反了** | EB「系统参数 → 设备列表」里设备 4 = 上料 PLC、设备 5 = 制丸 PLC(与文档一致) | 每次开机把两台 PLC 的 IP **互换**并重连;S7 能连上但读到的是**另一台 PLC 的 DB**,读到不存在的块就整片不显示 —— 与 201 的症状高度吻合 |
| **B. 设备分配写反了** | 设备列表里设备 4 实际是制丸、设备 5 是上料 | 宏是对的;要改的是 `地址表.md` 5.8、`开发主文件.md` 9.x 装机流程和 100 号窗 `LB-10100`/`LB-10400` 的标签 |
于是:**上料 IP → 设备 5、制丸 IP → 设备 4,与设备列表完全一致,代码正确**。写反的是脚本注释(和改版前的文档):
**另两处与上文不同**:① 没有 `v[0]==0` 的 IP 保护(新屏/模拟会把 IP 写成 `0.0.0.0`);② 末尾 `DELAY(1000)` 会让开机界面卡 1 秒。
- `// 写上料 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 秒。
**`line-ab-switch`**(13 号窗「A/B 切换」按钮;仅本机角色=1 生效)
```