复位点
概述
上位机与控制器通过复位点协议进行通信,用于设置和查询机器人复位点位置、复位 IO 参数、安全位置等相关配置。
复位点概念
复位点是机器人在特定条件下需要返回的安全参考位置。典型的应用场景包括:
- 安全事件后复位:急停或安全门触发后,机器人需要先回到复位点才能继续运行
- 程序异常中断后复位:程序执行中断后,机器人需要回到复位点重新开始
- 断电重启后复位:断电后重新上电,机器人需要从复位点开始运行
复位形式
| 形式 | selectPiontOrFile 值 | 说明 |
|---|---|---|
| 复位点 | 0 | 机器人移动到预设的复位点关节位置 |
| 复位程序 | 1 | 机器人执行预设的复位程序 |
插补方式
| 方式 | returnWay 值 | 说明 |
|---|---|---|
| 关节插补 | 0 | 各轴以关节插补方式同时移动到复位点 |
| 直线插补 | 1 | 末端以直线路径移动到复位点(需要逆解) |
复位点配置参数总览
| 参数类别 | 参数 | 说明 |
|---|---|---|
| 位置参数 | pos / posSync | 本体轴/外部轴复位点位置 |
| 安全参数 | deviation / deviationSync | 各轴安全范围偏差 |
| IO 参数 | inPort / inValue / outPort | 开始/结束 IO 信号 |
| 控制参数 | returnWay / safeEnable / selectPiontOrFile | 插补方式/安全使能/复位形式 |
安全使能 (safeEnable)
当 safeEnable 为 true 时:
- 机器人在安全事件后必须手动回到安全点位置才能重新运行
- 控制器通过
0x3665上报当前不在安全位置的机器人状态
1. 上位机设置复位点位置
命令字: 0x3660
请求参数
| 参数名 | 类型 | 长度 | 说明 |
|---|---|---|---|
| pos | double[] | 7 | 机器人复位点位置列表 |
| posSync | double[] | 5 | 机器人外部轴复位点位置列表 |
| robot | int | 1 | 当前机器人号,范围[1,4] |
请求示例
json
{
"pos": [10.20, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
"posSync": [0.0, 0.0, 0.0, 0.0, 0.0],
"robot": 1
}2. 上位机查询复位点位置
命令字: 0x3661
请求参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| robot | int | 当前机器人号,范围[1,4] |
请求示例
json
{
"robot": 1
}3. 控制器回复上位机复位点位置
命令字: 0x3662
响应参数
| 参数名 | 类型 | 长度 | 说明 |
|---|---|---|---|
| deviation | double[] | 7 | 机器人各轴安全范围,范围[0,10] |
| deviationSync | double[] | 5 | 机器人外部轴各轴安全范围,范围[0,10] |
| inPort | int | 1 | 开始 DIN |
| inValue | int | 1 | 开始 DIN 参数,范围[0,1] |
| outPort | int | 1 | 结束 DOUT |
| pos | double[] | 7 | 机器人复位点位置列表 |
| posSync | double[] | 5 | 外部轴复位点位置列表 |
| returnWay | int | 1 | 插补方式:0-关节插补,1-直线插补 |
| robot | int | 1 | 当前机器人号,范围[1,4] |
| safeEnable | bool | 1 | 安全使能:安全使能开始时,机器人必须手动回到安全点位置才能重新运行 |
| selectPiontOrFile | int | 1 | 机器人复位形式:0-复位点,1-复位程序 |
响应示例
json
{
"deviation": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
"deviationSync": [1.0, 1.0, 1.0, 1.0, 1.0],
"inPort": 0,
"inValue": 1,
"outPort": 0,
"pos": [10.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
"posSync": [0.0, 0.0, 0.0, 0.0, 0.0],
"returnWay": 0,
"robot": 1,
"safeEnable": false,
"selectPiontOrFile": 0
}4. 上位机设置复位 IO 参数
命令字: 0x3663
请求参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| inPort | int | 开始 DIN |
| inValue | int | 开始 DIN 参数,范围[0,1] |
| outPort | int | 结束 DOUT |
| returnWay | int | 插补方式:0-关节插补,1-直线插补 |
| robot | int | 当前机器人号,范围[1,4] |
| safeEnable | bool | 安全使能:安全使能开始时,机器人必须手动回到安全点位置才能重新运行 |
| selectPiontOrFile | int | 机器人复位形式:0-复位点,1-复位程序 |
请求示例
json
{
"inPort": 0,
"inValue": 1,
"outPort": 0,
"returnWay": 0,
"robot": 1,
"safeEnable": false,
"selectPiontOrFile": 0
}5. 上位机设置复位点安全位置
命令字: 0x3664
请求参数
| 参数名 | 类型 | 长度 | 说明 |
|---|---|---|---|
| deviation | double[] | 7 | 机器人各轴安全范围,范围[0,10] |
| deviationSync | double[] | 5 | 机器人外部轴各轴安全范围,范围[0,10] |
| robot | int | 1 | 当前机器人号,范围[1,4] |
请求示例
json
{
"deviation": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
"deviationSync": [1.0, 1.0, 1.0, 1.0, 1.0],
"robot": 1
}6. 控制器回复上位机当前不在安全位置
命令字: 0x3665
响应参数
| 参数名 | 类型 | 长度 | 说明 |
|---|---|---|---|
| currentPos | double[] | 6 | 当前机器人位置列表,长度为当前机器人轴数 |
| isSync | bool | 1 | 是否为外部轴 |
| robot | int | 1 | 当前机器人号,范围[1,4] |
| safePos | double[] | 6 | 复位点位置列表 |
响应示例
json
{
"currentPos": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
"isSync": false,
"robot": 1,
"safePos": [10.2, 0.0, 0.0, 0.0, 0.0, 0.0]
}复位点配置流程
建议按以下顺序配置复位点:
- 设置复位点位置 (
0x3660):定义复位点的各轴关节角度 - 设置安全范围 (
0x3664):定义各轴允许的偏差范围 - 设置 IO 参数 (
0x3663):配置复位开始/结束的 IO 信号条件 - 查询验证 (
0x3661/0x3662):查询当前配置,确认参数正确
注意:
returnWay选择直线插补时,需确保复位点位置在机器人的可达工作空间内,否则可能导致逆解失败。