上周在客户现场调一台ABB IRB 1200,做的是高速搬运,节拍要求很紧,但机器人一跑到程序中间的过渡点时,整个机座都在发抖。我盯着示教器看了半天,位置没问题,轨迹也没报警,最后把问题锁定在加减速参数上。用ACCSET把加速度和缓冲坡度重新设置之后,振动明显降下去了,循环时间反而还缩短了一点。这个场景其实很常见,做机器人调试的人应该都遇到过——点位之间不是走不了,而是走起来像急刹车起步的公交车,一冲一冲的。今天就把ABB/FANUC点位加速度调整这件事讲透,尤其是ACCSET这个指令怎么用、什么时候用、用了之后怎么判断效果。
这篇文章适合搞机器人调试、维修保养的工程师,也适合做集成项目验收的朋友看。我自己用ABB和FANUC两个品牌都有三四年了,踩过不少坑,这里把关键细节一次性整理出来。
1. 为什么机器人的运动会“卡顿”和“抖动”
1.1 从运动学看“不流畅”的根源
机器人从A点走向B点,不是简单地把电机转起来就行。运动控制系统需要实时规划每个关节的位置、速度、加速度,然后通过伺服驱动器转换成力矩输出。如果加速度设置过大,电机扭矩猛地往上顶,机械结构就会承受一个冲击;冲击过去之后扭矩又迅速回落,机器人就像被人推了一把又拉住,表现出来就是抖动和晃动。
拿开车来类比最直观。你踩油门一脚到底,车会往前蹿,乘客往后仰;你再一脚急刹,所有人都往前栽。如果你能把加速踏板和刹车踏板都换成平缓的曲线,起步和停车就很舒服。机器人也一样,点位之间的运动轨迹是由运动指令加加速度参数共同决定的。加速度太大,轨迹偏差也会变大,尤其在转弯、过渡、翻转这些位置上,第6轴负载变化最明显,冲击感会被放大很多。
1.2 机器人“加速度”与“速度倍率”的区别
很多初学者会把速度倍率和加速度混在一起调。实际这两个是完全不同的维度。速度倍率控制的是执行速度v的百分比,例如MoveL v1000,你把倍率从100%调到80%,运行速度降了,但加速度曲线没变——机器人还是会突然加速到那个速度,只是最高速度低一点而已。加速度控制的是“多快达到目标速度”,单位时间内的速度变化量。
ABB机器人的RAPID程序里,除了默认加速度策略,还提供了一个专门在程序内部动态调整加速度的指令——ACCSET。它不改变速度v的数值,只改变速度变化的过程。类似于你开车,速度都是60km/h,但一个是瞬间提速到60,一个是慢慢起步到60。后者就是ACCSET能实现的效果。
FANUC机器人没有叫ACCSET的指令,但也有对应的加速度控制手段。后面单独讲。
2. 认识ACCSET指令的本质与参数
2.1 拆解ACCSET:Acc和Ramp到底是什么
ACCSET是ABB机器人RAPID指令中专门用于调整运动加减速特性的模态指令。它的格式是:
ACCSET Acc Ramp;Acc和Ramp是两个整数参数,分别控制加速度的大小和加速度曲线的“坡度”。
Acc是最大加速度的百分比。默认值是100,代表使用系统默认的最大加速度。你把Acc调低,机器人就会用更小的加速度去达到目标速度,冲击变小,但加速时间变长。Ramp是加速度变化率相关的参数,可以理解为“加速度的斜率”。Ramp数值越大,加速度曲线上升和回落越平缓,机械冲击越小;Ramp数值越小,加速度变化越“僵硬”,启动瞬间就像被踹了一脚。
这两个参数配合起来很有意思。如果你追求运动平稳,通常做法是:Acc适当降一点,Ramp适当提一点。比如让Acc从100降到60~70,Ramp从100升到120~150。这样既能保留较高的平均速度,又能消除起步和停止瞬间的冲击。
我自己调的时候,一般先动Ramp。因为Ramp对振动的抑制最直接,而且对节拍的影响相对小。Acc调太低了,加速时间会明显拉长,反而得不偿失。
2.2 什么时候调用ACCSET,什么时候恢复默认
有一个细节特别容易踩坑:ACCSET是模态指令,一旦执行,后面所有的运动指令都会受影响,直到再次用ACCSET改回默认值,或者程序复位。
所以使用ACCSET的正确姿势是:
MoveL p10, v500, fine, tool0; ACCSET 60, 140; MoveL p20, v1000, z50, tool0; ACCSET 100, 100; MoveL p30, v1000, fine, tool0;第一段用默认加速度走到p10,第二段在进入p20之前改了加速度参数,等通过p20之后再恢复默认。这样只有中间这一段运动是“柔化”的,其他程序段不受影响。
你要是忘了恢复默认,整个程序后面所有运动都会带着这个低加速度跑。等你换别的工件、调整速度倍率之后,会发现机器人越跑越慢,怎么加倍率都提不起来。这是个非常隐蔽的问题,因为程序语法不报错,报警也不弹,只能靠看运动曲线或者经验判断。
2.3 RobotStudio仿真时怎么看ACCSET效果
很多工程师喜欢在RobotStudio 6.08里先把程序跑一遍。仿真软件里能看到运动轨迹和速度曲线的变化,如果你装了RobotStudio,可以打开“Robot Motion”相关的视图,观察位置、速度、加速度曲线的波形。在仿真环境中插入ACCSET,速度曲线会明显变圆滑,原本接近阶跃的速度上升被拉成一个斜坡。
不过要提醒一句:RobotStudio 6.08在Windows 10/11上偶尔会遇到安装刚开始就退出的问题,多半是.NET环境或者VC++运行库缺失、或者是杀毒软件拦了安装进程。这种问题跟ACCSET本身没关系,但你调试机器人之前,最好先把这个仿真环境搞定,后面调参会方便很多。
3. FANUC如何实现点位加速度调整
3.1 FANUC的ACC指令和系统参数
FANUC机器人程序里没有ACCSET,但有一个类似的指令叫ACC。在TP编程中,插入ACC指令后,可以设置后续运动指令的加速度百分比。格式大致是:
ACC 80 ;含义是把加速度限制为默认值的80%。修改这个数值,会影响后续Motion指令的加速阶段,直到再次修改或程序结束。原理上跟ABB的ACCSET很相似,区别在于FANUC的ACC一般只设置加速度百分比,很少单独设置“加速度变化率”这个维度。FANUC默认的加速曲线本身比较保守,所以很多时候直接用ACC就够了。
除了ACC指令,FANUC还可以通过系统参数来调整加速度限制。在示教器上进入MENU → SYSTEM → Motion,可以找到关于加速度的设置项。不同型号、不同控制柜软件版本,菜单名称会略有差异,但大体上都有“ACCEL”相关的参数,默认值是100%。
3.2 FANUC现场实操步骤
在FANUC示教器上插入ACC指令的操作流程:
- 把TP程序调出来,光标移动到需要插入ACC的那一行。
- 按功能键“NEXT”,找到“EDCMD”或者直接通过“INSERT”菜单选择“ACC”。
- 输入加速度百分比,确认。
比如下面这段:
LBL[1] ; ACC 60 ; L P[1] 1000mm/sec CNT 50 ; L P[2] 1000mm/sec CNT 50 ; ACC 100 ; L P[3] 1000mm/sec FINE ;注意这里的CNT和FINE也很关键。CNT是连续运动模式,机器人经过目标点位时不会停下来,而是走一个圆滑过渡;FINE是精确定位模式,机器人必须准确停在目标点。FINE状态下,机器人每到一个点都会减速到接近零,再重新加速。这种情况下,ACCSET或者ACC的作用更明显,因为每一次从静止到运动都是一个加速冲击的过程。
如果点位之间用的是CNT连续轨迹,机器人本身就在做轨迹过渡,加速度已经相对平滑,有时候反而不太需要ACC介入。这点一定要根据实际工艺来判断,不能盲目加指令。
3.3 ABB和FANUC调整方式对比
我用一个表格做个对照,方便大家记忆:
| 项目 | ABB | FANUC |
|---|---|---|
| 核心指令 | ACCSET Acc, Ramp | ACC n |
| 控制加速度大小 | Acc参数 | n百分比 |
| 控制加速度变化率 | Ramp参数 | 无直接对应(依赖系统曲线) |
| 模态范围 | 影响后续运动,直到下一次修改 | 影响后续运动,直到下一次修改 |
| 恢复默认 | ACCSET 100,100 | ACC 100 |
| 适用场景 | 高速搬运、大负载、关节冲击明显 | 点位过渡不平稳、高速轨迹偏差 |
功能上ABB的ACCSET更灵活一点,因为它多了一个Ramp维度。FANUC的ACC更像一个“省心版”,只调加速度极限,曲线形状交给系统处理。实际操作中,我一般把FANUC的ACC也当成类似ACCSET的Acc参数来用,调节起来同样有效。
4. 实战案例:让高速搬运机器人“顺滑”起来
4.1 场景描述与问题诊断
去年帮客户调过一条电池搬运线,机器人是ABB IRB 4600,负载大概40kg,在一个矩形路径上做往复运动,四个角点都是FINE定位。程序运行起来,每到一个角点,机器人整个手臂都明显震一下,尤其是第一个角点,固定机器人的地脚螺栓都跟着抖。
我首先检查了机械部分:地脚螺栓没有松动,减速机没有异响,第6轴法兰也没有间隙。随后把速度倍率降到30%测试,发现振动几乎消失。这说明问题出在运动参数,而不是机械故障。
接下来用示波器观察伺服电流。机器人运动到角点附近时,各轴电流出现明显的尖刺,说明伺服电机在短时间内需要输出很大的力矩来改变运动方向。这就是加速度过大、缓冲时间过短的表现。
4.2 调整步骤与效果验证
我在程序中加入ACCSET,做了一组对比测试:
初始程序:
MoveL p1, v1500, fine, tool0; MoveL p2, v1500, fine, tool0; MoveL p3, v1500, fine, tool0; MoveL p4, v1500, fine, tool0;修改后:
MoveL p1, v1500, fine, tool0; ACCSET 70, 150; MoveL p2, v1500, fine, tool0; MoveL p3, v1500, fine, tool0; ACCSET 100, 100; MoveL p4, v1500, fine, tool0;注意我在p1到p2这一段设置了低加速度,但p2到p3是长距离直线,保持低加速度反而浪费节拍,所以我在p2之后没有恢复,直到快到p4之前才恢复。实际测试下来:
| 测试组 | 循环时间 | 振动/冲击情况 |
|---|---|---|
| 默认参数 | 18.6秒 | 四个角点均有明显冲击,机身抖动 |
| ACCSET 70,150 | 19.1秒 | 角点冲击明显减弱,残余抖动轻微 |
| ACCSET 60,180 | 19.4秒 | 运动非常平顺,仅轻微晃动 |
循环时间增加了0.5~0.8秒,但冲击大幅下降。对高速搬运来说,这个牺牲通常是值得的。如果客户对节拍更敏感,我会建议把Ramp继续拉高,Acc尽量不要低于70,这样每段可以节省一点加速时间,同时仍能保持相对平缓的运动。
4.3 注意加速度与负载、机械刚性的平衡
ACCSET参数不是固定的,它会受负载、机械刚性、安装方式影响。负载越重,惯性越大,相同加速度下冲击越大,所以Acc要相应调低。机器人安装在高空支架上,支架刚性不如地面基础,即便Acc参数一样,振动也会更明显。这种工况下,我通常会把Ramp调到150以上。
还有一点:减低Acc之后,机器人到目标点的定位时间会变长。如果你用的是FINE定位,对节拍影响比较大。此时可以考虑把FINE改成CNT(连续过渡),让机器人不要在角点完全停下来,而是走一个圆弧过渡,这样节拍损失更小、运动也更顺滑。但要注意CNT会牺牲定位精度,对需要精确对位的工艺不适合。
5. 常见问题与排查技巧实录
5.1 常见问题速查表
下面这几种情况我现场都遇到过,整理成一张表,大家可以对照排查:
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 高速运动时机械振动 | 加速度过大 | 用ACCSET降低Acc,提高Ramp |
| 启动瞬间有冲击、异响 | Ramp过小 | 单独把Ramp调大,观察启动段波形 |
| 程序越来越慢 | 忘记恢复ACCSET默认值 | 检查所有ACCSET之后是否接ACCSET 100,100 |
| 特定轴抖动明显 | 负载偏置、轴减速机磨损 | 检查负载数据和工具坐标系,单轴低速测试 |
| 机器人经过中间点出现轨迹偏移 | ACC过大、速度过快 | 降低速度或降低Acc,改用CNT过渡 |
| 修改后节拍明显变慢 | Acc调太低 | 优先调Ramp而不是Acc,尽量保留Acc在70以上 |
| FANUC程序弹出加速度报警 | ACC设置超范围 | 检查ACC指令数值,恢复至100 |
5.2 调试过程中积累的几个经验
第一,调整之前先把原始程序备份。这不是废话。ACCSET这类模态指令如果在程序里乱了,找半天可能都找不出来。备份原程序,出现问题随时比对。
第二,观察伺服电流和力矩曲线来判断参数是否合适。很多机器人系统都有监控功能,能查看每个轴的电流或力矩曲线。如果曲线在加减速段有尖锐的峰值,说明调得还不够平滑;如果曲线变成比较平缓的梯形,说明加减速过程比较合理。
第三,优先调整Ramp参数,而不是把Acc降得很低。这是我个人反复测试之后的体会。Acc降得太低,加速时间拉长,节拍损失大。Ramp参数稍微拉高一些,就能吸收大部分冲击,节拍损失很小。很多老工程师习惯把Acc降到50以下,结果机器人像没吃饭一样,跑不起来。
第四,FANUC调试时,如果ACC指令效果有限,可以考虑调整运动指令的过渡类型。比如把FINE改成CNT,并设置合适的过渡距离。这个方法对消除角点冲击非常有效,甚至比调ACC更省事。
5.3 仿真环境和现场工况的差异
RobotStudio 6.08里调模仿真,跑起来很顺滑,不代表现场就没有问题。仿真环境里的机器人模型没有真实的负载惯量,没有变形,没有地基共振,也没有减速机摩擦。仿真里看着平滑的加速度,到现场可能抖成筛子。
所以我一直建议:仿真阶段把程序逻辑和点位坐标验证好,ACCSET参数可以先按经验值设好,但最终一定要在线调整。现场调参时,多观察几个循环,让机器人稳定运行一两分钟再定参数,不要因为刚启动时看着好就直接固化程序。
另外,RobotStudio仿真里如果发现某个点位附近机器人姿态变化特别剧烈,说明这个地方轴角度容易突变,尤其是第6轴在大范围翻转的时候。这种位置需要重点监控,现场调试时在这个点位前后加一段ACCSET,能有效降低姿态剧变带来的冲击。
6. 再分享一个实际操作中的小技巧
最后分享一个我自己的习惯。做ABB机器人调试时,我基本不会修改系统的全局加速度参数,而是坚持在程序里用ACCSET来微调。原因很简单:全局参数是“一刀切”,所有运动都被影响,而ACCSET可以精准控制某一段运动,灵活度高,出问题也好排查。
我通常会在程序开头把默认值留一句注释,比如:
! 默认加速度 ACCSET 100,100 ACCSET 100,100;这样不管程序中途怎么改,后面的人一看到注释就明白恢复点在哪里。FANUC那边同理,程序开头写一行ACC 100,中途调过之后也记得回到100,避免影响后续工件的生产节拍。
调试机器人运动手感这件事,说难不难,说简单也需要经验积累。核心就是不断观察、微调、验证。你手里的ACCSET和ACC不是魔法,只是一把钥匙,能不能打开顺滑运动这扇门,还要靠你对现场工况的理解。