2. ABB机器人编程基础与RAPID关键指令
视觉引导系统的最终执行者是机器人本体,而机器人能否准确到达视觉给出的目标位姿,取决于RAPID程序写得是否正确。本节围绕控制柜与示教器的基本操作、RAPID程序结构、运动指令、I/O指令和通信指令五条主线展开,目标是让读者能独立读懂并写出一个可被视觉系统调用的基础程序框架。
一、控制柜与示教器:程序运行的物质基础
ABB机器人控制柜(常见IRC5或OmniCore)是程序执行与安全逻辑的核心,示教器(FlexPendant)则是人机交互入口。现场操作时,先确认控制柜主电源开关处于ON,等待系统启动完成后示教器进入主界面。示教器左上角的状态栏会显示当前运行模式:自动模式(Auto)下程序由外部信号或启动按钮触发,手动模式(Manual)下需按住使能按钮(Deadman)才能上电运行。
手动模式下有三个关键操作:一是使能按钮,轻按至中间位置电机上电,重按或松开立即断电;二是摇杆,配合坐标系选择实现单轴或线性点动;三是急停按钮,任何异常都应第一时间拍下。视觉引导调试阶段,通常先在手动模式下用摇杆把机器人移到安全位置,再切换到自动模式由视觉触发。
二、RAPID程序结构:模块、例行程序与数据
RAPID程序以模块(Module)为组织单位,一个任务(Task)可包含多个模块。模块内部由三部分组成:数据声明(如robtarget、speeddata、bool)、例行程序(PROC/TRAP)和主程序入口(main)。程序执行从main开始,按顺序调用其他例行程序。
MODULE VisionPick
! 数据声明
CONST robtarget pHome := [[500,0,600],[1,0,0,0],[0,0,1,0],[0,0,0,0]];
PERS robtarget pPick;
PERS bool bVisionReady := FALSE;
PERS num nOffsetX := 0;
PROC main()
MoveJ pHome, v1000, fine, tool0;
WHILE TRUE DO
IF bVisionReady THEN
PickPart;
bVisionReady := FALSE;
ENDIF
WaitTime 0.1;
ENDWHILE
ENDPROC
PROC PickPart()
MoveL Offs(pPick,0,0,100), v500, z50, tool0;
MoveL pPick, v200, fine, tool0;
Set doGrip;
WaitTime 0.3;
MoveL Offs(pPick,0,0,100), v500, z50, tool0;
ENDPROC
ENDMODULE
这段示例中,PERS表示可保持变量,断电后仍保留数值,适合存放视觉传来的目标点;CONST为常量,用于定义安全原点。视觉系统通常通过通信把坐标写入pPick,再把bVisionReady置为TRUE,机器人主循环检测到后调用抓取程序。
三、运动指令:MoveJ、MoveL、MoveC与转弯区
RAPID的运动指令决定机器人如何从一点到另一点,视觉引导中最常用的是MoveJ(关节运动)和MoveL(直线运动)。MoveJ用于大范围快速移动,路径不保证直线,适合回原点或跨越障碍;MoveL用于接近工件、插入、涂胶等需要直线轨迹的场合。
指令参数格式为:MoveL 目标点, 速度, 转弯区, 工具。其中转弯区(zone)决定是否在到达目标点前圆滑过渡:fine表示精确到达并短暂停顿,z50表示距目标点50mm处开始转弯。视觉抓取时,接近点常用z50提高节拍,最终抓取点必须用fine保证定位精度。
速度参数如v500表示500mm/s,也可用vmax或自定义speeddata。工具坐标tool0是默认法兰中心,实际抓取应使用标定过的工具坐标(如tGripper),否则视觉给出的位姿会因工具偏移而错位。
四、I/O指令与通信指令:视觉与机器人的接口
机器人本体I/O和现场总线I/O通过信号与外部设备交互。常用指令有:Set置位、Reset复位、WaitDI等待输入为1、WaitDO等待输出为1。视觉系统触发抓取时,典型逻辑是:视觉发送坐标→机器人置位doReady→视觉检测到后发送下一目标。
! 等待视觉就绪信号
WaitDI diVisionReady, 5;
! 读取视觉发送的偏移量
nOffsetX := giVisionX;
pPick := Offs(pHome, nOffsetX, 0, 0);
! 通知视觉已接收
Set doAck;
WaitTime 0.05;
Reset doAck;
通信指令方面,若视觉通过Socket与机器人通信,可使用SocketCreate、SocketConnect、SocketSend、SocketReceive;若通过PROFINET/EtherNet-IP,则直接读写组输入giVisionX等信号。无论哪种方式,都建议在程序中加入超时判断,避免视觉掉线时机器人无限等待。
五、为视觉引导编程打基础的关键习惯
第一,工具坐标必须标定。视觉给出的是工件在相机坐标系下的位姿,经手眼标定转换到机器人基坐标后,还要通过工具坐标换算到法兰中心。若工具坐标未标定,抓取点会整体偏移一个工具长度。
第二,目标点用PERS而非CONST。视觉每次给出的坐标不同,必须用可保持变量接收,否则程序无法动态更新。
第三,加入超时与异常处理。视觉通信可能因网络抖动中断,建议在WaitDI后加超时参数,超时后置位报警信号并回到安全原点,而不是让机器人停在半空。
第四,先手动后自动。视觉引导程序首次运行时,先在手动模式下用示教器单步执行,确认MoveL路径不碰撞、抓取点准确,再切自动模式批量运行。
掌握以上内容后,读者应能读懂一个包含视觉通信、坐标接收、运动执行和I/O交互的完整RAPID程序框架,并能根据现场视觉系统的通信方式替换对应的信号与指令。这是后续手眼标定、坐标转换和视觉引导抓取实战的直接基础。