Files
weinviews-unitouch/设计文档/双电控电磁阀按钮设计.md
T
admin ebd6f1d585 文档:双电控阀按钮设计 + net-apply IP 保护 + 在线模拟排查
- 新增 7.9 阀门按钮(双电控二位五通)与 5.10 地址段,独立文档 双电控电磁阀按钮设计.md
- net-apply: RW-40~51 首段为 0 时跳过写设备 IP 与重连,防被刷成 0.0.0.0
- 新增 10.1 在线模拟元件不显示排查:设备未通讯时绑 PLC 地址的元件整片不画
- .gitignore 通配 unitouch*.cxob / *.debug / *.cmtp.bak*
2026-10-27 10:26:58 +08:00

215 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 双电控二位五通电磁阀 · HMI 按钮设计
> 适用:CMT2167X / EasyBuilder Pro 6.10;对象为**双线圈(双电控)二位五通**电磁阀。
> 前提:PLC 侧已分配 **2 个 DO**(A 线圈 = 开/工作,B 线圈 = 关/复位)。
>
> **一句话结论**:两个按钮都做成**复归型(点动)**,HMI 只发"命令脉冲";**脉宽、互锁、死区、超时全部放 PLC**;状态灯读**阀位记忆位**,绝不读 DO。
---
## 1. 先弄清这只阀的四个硬约束
| 特性 | 物理含义 | 对 HMI 的硬性要求 |
| --- | --- | --- |
| **双电控 = 记忆元件** | 线圈瞬时励磁即换向,断电后阀芯**保持**位置(无弹簧复位) | 按钮**必须点动**,不能自锁;状态不能用 DO 表示 |
| **线圈是脉冲工况** | 一般 0.1 s 级即可可靠换向;长期带电温升大、易烧 | 单次励磁 **0.2~0.5 s**,任何情况下不得长期 ON |
| **两线圈互斥** | 同时得电 → 阀芯卡死 / 两线圈短路 / 烧保险 / 烧 DO | 硬件 + PLC + HMI **三重互锁**,缺一不可 |
| **无中间位** | 只有"开/关"两个稳定态(不同于三位五通的中封/中泄) | 界面只允许两个状态,不要做"半开" |
> 顺带确认:若现场实际是**单电控(弹簧复位)**二位五通,则只有一个 DO,设计完全相反(保持型输出、断电气缸自动复位),不要套用本文。
---
## 2. 六个常见错法(会直接烧东西)
| 错法 | 后果 |
| --- | --- |
| 用「切换型/自锁」按钮直接写 DO | 按一下线圈长期带电 → 发热烧线圈;两个都自锁 → 双线圈同时得电 |
| 两个都点动,但**没有互锁** | 多点触控、两人同时按、屏幕粘滞 → 双线圈同时 ON |
| 指示灯取 DO 地址 | 脉冲只有 0.3 s,灯闪一下就灭,看不到阀位 |
| 把 DO=0 当成"阀已关" | 阀是记忆元件,脉冲过后 DO 必为 0,但阀可能仍是开 |
| HMI 做脉冲、PLC 不做边沿/脉宽 | HMI 卡死、通讯中断时 DO 状态不确定;重启后可能残留 ON |
| 急停指望"断阀电就复位" | 双电控断电保持,气缸不动;需另行设计泄压/复位 |
---
## 3. 三种按钮方案(先选型,再画)
| 方案 | 元件 | 适用 | 优点 | 缺点 |
| --- | --- | --- | --- | --- |
| **A 双点动按钮**(推荐) | 2 个 `位状态设置`(复归型)+ 2 个状态灯 | 已有 2 个 DO、要求分别点动;操作台式界面 | 最直观、和现有 DO 一一对应、易排故 | 占地方;必须靠互锁兜底 |
| B 单键翻转 | 1 个 `功能键` + 宏/PLC 取反 | 管路图上的小阀、密集布置 | 省空间 | 操作员要看清状态才敢按;误按即反向动作 |
| C 二位旋钮/选择开关 | 1 个 `多状态开关`(2 位:开/关) | 主管路阀、工艺关键阀 | 语义最清晰,天然不会"两个都按" | 占元件;自动模式下不好用 |
**本工程建议**:主管路/关键阀用 **C**,普通阀用 **A**;B 只用于画面极其拥挤的示意阀。以下按 **A 方案** 展开(C 方案仅把 2 个按钮换成 1 个多状态开关,PLC 侧逻辑相同)。
---
## 4. A 方案:EB Pro 元件做法
### 4.1 地址(建议值,落地前对一遍 `地址表.md` 并与 PLC 工程师确认)
| 信号 | 建议地址 | 方向 | 说明 |
| --- | --- | --- | --- |
| 开阀命令 | `LB-400` | HMI → PLC | **复归型**,按下 ON、松开 OFF |
| 关阀命令 | `LB-401` | HMI → PLC | **复归型** |
| 阀位 = 开 | `LB-402` | PLC → HMI | PLC 记忆位,供状态灯 |
| 阀位 = 关 | `LB-403` | PLC → HMI | PLC 记忆位 |
| 阀故障 | `LB-404` | PLC → HMI | 双线圈/超时/通讯异常 |
| 允许操作 | `LB-405` | PLC → HMI | 手动模式、无报警、通讯正常 |
> 每只阀占 8 位:阀 1 = `LB-400~407`,阀 2 = `LB-408~415`,依次类推。
> **不要直接写 PLC 的 `Q` 区**:HMI 写 `M`/`DB` 命令位,由 PLC 逻辑驱动 `Q`,否则手动/自动/安全逻辑会互相打架。
### 4.2 开阀按钮
1. `元件 → 按钮/开关 → 位状态设置`,放在 (860, 420),尺寸 `160×64`。
2. 「一般」页:**写入地址** = `LB-400`,**状态** = `ON`,**勾选「复归型」**。
- 效果:按住 = ON,松手 = 自动回 OFF → 这就是"点动手柄"。
- 不要勾「切换」;若用 `位状态切换开关`,把**输出类型**选 **「复归」**。
3. 「图形」页:未按下/按下各一张图(可用 `pic/machine/valve.png` 调色),文字 `开阀`;配色 **开 = 绿**。
4. 「安全」页:见 4.4 / 4.5。
> **可选**:若 PLC 侧实在不改(不做脉宽整形),改用 `位状态切换开关` 的**「触发」**类型,触发时间 `0.3 s`,由 HMI 自己产生脉宽。但这属于"把安全逻辑放在屏里",仅在无法改 PLC 时使用,且必须保留 PLC 侧互锁。
### 4.3 关阀按钮
同 4.2,写入地址 `LB-401`,位置 (1060, 420),文字 `关阀`,配色 **关 = 灰/红**。
### 4.4 互锁(HMI 侧,只防误触,不是安全措施)
`属性 →「安全」→ 勾「互锁」`:
| 元件 | 互锁条件 1 | 互锁条件 2 |
| --- | --- | --- |
| 开阀按钮 | `LB-401`(关阀命令)= ON | `LB-405`(允许操作)= OFF |
| 关阀按钮 | `LB-400`(开阀命令)= ON | `LB-405`(允许操作)= OFF |
条件成立时按钮**不可操作**(灰显/无反应)。互锁最多 2 个条件,正好够用。
> ⚠️ HMI 互锁挡不住**电容屏多点触控**:两根手指能同时按两个按钮。所以 **PLC 侧最后一道互锁(`Q_A := A AND NOT Q_B`)不可省**。
### 4.5 权限
按 `权限分配表.md`:`安全 → 操作类别` 只勾 A(工程师)/ B(管理员)/ D(制丸),无权限时**隐藏**或点了弹 11 号窗。
自动运行中禁止手动点动的,把 `LB-405`(允许操作)串进互锁条件 2,由 PLC 按"手动/自动"模式给。
### 4.6 状态显示(关键:不要读 DO)
1. `元件 → 指示灯 → 位状态指示灯`,读 `LB-402` / `LB-403`,尺寸 `24×24`,放在两个按钮正上方。
2. 管路图上的阀符号用 **图片切换**(`位状态切换开关` 只做显示、不写地址)或 **多状态指示灯**:
- 状态 0(`LB-403`=1)→ `pic/machine/分料阀.png` / `阀门开启.png` 的"关"位图;
- 状态 1(`LB-402`=1)→ "开"位图。
3. 需要"动作中"效果时,用 `LB-405` 或 PLC 的 `脉冲中` 位做闪烁,**不要**用 DO 地址。
### 4.7 状态与颜色约定
| 状态 | 显示 | 颜色 |
| --- | --- | --- |
| 开到位 | 实心圆 + 文字"开" | 绿 `#00A000` |
| 关到位 | 空心/实心 + 文字"关" | 灰 `#808080`(或红,按现场习惯) |
| 动作中(脉冲期) | 黄闪 + "动作中" | 黄 `#FFC000` |
| 故障 | 红闪 + 报警条 | 红 `#FF0000` |
| 无权限 / 不允许操作 | 灰 + 锁图标 | 灰 `#C0C0C0` |
| 通讯断 | 灰 + "—" | 灰 |
### 4.8 布局坐标(1920×1080,内容区 x110~1900 / y90~1000)
| 元件 | 位置(x,y) | 尺寸 |
| --- | --- | --- |
| 开阀按钮 | 860, 420 | 160×64 |
| 关阀按钮 | 1060, 420 | 160×64 |
| 阀符号 | 960, 400 | 80×80(放在两按钮中间上方) |
| 开/关状态灯 | 900, 380 / 1100, 380 | 24×24 |
| 阀名标签"XV-01" | 940, 340 | — |
---
## 5. PLC 侧必须做的(S7-1500,不能省)
HMI 只负责发"命令脉冲",下面 5 件事全部在 PLC 完成:
```scl
// ===================== 阀 V1 双电控二位五通 =====================
// HMI 写入的点动命令(复归型按钮,松手即 0)
// "HMI_DB".V1_OpenCmd / "HMI_DB".V1_CloseCmd
// 1) 脉冲整形:0.3 s 定长(按阀样本最小励磁时间,一般 0.1~0.5 s)
"TP_Open" (IN := "HMI_DB".V1_OpenCmd, PT := T#300ms);
"TP_Close"(IN := "HMI_DB".V1_CloseCmd, PT := T#300ms);
// 2) 死区:一侧刚失电后 150 ms 内不许另一侧动作(TOF 关断延时)
"TOF_DeadA"(IN := "V1_CoilA", PT := T#150ms); // A 输出期间 + 结束后 150ms 内为 1
"TOF_DeadB"(IN := "V1_CoilB", PT := T#150ms);
// 3) 最终输出(最后一道硬互锁:两线圈永不同时为 1)
"V1_CoilA" := "TP_Open".Q AND NOT "TOF_DeadB".Q AND NOT "V1_Fault";
"V1_CoilB" := "TP_Close".Q AND NOT "TOF_DeadA".Q AND NOT "V1_Fault";
// 4) 阀位记忆(给 HMI 显示,掉电保持用 M 区或 DB + 保持属性)
IF "V1_CoilA" THEN "V1_OpenMem" := TRUE; "V1_CloseMem" := FALSE; END_IF;
IF "V1_CoilB" THEN "V1_OpenMem" := FALSE; "V1_CloseMem" := TRUE; END_IF;
// 5) 诊断:双线圈同时输出 / 单线圈超时
"V1_Fault" := ("V1_CoilA" AND "V1_CoilB") OR "TON_Over".Q;
"TON_Over" (IN := "V1_CoilA" OR "V1_CoilB", PT := T#3s); // 超 3 s 判定异常
// 6) 输出到实际 DO
"Q_ValveA" := "V1_CoilA";
"Q_ValveB" := "V1_CoilB";
```
**要点**
- **脉宽不要给 HMI**:屏死机、通讯中断、宏跑飞都会让脉宽失控;PLC 的 `TP` 是确定性的。
- **互锁放最后一级**:所有条件算完后,`Q_A := … AND NOT Q_B`,这是唯一能保证"两线圈不同时"的写法。
- **超时保护必须有**:任何原因导致线圈连续 ON 超过 3 s → 强制断开 + 报警(否则线圈烧毁)。
- **阀位反馈优先级**:有气缸磁性开关 → 用**真实到位**信号做 `LB-402/403`;没有 → 用命令记忆位,并在 HMI 上把文字写成"命令:开/关",不要写"到位"。
---
## 6. 三种工况怎么处理
| 工况 | 处理 |
| --- | --- |
| 手动 / 自动 | 自动运行时 `LB-405`=0 → HMI 按钮互锁屏蔽;自动流程由 PLC 直接驱动 `V1_CoilA/B` 脉冲(同一套 `TP` 逻辑) |
| 通讯中断 / HMI 断电 | 脉冲已结束 → DO 必为 0,安全;HMI 恢复后状态灯读 PLC 记忆位,自动对齐。**这就是"不该由 HMI 保持 DO"的原因** |
| 急停 / 断电 | 双电控**保持**阀位,气缸不回。HMI 必须提示"阀位保持,需手动复位";工艺要求复位时,需在气路上加泄放/中泄阀或用单电控弹簧复位阀(属硬件方案,屏解决不了) |
---
## 7. 测试用例(验收必做)
| # | 操作 | 预期 |
| --- | --- | --- |
| 1 | 点"开阀" | 仅 A 线圈 0.3 s,阀位变"开",B 无输出 |
| 2 | 连点"开阀" 10 次 | 每次单脉冲,不叠加、不延长 |
| 3 | 开状态下点"关阀" | A 先断,≥150 ms 后 B 脉冲,中间无重叠 |
| 4 | 两指同时按两个按钮 | PLC 只认一个(或都屏蔽),**绝不双线圈** |
| 5 | 点住按钮不放 5 s | 3 s 超时报警并自动断开 |
| 6 | 拔网线 / HMI 断电重启 | DO=0;恢复后状态灯与 PLC 一致 |
| 7 | 急停 | 阀位保持,HMI 提示"需手动复位" |
| 8 | 无权限账号登录 | 按钮隐藏/灰显,点击无动作(或弹 11 号窗) |
---
## 8. 落地清单
- [ ] 确认阀型号:双电控 / 线圈电压 / **最小励磁时间** / 是否带手动应急按钮
- [ ] 确认 2 个 DO 类型:晶体管(漏型/源型)还是继电器;DC 线圈加续流二极管
- [ ] 确认地址:`LB-400~405` 是否与 PLC 现有 M/DB 冲突 → 回填 `地址表.md`
- [ ] PLC 侧补齐:`TP` 脉宽、`TOF` 死区、`AND NOT` 最终互锁、超时诊断
- [ ] HMI 侧:复归型按钮 ×2、互锁条件、权限、状态灯读记忆位
- [ ] 按第 7 章 8 条逐项测试并留记录
- [ ] 更新 `开发主文件.md` 变更记录
---
## 9. 待确认(问 PLC / 工艺)
1. 阀的**最小励磁时间**是多少?决定 `TP` 的 `PT`(0.3 s 只是常用经验值)。
2. 两线圈是否**共阴极/共阳极**?DO 是源型还是漏型?决定接线与公共端。
3. 气缸有无**磁性开关**?有则做"到位"显示,无则只能显示"命令状态"。
4. 自动流程里是否也点动这两只阀?若是,`LB-405` 的"手动/自动"条件必须接上。
5. 急停后工艺是否要求阀门复位?要求则需改硬件(单电控或加泄放阀)。