文档:设备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
+28 -24
View File
@@ -108,15 +108,18 @@
> 一套工程,上料屏 / 制丸A屏 / 制丸B屏通用;换屏、换 PLC 只在 **13 号窗**改配置,现场不需要 EasyBuilder。
**工程里的设备划分(两个以太网设备槽)**
**工程里的设备划分(两个以太网设备槽)— 10-27 按 EB 设备列表核对**
| 设备 | 绑定内容 | 上料屏 | 制丸A屏 | 制丸B屏 |
| --- | --- | --- | --- | --- |
| `设备4`:上料 PLC | X1/X2 画面、C 组数据 | 上料 PLC 的 IP | 上料 PLC 的 IP | 上料 PLC 的 IP |
| `设备5`:制丸 PLC | X3/X4 画面、D 组数据 | A 或 B(D 登录后切) | A 的 IP | B 的 IP |
> **注意:设备 4 是制丸、设备 5 是上料,和旧文档正好相反。**
- 制丸A屏、制丸B屏各自只连「自己的 PLC + 上料 PLC」,**互相看不见**;
- 上料屏 D 登录:用「A/B 切换」按钮在 `设备5` 的 IP 间切(同一时间看一条线);**默认 A,只有人工切换才到 B,重启回 A**;按钮暂放 13 号窗(能开 13 号窗的是工程师 A / admin),后续再移到制丸页给 D 用;
| 设备 | 实际名称 | 当前 IP | 绑定内容 |
| --- | --- | --- | --- |
| `设备4`:**制丸 PLC** | `制丸1` | `192.168.189.22:102` | X3/X4 画面、D 组数据 |
| `设备5`:**上料 PLC** | `上料清洗` | `192.168.189.2:102` | X1/X2 画面、C 组数据 |
- 两台都是 `Siemens S7-1200/S7-1500 (S7CommPlus, Symbolic Addressing)`,**符号寻址**——元件绑的是 DB 名.变量名,不是绝对地址;
- 制丸A屏、制丸B屏各自只连「自己的制丸 PLC(设备4)+ 上料 PLC(设备5)」,**互相看不见**;
- 上料屏 D 登录:用「A/B 切换」按钮在**设备4**(制丸)的 IP 间切(同一时间看一条线);**默认 A,只有人工切换才到 B,重启回 A**;
- 换屏 / 换 PLC:备件装同程序 → 13 号窗填 IP/角色 → 点「应用」即可。
**13 号窗字段(全部存 `RW`,掉电保持)**
@@ -124,21 +127,22 @@
| 字段 | 地址 | 写入的系统寄存器 |
| --- | --- | --- |
| HMI IP / 掩码 / 网关 | `RW-20`~`31` | `LW-9129`~`9132` / `LW-10750`~`10753` / `LW-9125`~`9128` + `LB-12094`(备屏/换屏用;HMI 固定 IP 必填) |
| 上料 PLC IP | `RW-40`~`43` | `LW-9600`~`9603`(设备4) + `LB-10070` |
| 制丸A PLC IP | `RW-44`~`47` | 选 A 时 → `LW-9605`~`9608`(设备5) + `LB-10071` |
| 制丸B PLC IP | `RW-48`~`51` | 选 B 时 → `LW-9605`~`9608`(设备5) + `LB-10071` |
| 上料 PLC IP | `RW-40`~`43` | `LW-9605`~`9608`(**设备5**) + `LB-10071` |
| 制丸A PLC IP | `RW-44`~`47` | 选 A 时 → `LW-9600`~`9603`(**设备4**) + `LB-10070` |
| 制丸B PLC IP | `RW-48`~`51` | 选 B 时 → `LW-9600`~`9603`(**设备4**) + `LB-10070` |
| 本机角色 | `RW-60`:1=上料屏 / 2=制丸A屏 / 3=制丸B屏 | 角色 2/3 自动锁线别;**角色=0 不连制丸设备(防误连)** |
| 制丸线选择 | `RW-61`:1=A 线 / 2=B 线 | 上料屏手动选;制丸屏由角色决定 |
> 设备槽号按你工程实际(以太网设备从 4 号起):设备5 → `LW-9605`/`LB-10071`,设备6 → `LW-9610`/`LB-10072`。设备号查看:EB Pro 设备列表,或显示 `LW-9300`~`9306`(0=该槽无设备)。
> 设备槽号按工程实际(以太网设备从 4 号起):`设备4` → `LW-9600`/`LB-10070`,`设备5` → `LW-9605`/`LB-10071`,`设备6` → `LW-9610`/`LB-10072`。设备号查看:EB Pro 设备列表,或显示 `LW-9300`~`9306`(0=该槽无设备)。
> **`net-apply` 里的写法与上表一致(代码正确),但脚本注释把「设备4/设备5」写反了**,改注释即可,**不要改数字**。
**切换互锁(防旧数据/防误操作)**
| 用途 | 地址 | 说明 |
| --- | --- | --- |
| 设备4 通讯状态 | `LB-10100` | 上料 PLC:ON=已连接;写 ON 可重连一次 |
| 设备5 通讯状态 | `LB-10400` | 制丸 PLC:ON=已连接;写 ON 可重连一次 |
| 错误码 | `LW-9403` / `LW-9404` | 设备4 / 设备5 |
| 设备4 通讯状态 | `LB-10100` | **制丸 PLC**:ON=已连接;写 ON 可重连一次 |
| 设备5 通讯状态 | `LB-10400` | **上料 PLC**:ON=已连接;写 ON 可重连一次 |
| 错误码 | `LW-9403` / `LW-9404` | 设备4(制丸)/ 设备5(上料) |
| 禁止系统弹窗 | `LB-11963` / `LB-11964` | 置 ON:不弹设备4/5 的 “Device No Response” |
- 制丸页放「通讯正常」指示灯 = `LB-10400`;A/B 切换后(或刚上电)**等它变 ON 再操作**,避免按到旧画面数据;
@@ -152,27 +156,27 @@
```mermaid
graph LR
P1["S7-1500<br/>上料/配料 PLC"]
PA["S7-1500<br/>制丸A PLC"]
P1["S7-1500<br/>上料 PLC<br/>192.168.189.2"]
PA["S7-1500<br/>制丸A PLC<br/>192.168.189.22"]
PB["S7-1500<br/>制丸B PLC"]
H1["HMI 上料屏<br/>role=1"]
H2["HMI 制丸A屏<br/>role=2"]
H3["HMI 制丸B屏<br/>role=3"]
H1 -- "设备4" --> P1
H1 -. "设备5(A/B 可切)" .-> PA
H1 -- "设备5" --> P1
H1 -. "设备4(A/B 可切)" .-> PA
H1 -.-> PB
H2 -- "设备4" --> P1
H2 -- "设备5" --> PA
H3 -- "设备4" --> P1
H3 -- "设备5" --> PB
H2 -- "设备5" --> P1
H2 -- "设备4" --> PA
H3 -- "设备5" --> P1
H3 -- "设备4" --> PB
```
**说明**
- 一套工程烧 3 台屏;装机时在 13 号窗设:本机角色 `RW-60`、线别 `RW-61`、上料 IP `RW-40~43`、制丸A IP `RW-44~47`、制丸B IP `RW-48~51` → 点「应用」;
- 用户组:C(上料)→ X1/X2(绑 `设备4`);D(制丸)→ X3/X4(绑 `设备5`);`admin` 全开;
- 用户组:C(上料)→ X1/X2(绑 `设备5` 上料);D(制丸)→ X3/X4(绑 `设备4` 制丸);`admin` 全开;
- 制丸A屏只连「A 的 PLC + 上料 PLC」;制丸B屏只连「B 的 PLC + 上料 PLC」;**A/B 互不可见**;
- 上料屏 D 登录后可用「A/B 切换」按钮切换 `设备5` 指向(仅 role=1 生效);按钮暂放 13 号窗,后续再移到制丸页。
- 上料屏 D 登录后可用「A/B 切换」按钮切换 `设备4` 指向(仅 role=1 生效);按钮暂放 13 号窗,后续再移到制丸页。
### 5.10 双电控电磁阀(建议,待 PLC 确认)
+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 生效)
```
+17 -10
View File
@@ -143,7 +143,7 @@ XD 画板:`A_start`、`B_PID`、`C_运行1~3`、`D_点动1/2`、`E_配方1~3`
- HMI IP / 掩码 / 网关 → `RW-20`~`31`(备屏/换屏用;HMI 固定 IP 必填);
- 上料 PLC IP → `RW-40`~`43`;制丸A PLC IP → `RW-44`~`47`;制丸B PLC IP → `RW-48`~`51`;
- 「应用」→ `net-apply`;窗口开启时执行 `net-read`(进窗自动带出当前值,不需要单独做「读取当前」按钮)。
- 上料屏在 13 号窗设置区放「A/B 切换」按钮 → `line-ab-switch`(只切 `设备5` 的 IP 并重连;**仅本机角色=1 生效**,A/B 屏误点无效);旁边放当前线别显示(读 `RW-61`)。
- 上料屏在 13 号窗设置区放「A/B 切换」按钮 → `line-ab-switch`(只切 `设备4` 的 IP 并重连;**仅本机角色=1 生效**,A/B 屏误点无效);旁边放当前线别显示(读 `RW-61`)。
- **现场无需 EB**:换屏/换 PLC 只填这一页,点「应用」即可。
### 7.6 修改时间(12 号窗)
@@ -362,16 +362,16 @@ XD 画板:`A_start`、`B_PID`、`C_运行1~3`、`D_点动1/2`、`E_配方1~3`
| 屏幕 | 角色 `RW-60` | 连哪两台 PLC | 能看到 |
| --- | --- | --- | --- |
| 上料屏 | 1 | 上料(设备4)+ 制丸 A 或 B(设备5,可切) | 上料段 + 当前选的制丸线 |
| 制丸A屏 | 2 | 上料(设备4)+ 制丸A(设备5) | 上料段 + A 线 |
| 制丸B屏 | 3 | 上料(设备4)+ 制丸B(设备5) | 上料段 + B 线 |
| 上料屏 | 1 | 上料(**设备5**)+ 制丸 A 或 B(**设备4**,可切) | 上料段 + 当前选的制丸线 |
| 制丸A屏 | 2 | 上料(**设备5**)+ 制丸A(**设备4**) | 上料段 + A 线 |
| 制丸B屏 | 3 | 上料(**设备5**)+ 制丸B(**设备4**) | 上料段 + B 线 |
- 用户组:C → X1/X2(绑设备4);D → X3/X4(绑设备5);`admin` 全开;
- 用户组:C → X1/X2(绑**设备5** 上料);D → X3/X4(绑**设备4** 制丸);`admin` 全开;
- 制丸A/B 互不可见:各屏只连自己那条线 + 上料;唯一例外是上料屏(D 登录可切 A/B)。
### 9.2 EB Pro 一次性改造
1. **设备列表**:确认以太网 PLC 占设备4/设备5;X1/X2 与 C 组数据绑设备4,X3/X4 与 D 组数据绑设备5。
1. **设备列表**(10-27 实测):`设备4 = 制丸1(192.168.189.22)`、`设备5 = 上料清洗(192.168.189.2)`;X1/X2 与 C 组数据绑**设备5**,X3/X4 与 D 组数据绑**设备4**。
2. **13 号窗设置区**(`RW` 全部掉电保持):
- 本机角色 `RW-60`(1 上料 / 2 制丸A / 3 制丸B)、线别 `RW-61`(1=A / 2=B);
- HMI IP/掩码/网关 `RW-20~31`(备屏/换屏用;HMI 固定 IP 必填);
@@ -457,15 +457,21 @@ XD 画板:`A_start`、`B_PID`、`C_运行1~3`、`D_点动1/2`、`E_配方1~3`
**S7-1500 三查**
1. CPU 属性 → 防护与安全 → 连接机制 → 勾选 **「允许来自远程伙伴的 PUT/GET 通信访问」**;
2. 用到的 DB 取消 **「优化的块访问」**;
2. 本工程是 **S7CommPlus + 符号寻址**,所以**不需要**取消「优化的块访问」;要查的是**符号名(DB 名 / 变量名)与 PLC 里是否一致**、以及**元件绑对了设备没有**;
3. PC 与 PLC 同网段,Windows 防火墙放行 EasyBuilder。
> **红色地址注释不是"地址写错"的证据**:编辑区里元件上压着的那行红色小字(物件名 + 完整地址 + 删除线)是 EB Pro 的地址注释。本次 201 这批元件的地址能正常编译、下载(校验和正常),所以不要只凭红字判断地址无效——按上面的 LB 替换法分叉判断。
>
> 现场真屏断通讯时这些元件同样不显示,属正常行为——先查通讯,不要改画面。但**必须补一条显式提示**(见下),否则操作员看到整片空白会误以为程序坏了或按钮丢了。
**新增线索(10-27)**:工程里 `net-apply` 的实际代码把**上料 IP 写进 `LW-9605`(设备5)**、**制丸 IP 写进 `LW-9600`(设备4)**,与注释和 5.8 的规划相反(系统定义见 `lwaddr.csv`:`LW-9600`=设备4、`LW-9605`=设备5、`LB-10070`/`LB-10071` 分别重连设备4/5)。
若设备列表里设备4确实是上料 PLC,则两台设备会**连到对方的 PLC**——S7 能连上,但读到对方不存在的 DB 时,元件同样**整片不显示**,与 201 的现象吻合。判断方法与两种修法见 `宏指令.md` 的 `net-apply` 段。
**已确认(10-27,EB 设备列表)**:`设备4 = 制丸1(192.168.189.22)`、`设备5 = 上料清洗(192.168.189.2)`,两台都是 **S7CommPlus + Symbolic Addressing(符号寻址)**。
所以 `net-apply` 里「上料 IP → `LW-9605`/`LB-10071`(设备5)、制丸 IP → `LW-9600`/`LB-10070`(设备4)」**是对的**;写反的只是**脚本注释**(详见 `宏指令.md` 的 `net-apply` 段,只改注释、别改数字)。
**对 201 的意义(重点)**:既然用符号寻址,元件绑的是「DB 名.变量名」而不是绝对地址。
- **201 =「上料-输送2」,其元件必须绑 `设备5`(上料清洗)**;若误绑成 `设备4`(制丸1),就会去制丸 PLC 上找上料的符号 → **找不到 → 该元件整片不画**,而其它上料页正常 —— 与现象完全吻合;
- 同理,**块名 / 变量名与 PLC 不一致**(改名、加前缀、DB 号变化)也会得到同样结果;
- 所以「符号名 + 设备绑定」这两项,比查网络更值得先看。
**通讯中断时的界面提示(待做)**
@@ -523,4 +529,5 @@ XD 画板:`A_start`、`B_PID`、`C_运行1~3`、`D_点动1/2`、`E_配方1~3`
| 10-27 | **10.1 修正**:现场实测在线模拟、离线模拟、真屏**三处都不显示**,原「离线模拟正常」不成立;改为「A 地址/通讯 vs B 元件属性」两分支 + LB 替换一步判定法;明确红色地址注释不能当作地址错误的判据;新增「通讯中断界面提示」待办 |
| 10-27 | `.gitignore` 改为通配:`unitouch*.cxob` / `unitouch*.debug` / `unitouch*.cmtp.bak*` |
| 10-27 | **窗口表按工程实际重建**(3.1/3.2):系统窗实为 3~9;`30~32` = x2y2-focus-area1~3,确认 `LW-50`=`30/31/32`(旧记 141~144 作废);新增 **130~282 约 90 个窗口**(清洗参数/制丸/IO/上料/清洗/各类弹窗);**201=上料-输送2** |
| 10-27 | 宏清单按工程实际核对(见 `宏指令.md` 6.0):50 条、缺 ID 031;区域宏实名 `x2y2-focus-area*`;48 号 `屏蔽通讯异常提示` 是**周期执行**并屏蔽 `LB-11960~11967` 八台设备;新增 7 条未入档宏 |
| 10-27 | 宏清单按工程实际核对(见 `宏指令.md` 6.0):50 条、缺 ID 031;区域宏实名 `x2y2-focus-area*`;48 号 `屏蔽通讯异常提示` 是**周期执行**并屏蔽 `LB-11960~11967` 八台设备;新增 7 条未入档宏 |
| 10-27 | **设备 4/5 定性**:EB 设备列表实测 `设备4=制丸1(192.168.189.22)`、`设备5=上料清洗(192.168.189.2)`,均为 S7CommPlus 符号寻址;`net-apply` 代码正确、仅注释写反(见 `宏指令.md`);10.1 增补「符号名 + 设备绑定」判据,删掉不适用的「取消优化块访问」 |