核心概念:不是额外增加旋转气缸 / 电动旋转夹爪,直接用机器人 6 轴带动法兰旋转;夹爪固定在法兰上,夹爪连同工件一起绕 TCP 的 Z 轴旋转。 两种编程方式:
RelTool:在当前点位,绕工具 Z 轴相对旋转指定角度
MoveAbsJ:直接修改 6 轴关节角度,固定旋转法兰注意:这个方案是姿态旋转,TCP 的 XYZ 坐标保持不动,夹爪尖点位置不变,只旋转姿态。适合取放、摆盘,工件原地旋转。
一、前提准备
标定夹爪 tooldata(TCP+Z,X 六点标定)只四点标定 TCP 不行!必须【TCP & Z,X】六点标定,定义夹爪工具坐标系的 X/Z 方向,否则
RelTool \Rz旋转方向错乱。工具坐标系 Z 轴:夹爪开合方向(夹爪中心轴线)
工具坐标系 X 轴:夹爪旋转的 0° 参考边
工具负载填写正确(mass、重心),否则高速旋转时报负载报警。
确认运动空间:6 轴旋转时,末端电缆、气管不能拉扯缠绕!
最大限制:6 轴是机械限位,一般 ±360°,不能无限连续旋转,电缆会扭断。
二、两种实现方案
方案 1:RelTool(推荐!原地绕 TCP Z 轴旋转,TCP 位置不动)
RelTool(原始点位, dx, dy, dz \Rz:=角度),\Rz单位度,正数逆时针、负数顺时针。
逻辑:读取当前 robtarget,生成一个同 XYZ 位置、仅工具 Z 轴旋转的新目标点。
完整 RAPID 示例(IO 触发旋转,原地旋转 90°)
MODULE GripperRotateByFlange
!工具数据,提前六点标定好夹爪
PERS tooldata tGripper:=[TRUE,[[0,0,150],[1,0,0,0]],[2,[0,0,80],[1,0,0,0],0,0,0]];
PERS wobjdata wobj0:=[FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[0,0,0],[1,0,0,0]]];
VAR robtarget pCurr;
VAR num RotAngle;
!DI触发:DI1=外部启动旋转信号
PROC RotGripByToolRz(num angle)
!读取当前机器人点位
pCurr:=CRobT(\Tool:=tGripper\WObj:=wobj0);
!生成新目标:XYZ不变,仅工具Z轴旋转angle度
pCurr:=RelTool(pCurr,0,0,0 \Rz:=angle);
!线性运动,原地旋转;fine点保证姿态到位
MoveL pCurr, v200, fine, tGripper\WObj:=wobj0;
!旋转完成输出DO信号
SetDO doRotFinish,TRUE;
WaitTime 0.1;
SetDO doRotFinish,FALSE;
ENDPROC
!调用示例:原地旋转90度
PROC Rot90()
RotGripByToolRz(90);
ENDPROC
!调用示例:原地旋转-90度(反向)
PROC RotNeg90()
RotGripByToolRz(-90);
ENDPROC
ENDMODULE
调用:RotGripByToolRz(45); → TCP 不动,夹爪原地旋转 45°。
方案 2:MoveAbsJ 直接修改 6 轴关节
直接操作 jointtarget 的第六轴 jpos.ax6,适合固定站位旋转;缺点:TCP 位置会偏移,不适合任意点位原地旋转。
VAR jointtarget jHome;
jHome:=CJointT();
jHome.ax6:=jHome.ax6 + 90; !6轴增加90度
MoveAbsJ jHome, v200, fine, tGripper;
三、IO 联动逻辑
这里 IO 不再用来下发角度编码,IO 只做握手触发:
DI [1]:外部 PLC 下发【开始旋转】触发信号
DO [1]:旋转完成反馈
DI [2]:夹爪夹紧到位(必须夹紧后,才允许旋转!防止工件甩出)
!带前置安全判断的主程序
PROC RotTask()
!安全条件:夹爪夹紧到位,无报警
WaitDI diGripClamp,TRUE;
!等待外部触发
WaitDI diStartRot,TRUE;
!原地旋转90°
RotGripByToolRz(90);
ENDPROC
四、高频故障 & 注意事项
1. 旋转方向反了 / 角度不对
原因:工具坐标系没有做 TCP&Z,X 六点标定,只四点标定;工具 X 轴定义反了。
排查:手动【重定位】模式,选中工具坐标系,拨动 6 轴,观察工具 X 轴方向是否符合预期。
2. RelTool 旋转时,TCP 位置跑掉(XYZ 偏移)
原因:
RelTool是工具坐标系下旋转,程序里 MoveL 使用了错误的 tooldata!
RelTool 生成目标点时的工具,必须和 MoveL 的工具完全一致。
3. 旋转时机器人突然反转,走最短路径
ABB 姿态旋转默认走最小角度路径:比如当前 0°,目标 270°,机器人会反向转 - 90°,而不是正向 270°,容易扭断气管电缆。 ✅解决办法:
尽量控制单次旋转角度≤±180°
长角度拆分多次小角度旋转,不要一次性写 270°
必要时改用
MoveAbsJ关节运动强制旋转方向(代价:TCP 偏移)
4. 6 轴机械限位、电缆扭绞
法兰自带气管、EE 手爪线缆,禁止连续多圈旋转,超过 ±360° 会扭断。
工艺上每次旋转完成后,程序复位回 0° 基准姿态,避免累积角度。
5. 奇异点报错(Wrist Singularity)
当轴 4、轴 5 接近共线(手腕奇异点),MoveL姿态旋转会报警,机器人剧烈抖动。
✅解决:
尽量避开奇异点位进行姿态旋转;
代码增加
SingArea \Wrist;允许手腕微调。
6. 旋转过程工件晃动、精度差
负载参数填写错误;
速度 v 取值过大,姿态旋转建议低速 v50~v200;
zone 使用 fine,必须姿态到位,不能用 zone 圆弧过渡。
7. 和电动旋转夹爪(IO 编码方案)对比
表格
| 项目 | 法兰 Rz 旋转(机器人 6 轴) | 电动旋转夹爪 IO 编码 |
|---|---|---|
| 角度 | 任意角度,连续可调 | 只能预设档位 |
| TCP 位置 | 原地旋转,TCP 不动 | 原地旋转 TCP 不动 |
| 工件 | 工件跟着法兰一起转 | 工件相对于法兰旋转 |
| 限制 | 6 轴限位、电缆不能多圈扭转 | 无电缆扭转,独立伺服 |
| 成本 | 零额外硬件成本 | 夹爪伺服驱动器成本 |
| 精度 | 机器人本体重复精度 | 夹爪伺服精度 |
五、调试步骤
示教器:工具坐标系,切换到【工具】手动操纵,重定位模式,拨动 6 轴,确认旋转方向是否符合预期。
单步运行 RAPID,
pCurr:=CRobT()打印当前点位,确认 XYZ 不变,仅姿态变化。低速试运行,观察气管 / EE 线缆有没有拉扯。
接入外部 IO 握手,增加安全联锁:夹爪未夹紧禁止旋转。


