Skip to content

干涉区

概述

干涉区是用于多机器人协作或机器人与外部设备交互时,防止碰撞的安全区域机制。通过定义笛卡尔空间中的矩形区域,控制器可以实时监控机器人末端/工具是否进入或离开指定的干涉区,并根据配置执行相应的动作(状态输出或禁止运动)。


干涉区概念

干涉区定义

干涉区是笛卡尔空间中的一个轴对齐矩形区域(AABB),由最小坐标点 (minX, minY, minZ) 和最大坐标点 (maxX, maxY, minZ) 定义。控制器实时计算机器人末端(TCP)位置,判断其是否在干涉区内。

干涉区类型

类型workType 值说明典型应用
状态输出0机器人在区域内时输出 IO 信号通知外部设备机器人已到达工作区域
禁止运动1机器人在区域内时禁止运动防止两台机器人进入对方的作业空间

区域判断

判断方式isInInterfer 值说明
在区域内1当机器人末端在区域内时触发
在区域外0当机器人末端在区域外时触发

干涉区应用场景

  1. 多机器人协作:定义各机器人的专属工作区域,防止同时进入同一区域
  2. 机器人与外部设备:定义设备的安全区域,机器人进入时降低速度或停止
  3. 工位管理:定义不同工位的边界,通过 IO 信号通知 PLC 机器人的位置
  4. 安全围栏:定义虚拟围栏,机器人越界时停止运动

干涉区数量与编号

  • 每个机器人支持最多 99 个干涉区(工艺号 1-99)
  • 每个干涉区独立配置,互不影响
  • 干涉区坐标系基于当前选中的用户坐标系

干涉区范围

上位机设置干涉区范围

命令字: 0x3800

字段类型范围说明
numint[1,99]工艺号
paramobject-干涉区参数
robotint[1,4]当前机器人号

param 参数:

字段类型范围说明
varNamestringGB001-GB999用于干涉区输出值
enablebool-干涉区使能
isInInterferint[0,1]在区域内/外:0表示在区域外,1表示在区域内
maxXdouble[-9999,9999] mm最大 X
maxYdouble[-9999,9999] mm最大 Y
maxZdouble[-9999,9999] mm最大 Z
minXdouble[-9999,9999] mm最小 X
minYdouble[-9999,9999] mm最小 Y
minZdouble[-9999,9999] mm最小 Z
portint-输出 IO 端口
valueint[0,1]输出参数
workTypeint[0,1]起作用方式:0表示状态输出,1表示禁止运动

示例:

json
{
  "num": 1,
  "param": {
    "enable": false,
    "isInInterfer": 1,
    "maxX": "1101.05",
    "maxY": "183.569",
    "maxZ": "1024.13",
    "minX": "833.956",
    "minY": "-173.017",
    "minZ": "944.358",
    "port": 0,
    "value": 0,
    "workType": 0
  },
  "robot": 1
}

配置建议

  • minX < maxXminY < maxYminZ < maxZ,否则干涉区无效
  • 干涉区应设置在机器人可达工作空间内
  • 多个干涉区可以重叠,重叠区域的判断结果取并集

上位机查询干涉区范围

命令字: 0x3801

字段类型范围说明
numint[1,99]当前查询的工艺号
robotint[1,4]当前机器人号

示例:

json
{
  "num": 1,
  "robot": 1
}

控制器回复上位机干涉区参数/干涉点标记结果

命令字: 0x3802

字段类型范围说明
numint[1,99]工艺号
paramobject-干涉区参数
robotint[1,4]当前机器人号

param 参数:

字段类型范围说明
calibrationState1int[0,1]标记点1是否标定:0表示未标定,1表示已标定
calibrationState2int[0,1]标记点2是否标定:0表示未标定,1表示已标定
enablebool-干涉区使能
isInInterferint[0,1]在区域内/外:0表示在区域外,1表示在区域内
maxXdouble[-9999,9999] mm最大 X
maxYdouble[-9999,9999] mm最大 Y
maxZdouble[-9999,9999] mm最大 Z
minXdouble[-9999,9999] mm最小 X
minYdouble[-9999,9999] mm最小 Y
minZdouble[-9999,9999] mm最小 Z
point1Datadouble[]-标记点1标记位置信息列表
point2Datadouble[]-标记点2标记位置信息列表
portint-输出 IO 端口
valueint[0,1]输出参数
workTypeint[0,1]起作用方式:0表示状态输出,1表示禁止运动

示例:

json
{
  "num": 1,
  "param": {
    "calibrationState1": 0,
    "calibrationState2": 0,
    "enable": false,
    "isInInterfer": 1,
    "maxX": "1101.05",
    "maxY": "183.569",
    "maxZ": "1024.13",
    "minX": "833.956",
    "minY": "-173.017",
    "minZ": "944.358",
    "point1Data": [0, 0, 0, 0, 0, 0],
    "point2Data": [0, 0, 0, 0, 0, 0],
    "port": 0,
    "value": 0,
    "workType": 0
  },
  "robot": 1
}

干涉点

干涉点概念

干涉点用于辅助定义干涉区的位置。通过示教标记两个对角点(标记点1和标记点2),控制器可以自动计算干涉区的边界范围。这是一种便捷的干涉区定义方式。

标记点标定流程

  1. 通过 0x3810 发送标记请求,指定标记点号 (1 或 2)
  2. 手动将机器人移动到目标位置
  3. 控制器记录当前位置作为标记点
  4. 完成两个标记点后,通过 0x3811 请求计算干涉区范围

上位机请求标记干涉点

命令字: 0x3810

字段类型范围说明
calibrationState1int[0,1]标记点1状态:0表示进行标定,1表示取消标定
calibrationState2int[0,1]标记点2状态:0表示进行标定,1表示取消标定
numint[1,99]工艺号
posint[1,2]标记点号:1表示标记点1,2表示标记点2
robotint[1,4]当前机器人号

示例:

json
{
  "calibrationState1": 1,
  "calibrationState2": 1,
  "num": 1,
  "pos": 1,
  "robot": 1
}

上位机请求标记完成计算

命令字: 0x3811

字段类型范围说明
numint[1,99]当前查询的工艺号
robotint[1,4]当前机器人号

示例:

json
{
  "num": 1,
  "robot": 1
}

上位机请求移动到标记点

命令字: 0x3812

字段类型范围说明
numint[1,99]当前查询的工艺号
posint[1,2]需要移动到的标记点号
robotint[1,4]当前机器人号

示例:

json
{
  "num": 1,
  "pos": 1,
  "robot": 1
}