非常关键的区别: OTC 的WSZ 工作区域限制(Work‑Space Zone)是硬禁区功能:定义立方体 / 圆柱空间,TCP 一旦闯入该区域直接报警停机;本身不支持进入区域自动直接输出 DO 信号(不像安川立方体、ABB WorldZone 可以直接绑定 IO 输出)。 机床上下料要做「机器人是否进入机床门口区域,输出信号给 PLC 互锁」,OTC 有两种实现方案:
WSZ 硬禁区;
SLIM 程序逻辑 + 机器人坐标读取,自定义空间判断输出 DO。
一、WSZ 硬禁区
用途:划定一块空间,机器人 TCP 不许进来;误闯入直接报警停止运动,用于防撞保护;不适合用来做机床门口进出的互锁信号。
菜单路径(示教器 FD21)
【菜单】→【设定】→【工作区域限制 WSZ】
选择空闲的区域编号(WSZ 最多可设置 8 个区域)
区域类型选择:长方体(立方体);基准坐标系选择【机器人世界坐标系】(不要工件坐标系)
JOG 手动移动机器人(带完整抓手!),记录对角两个顶点 Pmin (Xmin,Ymin,Zmin)、Pmax (Xmax,Ymax,Zmax)
要点:记录点位时 TCP 是抓手末端;一定要装上实际抓手,不能只用法兰 tool0;区域范围要把整个抓手 + 工件包络算进去,不是仅 TCP 点。
设置动作模式:
模式 A:禁止进入(闯入即报警停机);
模式 B:减速进入(部分版本支持提前减速);
开启本区域【有效】,保存参数;重启伺服生效。
WSZ 只监控 TCP 点;手臂肘关节、手腕管线仍然有可能穿出立方体外面发生碰撞!WSZ 只检测 TCP,不是整臂包络检测。
二、机床上下料想要 “进机床门口立方体区域输出 DO 互锁信号”(OTC 没有原生功能,SLIM 程序实现)
原理:SLIM 读取当前机器人世界坐标,在后台循环判断 X/Y/Z 是否落在设定的长方体区间内;条件成立置位 DO,退出复位 DO。
适合机床门口区域:机器人进入机床门洞内部,输出 DO 给到机床 PLC;机床收到信号就禁止关门;机器人完全退出立方体之后 DO 复位,机床才允许关门启动加工。
伪 SLIM 逻辑思路(后台循环任务运行)
*后台一直循环读取当前TCP世界坐标PX,PY,PZ
LOOP
GETPOS PX,PY,PZ ;读取TCP世界坐标
IF (PX>=X1 AND PX<=X2) AND (PY>=Y1 AND PY<=Y2) AND (PZ>=Z1 AND PZ<=Z2) THEN
OUT 10,ON ;DO10=ON:机器人处于机床内部立方体区域
ELSE
OUT 10,OFF ;退出区域,复位输出
ENDIF
WAIT 0.05
JMP LOOP
设置要点:
这段空间判断程序放到后台 BG 任务(后台作业),开机自动启动,后台持续扫描坐标;
立方体坐标同样要预留安全余量;把抓手 + 工件整体包络纳入;
软件逻辑输出 DO 只做第二层兜底互锁;主握手逻辑依然依靠 WAITI 硬接线 DI 信号,不能完全依赖坐标判断!坐标判断不能替代硬件安全互锁。
三、OTC 用于机床上下料干涉防护的现场注意事项
不要拿 WSZ 硬禁区直接做机床门口互锁:机器人需要正常开进机床内部取放件,WSZ 禁止进入就无法作业;WSZ 适合设置机床旁边的障碍物禁区(例如机床外壳、料架防撞)。
WSZ 只监控 TCP 点,肘关节、管线不在检测范围内;必须先用 FD‑ST 离线仿真完整轨迹检查整臂干涉,不能仅依靠 WSZ 防护。
坐标后台判断输出 DO 存在扫描周期延迟(约 50ms 级别);时序上有滞后风险,严禁作为安全停机回路。
标定 TCP 必须准确,如果 TCP 偏移,WSZ 立方体判定、后台坐标判断全部都会出错。
本体发生碰撞之后 TCP 漂移,要重新复核 WSZ 坐标与后台立方体判断的坐标边界。
对比其它品牌立方体干涉区小结
表格
| 品牌 | 立方体干涉区特性 | 机床上下料用途 |
|---|---|---|
| 安川 YRC‑1000 | 原生立方体 Zone,进入直接输出 SOUT 虚拟信号→映射 DO | 直接用于机床门口互锁输出;也可禁区停机 |
| ABB IRC5 | WorldZone,程序定义长方体,可绑定 DO 输出 | 程序定义,开机事件例行启动,用于互锁输出 |
| 发那科 R‑30iB | Cube 干涉区,进入输出内部 SOUT 信号再映射 DO | 可直接做门口互锁 |
| OTC FD11/FD19 | WSZ 仅 TCP 硬禁区(闯入停机);无原生区域输出 IO;只能 SLIM 后台读坐标判断输出 DO | WSZ 用于防撞禁区;机床门口互锁要自己写后台坐标判断程序 |
如果你需要,我可以给你一份完整可直接复制的 OTC SLIM 后台立方体区域判断的示例程序。
今天 20:02
如何设置新松机器人的 SLIM 程序逻辑
新松机器人后台脚本
先澄清: OTC 叫 SLIM 后台程序;新松 Duco‑Core 控制器没有 SLIM,使用【后台脚本 bgscript】实现后台循环逻辑,用途一样:持续读取 TCP 世界坐标,判断是否落在机床门口立方体空间,输出 DO 给机床 PLC 做第二层互锁兜底中科新松。 重点提醒:新松同样没有原生 “进入立方体直接输出 IO” 的硬件 Zone 功能;后台脚本属于软件逻辑;不能替代硬接线握手互锁,严禁当做安全停机回路。
一、后台脚本入口(示教器 / Duco‑Core 软件)
菜单路径:设置 → 后台脚本管理
点加号【+】新建后台脚本,命名
bg_cube_zone进入代码编辑页面;写完保存;点击运行▶,开机之后可以设置自动运行。
后台脚本独立于前台运动程序;机器人跑上下料主程序的同时,脚本后台持续循环扫描坐标。
二、关键系统函数
get_tcp_pose():读取当前 TCP 在基座(世界)坐标系下的位姿 Pose,返回 X,Y,Z,A,B,C(单位 m)。
坐标单位是米,设置立方体边界的时候注意单位换算(1000mm =1.0m)!这点极易踩坑。
三、后台脚本示例:机床门口立方体区域判断输出 DO
功能:
设定立方体:Xmin~Xmax;Ymin~Ymax;Zmin~Zmax(机床门洞内腔区域)
TCP 落入立方体内 → DO10=ON(通知机床:机器人还在机床里面,禁止关门)
TCP 退出立方体 → DO10=OFF(机器人已经退出门洞,可以允许关门)
--新松后台脚本 bg_cube_zone,机床门口立方体监测
--立方体边界 单位 m;根据现场实际测量修改!
local Xmin = 0.40
local Xmax = 0.85
local Ymin = -0.25
local Ymax = 0.25
local Zmin = 0.30
local Zmax = 0.75
while true do
local tcp = get_tcp_pose()
local px = tcp.x
local py = tcp.y
local pz = tcp.z
-- 判断TCP是否在立方体范围内
local in_cube = false
if (px >= Xmin and px <= Xmax)
and (py >= Ymin and py <= Ymax)
and (pz >= Zmin and pz <= Zmax) then
in_cube = true
end
if in_cube then
set_do(10,true)
else
set_do(10,false)
end
sleep(0.05) --循环延时50ms;不要写0,防止CPU占用过高
end
参数修改要点
先把机器人带着完整抓手,JOG 移动到立方体对角两个顶点;读出示教器上基座坐标 X/Y/Z;再把 mm 除以 1000 换算成米填入脚本;
边界预留安全余量,要把抓手 + 工件整体包络算进去,不是只按 TCP 点;
sleep(0.05)代表每 50ms 扫描一次;扫描有滞后,时序存在延迟风险。
四、后台脚本运行设置步骤
保存脚本;在后台脚本管理界面,选中脚本,点击运行按钮;状态变为绿色 ;
开机自启:在脚本管理页勾选【Run automatically】上电自动启动后台脚本;
注意:
后台脚本不会随前台程序启停;上电就独立运行;调试阶段建议关闭自动运行,调试好再打开自启;
后台脚本禁止长时间无 sleep 死循环,必须加 sleep 延时,否则系统报警 CPU 过载。
五、额外硬禁区
新松控制器自带【虚拟边界】功能(菜单机器人设定‑虚拟边界),最多 6 个边界平面,可以设置空间硬限制;闯入直接停机报警;
虚拟边界同样仅监控 TCP;只限制 TCP 点,手臂肘关节、管线不受保护,不能替代仿真检查整臂干涉;适合设置外围障碍物硬防撞,不适合机床门口进出(机器人需要开进开出该区域)。
六、现场调试注意事项
软件后台脚本 DO 仅第二层兜底互锁!主握手逻辑依然必须前台程序使用 DI 硬接线 Wait 等待反馈;不能拿脚本输出 DO 当做唯一互锁信号。
TCP 标定必须准确;TCP 漂移之后立方体判断边界全部失效;发生碰撞后要复核 TCP;
先在 Duco‑Core 离线仿真先测试脚本逻辑,观察 DO 输出变化;再下到实体控制柜测试;
扫描周期 50ms 存在滞后;不要用该输出做急停安全回路。

