『7x24小时有问必答』
该块协调各个机器人之间的互锁请求。
为了防止机器人之间发生“死锁” , 这些机器人在进入互锁之前输出互锁请求并且等待 PLC 确认。
每个机器人均有 16 个机器人/机器人互锁。在进入互锁 1 之前, 机器人输出比特位“Ver_Afn.X0” 作为互锁请求, 若为互锁 2 则输出“Ver_Anf.X1” , 以此类推。最多可以将 16 个机器人参数化。一旦 2 个机器人中只有一个输出互锁请求,就会立即获得相应的确认位。如果两个机器人在同一个周期中提出相同的互锁请求,那么首先在 PLC 中处理的那一个就会获得确认位。另一个机器人现在必须等待, 直至“第一个” 机器人撤回互锁请求并且获得确认位。
具有哪些互锁的哪些机器人彼此互锁的数据均存放在与块的 IN/OUT 变量“ST_ROBVER” 相连的数据结构中。通过块的参数化将该结构参数化。为此给相应的输入参数“Ver1_Rob” ...“Ver16_Rob” 提供一个值。
外部互锁(与块 FB_Rob_Ver_ext 有关)需要输入参数 Ver1_Rob 至 Ver16_Rob 上大于等于 99 的值。
该块还准备机器人的允许信号。从块输入“Stell_Frg” 、 “PF0” 、 “SAK” 和“ohne_Rob” 形成这些允许信号。
"Frg1_an":= "ohne_Rob" Or ("SAK" And ("Stell_Frg.X0" Or "PF0")); ... "Frg16_an":= "ohne_Rob" Or ("SAK" And ("Stell_Frg.X15" Or "PF0"));
该数据块通常会随自己的背景数据块一起被调用。

VASS标准的A/E41-56机器人互锁信号,A/E81-96用于机器人与PLC确认关闭互锁信号.

2. 模块 1:释放逻辑 / 使能条件(Freigabebits)

Frg1_an :=  ohne_Rob OR (SAK  AND (Stell_Frg.%X0 OR  PF0));

...

Frg16_an := ...

功能

16 组互锁释放条件判断

逻辑

ohne_Rob
:无机器人模式 → 直接释放
SAK
:安全回路正常
Stell_Frg.%Xn
:位置释放信号
PF0
:测试 / 强制信号
作用:只有满足安全条件,互锁才能真正生效。

---

3. 模块 2:错误复位(Fehler loeschen)

PAFE  := False;

xFehlerNr1  := False;

...

每次扫描先复位错误,重新校验合法性。

---

4. 模块 3:机器人编号合法性检查(核心)

IF ((R_Nr < 1) OR (R_Nr > 32)) THEN

       xFehlerNr1  := True;

       PAFE  := True;

END_IF;

功能

机器人编号必须  1~32
超出范围 →  错误 001:机器人号越界

---

5. 模块 4:写入互锁配置(核心数据结构)

ST_ROBVER.Rob[R_Nr].Verriegelung[1] :=  Ver1_Rob;

...

ST_ROBVER.Rob[R_Nr].Verriegelung[16] :=  Ver16_Rob;

含义

ST_ROBVER
全局机器人互锁数据块
Rob[R_Nr]
:当前机器人
Verriegelung[1~16]
本机器人需要和哪 16 个对象互锁

特殊值

1~32
  = 机器人编号
99
  = 外部设备(PLC / 安全回路)
0
  = 无互锁

---

6. 模块 5:HMI 显示文本自动生成

IF  Ver1_Rob >0 AND <33 THEN

     ST_ROB.VerrText[1] := 机器人名称

ELSIF  Ver1_Rob=99 THEN

     ST_ROB.VerrText[1] := 'Ext.'

END_IF;

功能

自动在触摸屏显示:
机器人 A ↔ 机器人 B 互锁
机器人 ↔ 外部设备 互锁

---

7. 模块 6:互锁请求处理(最核心!)

FOR  iHM_Zaehler1 := 0 TO 15 DO

      IF Ver_Anf 对应位=1 THEN

            检查互锁对象是否合法

            检查对方机器人是否也互锁了我

            都满足 → 输出应答信号 Quitt_Anf

      END_IF;

END_FOR;

互锁逻辑(必须满足 2 个条件)

A 机器人要和 B 互锁B 机器人必须也要和 A 互锁
双向互锁才生效,否则直接报错!

错误定义

Fehler2
:互锁对象编号非法
Fehler3
:双向互锁不匹配(单向互锁 = 错误)

---

8. 模块 7:初始化与脉冲触发

R_Trig_PF0(CLK :=  PF0  OR NOT  xInit);

IF  R_Trig_PF0.Q THEN

       xNeuEintragen  := True;

END_IF;

PF0 信号上升沿 →  重新加载互锁配置
用于调试、参数修改后生效

---

9. 模块 8:错误报警 + HMI

#"001" :=  xFehlerNr1;   // 机器人号越界

#"002" :=  xFehlerNr2;   // 源参数错误

#"003" :=  xFehlerNr3;   // 目标参数错误

"DB_ARG".VisuSS.Rob_Stoer := 错误汇总;

作用

报警上触摸屏
安全系统停止机器人
提示维修人员故障原因

每个机器人标准有16个锁定命令可用,这些命令已永久分配给I / O
在在线驾驶条件下必须查询相应的锁定输入。
1.进入安全区时:

如果是小蓝先进入安全区的话,应先关闭自身给小黄的安全信号,然后在安全区工作时等待小黄的安全信号.
如果小黄后进入安全区的话,由于之前小蓝关闭了自己安全信号,小黄只能等待小蓝的安全信号的再次发出
2.在安全区时:
如果小蓝在安全区时,始终 等待小黄的安全信号.
如果小黄后进入安全区的话,由于之前小蓝关闭了自己安全信号,小黄只能等待小蓝的安全信号的再次发出.
3.离开安全区时:
如果小蓝离开安全区后,应先发给小黄的安全信号,释放互锁信号.
小黄后进入安全区后,关闭互锁信号,等待小蓝的安全信号.
PLC对机器人干涉区的控制:

VASS  标准使用的互锁标准:互锁示意图,设定机器人之间互锁所使用的IO范围.
FB207机器人互锁信号控制:

可以设置机器人在原位时默认发出互锁释放信号.

发出互锁条件:
关闭互锁条件:

Robot<-->机器人互锁
每个机器人标准提供16个锁定命令,这些命令永久分配给I/O。必须在在线驾驶条件下检查相应的锁定输入。
编程机器人锁定示例:
1: PTP VB=100% VE=0% ACC=100% RobWzg=1 Base=1 SPSTrig=5 [1/100s]  
1:   TECH3 Roboter GRDST-UP Techaufruf=EIN  
2:   A81 = EIN                  ~锁定1
3:   A82 = EIN                  ~锁定  2  
4:   A83 = EIN                  ~  锁定  3  
5:   SPSMAKRO20 = EIN               ~ 机器人锁激活,关闭释放信号
6:   WARTE BIS E23  
7:   FB PSPS = E14 & E24 & E41 & E42 & E43 & E80 & M95  
Macro20必须与锁定请求同时调用!!!
释放互锁信号
7: A41 = EIN
9: A42 = EIN
11: A43 = EIN
13: A44 = EIN
关闭部分互锁信号,开始进入干涉区工作。
30: A81 = EIN  用于请求关闭互锁信号
31: A83 = EIN
32: SPSMAKRO20 = EIN     关闭A41A43的互锁信号
35: FB PSPS = E41 & E43
等待其他机器人给入的互锁信号才能进入干涉区工作
离开干涉区后再次发出互锁信号
4: A41 = EIN
6: A43 = EIN
FB PSPS = M1 & M30机器人不用再等干涉信号
--------------------
A41 = A41 + A81   再次发出A41
.........

A56 = A56 + A96

WARTE BIS (E81 + !A81) & (E82 + !A82) & (E83 + !A83) & (E84 +!A84) & (E85 + !A85)   -PLC检查是否设置正确-

WARTE BIS (E86 + !A86) & (E87 +!A87) & (E88 + !A88) & (E89 + !A89) & (E90 + !A90)

WARTE BIS (E91 + !A91) & (E92 +!A92) & (E93 + !A93) & (E94 + !A94) & (E95 + !A95)
WARTE BIS (E96 + !A96)

WARTE BIS (E41 + !A81) & (E42 +!A82) & (E43 + !A83) & (E44 + !A84) & (E45 + !A85)     -察看E41  互锁机器人是否允许进入-

WARTE BIS (E46 + !A86) & (E47 +!A87) & (E48 + !A88) & (E49 + !A89) & (E50 + !A90)

WARTE BIS (E51 + !A91) & (E52 +!A92) & (E53 + !A93) & (E54 + !A94) & (E55 + !A95)

WARTE BIS (E56 + !A96)

A41 = A41 & !A81    -如果给入A81=1关闭A41-  如果不给入A81则不关闭A41

A42 = A42 & !A82

.........

A56 = A56 & !A96

A81 = AUS  关闭A81请求关闭PLC信号

........

A87 = AUS

---------------------end--------------------------------

每天进步一点点
Make small but daily progress

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码