AaJA机器人高级编程.docx
《AaJA机器人高级编程.docx》由会员分享,可在线阅读,更多相关《AaJA机器人高级编程.docx(41页珍藏版)》请在冰豆网上搜索。
![AaJA机器人高级编程.docx](https://file1.bdocx.com/fileroot1/2023-7/9/17421327-8d89-4772-a4ad-f330b2c25952/17421327-8d89-4772-a4ad-f330b2c259521.gif)
AaJA机器人高级编程
ABB[a]-J-8ABB机器人高级编程
8.1任务目标
Ø掌握ABB机器人RAPID高级编程方法。
Ø掌握常用的RAPID程序指令。
8.2任务实施
8.2.1事件程序EventRoutine
EventRoutine是使用RAPID指令编写的例行程序去响应系统事件的功能。
比如在系统启动时,检查IO输入信号的状态,就可通过EventRoutine来完成。
要注意的是,在EventRoutine中不能有移动指令,也不能有太复杂的逻辑判断,防止程序死循环,影响系统的正常运行。
下面我们就以响应系统事件POWER_ON为例子,进行此功能的说明。
任务描述:
编写rEvent例行程序,打印“StartOK”字样,如果在开启后屏幕上显示,则说明这个例行程序与POWER_ON系统事件关联。
操作步骤:
1.进入“控制面板”-“配置”画面,点击“主题”,选择“Controller”。
2.双击“EventRoutine”。
3.点击“添加”。
4.Event选择“POWER_ON”(定义可参考手册)。
5.Routine选择“rEvent”。
6.Task选择默认任务“T_ROB1”(使用多任务系统要明确例行程序在哪个任务中)。
7.点击“确定”后重启。
8.重启后,在操作员画面中能看到信息。
8.2.2多任务MultiTasking
MultiTasking就是在有一个在前台运行用于控制机器人逻辑运算和运动的RAPID程序的同时,后台还有与前台并行运行的RAPID程序,也就是我们所说的多任务程序了。
*系统需要623-1MultiTasking选项。
多任务程序最多可以有20个不带机器人运动指令的后台并行的RAPID程序。
多任务程序可用于机器人与PC之间不间断的通讯处理,或作为一个简单的PLC进行逻辑运算。
后台的多任务程序在系统启动的同时就开始连续的运行,不受机器人控制状态的影响。
多任务程序——任务间数据通讯的方法:
◆任务间是可以通过程序数据进行数据的交换。
◆在需要数据交换的任务中建立存储类型为可变量而且名字相同的程序数据。
◆在一个任务中修改了这个数据的数值,在另一个任务中名字相同的数据也会随之更新。
1.建立多任务
1.进入“控制面板”-“配置”画面的“Controller”主题,选择“Task”。
2.点击“添加”。
3.设置Task值为“T_Back”(名字可自由起)。
4.Type选择“NONMAL”。
5.Mainentry进行重命名,命名为“mainback”,与前台主程序区分开。
6.进行重启操作,使设置生效。
重新启动后,点击右下角快捷菜单,再点击多任务按钮,将T_ROB1前台任务取消掉。
7.到程序编辑器添加程序模块和主例行程序(mainback),并在程序中添加一些指令。
8.电机上电,运行程序,观察IO的变化。
9.在Task的编辑画面,将Type设定为“SEMISTATIC”,后台连续运行(设置后,即使机器人前台程序没有执行,开机后,后台程序也会自动执行)。
2.多任务之间数据通信
1.在“控制面板”-“配置”-“Controller”主题的“Task”中将任务更改为“NONMAL”。
2.在两个任务中建立两个存储类型为可变量的名称相同的num类型数据abb1。
3.将任务改为后台运行“SEMISTATIC”。
4.在前台程序中编写赋值语句将abb1的值进行更改。
5.执行指令,在程序数据界面观察程序数据的值。
8.2.3错误处理ErrorHandle
在RAPID程序执行的过程中,为了提高运行的可靠性,减少人为干预,对一些简单的错误(如WAITDI)进行自我处理。
除了系统的出错处理。
也可以根据控制的需要,定制对应的出错处理。
出错处理常用指令
指令
说明
EXIT
当出现无法处理时将程序停止执行
RAISE
当定制出错处理时,用于激活出错处理
RETRY
再次执行激活出错处理的指令
TRYNEXT
执行激活出错处理的下一句指令
RETURN
回到之前的子程序
ResetRestryCount
复位重试的次数
*错误处理中最好不要放运动指令
操作步骤:
1.进入“程序编辑器”,新建例行程序“rErrorHandle”,在“错误处理程序”上打勾。
2.添加WaitDI指令,选择MaxTime可选变量,值设置为3。
3.添加写屏指令TPWrite,写一段信息。
4.编辑出错处理,在ERROR下面添加处理指令(打开电子参考手册“技术参考手册”-“RAPID手册”下的《RAPIDInstructions…》说明书,在Instruction章节找到WAITDI指令的说明,找到MaxTime找到此指令触发的错误标示符)。
5.添加IF指令,条件为“ERRNO=ERR_WAIT_MAXTIME”。
6.THEN中可填写错误处理的指令,在此处我们填写一个写屏指令。
7.THEN中添加TRYNEXT指令,继续执行激活出错指令的下一条指令。
8.2.4TCP轨迹限制加减速度的设定
我们可以对机器人运动轨迹的加减速度进行限制来满足一些特殊应用的需要。
如机器人搬运高温液态金属进行浇注的动作,为了防止液体的溢出,这个时候我们就需要对加减速度进行限定。
示例:
•PathAccLimFALSE,FALSE;
TCP的加减速度被设定为最大值(一般默认情况)
•PathAccLimTRUE\AccMax:
=4,TRUE\DecelMax:
=4;
TCP的加减速度被限定在4m/s2
•MoveLp1,v1000,fine,tool0;
•PathAccLimTRUE\AccMax:
=4,FALSE;加速度被限定为4m/s2
•MoveLp2,v1000,z30,tool0;
•MoveLp3,v1000,fine,tool0;
•PathAccLimFALSE,FALSE;TCP的加减速度被设定为最大值
限制值最小只能设定为0.5m/s2
8.2.5WorldZone区域监控功能的使用
WorldZone是用于控制机器人在进入一个指定区域后停止或输出一个信号。
应用实例:
✧当两个机器人协同运动时设定保护区域。
✧在压铸机的开/合模区设定为WorldZone。
✧机器人进入了指定区域后,输出信号给外围设备。
•通过定义AB两点的位置来确定进行监控的区域。
•可以定义的WorldZone形状:
矩形、圆柱形、关节位置型。
WorldZone监控的是当前的TCP的坐标值,监控的坐标区域是基于当前使用的工件坐标WOBJ和工具坐标TOOLDATA的。
一定要使用EventRoutine的POWER_ON在启动系统的时候运行一次,就会开始自动监控了。
操作步骤:
1.使用WorldZone必须添加WorldZone的选项:
608-1WorldZone。
在“ABB”-“系统信息”-“系统属性”-“控制模块”-“选项”中查看是否有WorldZone的选项。
2.在“手动操纵”界面选定要监控的工具。
3.编制EventRoutine对应的程序:
设置两个矩形对角点Pos1和Pos2,设定对应的坐标值;
使用WZBoxDef\Inside,shPos,Pos1,Pos2;
WZDOSet\Stat,wzPos\Inside,shPos,do1,1;
指令来设定WorldZone和关联的IO信号。
4.设定EventRoutine,与POWER_ON关联,电机上电时自动开启WorldZone功能。
8.2.6限定单轴运动范围的操作
目的:
因为工作环境或控制的需要,我们有时候会对单个轴进行运动范围的限定。
方法:
我们可以对单轴的上限和下限值进行设定。
设定的数据以弧度的方式进行表达。
(1弧度约等于57.3度)。
注意:
对单轴限定后,会使机器人的可到达范围变小。
1.进入“控制面板”-“配置”画面的“Motion”主题,双击“Arm”。
2.选择要限定的轴,进入。
3.设定UpperJointBound和LowerJointBound的值来设定单轴的上限和下限,单位为弧度(默认为±180度,即±3.14159),实际的值与设定值留有一定的余量。
4.进入手动操纵模式,当轴运动超出设定的范围后,就会报错。
8.2.7使用IO信号调用例行程序
为了简化控制和对整个系统的一体化控制,我们通常会遇到以下的这种情况:
操作员直接从人机界面直接调出机器人要执行的RAPID例行程序。
要实现这样的操作的设定方法:
✧人机界面将程序编号发给PLC。
✧PLC将编号发到机器人的组输入端。
✧编写对应的RAPID程序。
操作步骤:
1.设定组输入gi1。
2.编写几个测试程序proc1()、proc2()和rSelectProg()。
rSelectProg用来判断调用那个程序。
3.rSelectProg内容如图:
使用CallByVar指令,“proc”为固定值,根据后面数字的不同,选择调用proc1或proc2。
4.对gi1的值进行仿真,运行rSelectProc时,会调用与gi1的值对应的程序
8.3知识链接-常用RAPID程序指令与功能表
ABB机器人提供了丰富的RAPID程序指令,方便了大家对程序的编制,同时也为复杂应用的实现提供了可能。
以下就按照RAPID程序指令、功能的用途进行了一个分类,并对每个指令的功能作一个说明,如需对指令的使用与参数进行详细的了解,可以查看ABB机器人随机光盘说明书中的详细说明。
8.3.1程序执行的控制
1.程序的调用
指令
说明
ProcCall
调用例行程序
CallByVar
通过带变量的例行程序名称调用例行程序
RETURN
返回原例行程序
2.例行程序内的逻辑控制
指令
说明
CompactIF
如果条件满足,就执行一条指令
IF
当满足不同的条件时,执行对应的程序
FOR
根据指定的次数,重复执行对应的程序
WHILE
如果条件满足,重复执行对应的程序
TEST
对一个变量进行判断,从而执行不同的程序
GOTO
跳转到例行程序内标签的位置
Label
跳转标签
3.停止程序执行
指令
说明
Stop
停止程序执行
EXIT
停止程序执行并禁止在停止处再开始
Break
临时停止程序的执行,用于手动调试
SystemStopAction
停止程序执行与机器人运动
ExitCycle
中止当前程序的运行并将程序指针PP复位到主程序的第一条指令。
如果选择了程序连续运行模式,程序将从主程序的第一句重新执行
8.3.2变量指令
1.赋值指令
指令
说明
:
=
对程序数据进行赋值
2.等待指令
指令
说明
WaitTime
等待一个指定的时间,程序再往下执行
WaitUntil
等待一个条件满足后,程序继续往下执行
WaitDI
等待一个输入信号状态为设定值
WaitDO
等待一个输出信号状态为设定值
3.程序注释
指令
说明
comment
对程序进行注释
4.程序模块加载
指令
说明
Load
从机器人硬盘加载一个程序模块到运行内存
UnLoad
从运行内存中卸载一个程序模块
StartLoad
在程序执行的过程中,加载一个程序模块到运行内存中
WaitLoad
当StartLoad使用后,使用此指令将程序模块连接到任务中使用
CancelLoad
取消加载程序模块
CheckProgRef
检查程序引用
Save
保存程序模块
EraseModule
从运行内存删除程序模块
5.变量功能
指令
说明
TryInt
判断数据是否是有效的整数
OpMode
读取当前机器人的操作模式
RunMode
读取当前机器人程序的运行模式
NonMotionMode
读取程序任务当前是否无运动的执行模式
Dim
获取一个数组的维数
Present
读取带参数例行程序的可选参数值
IsPers
判断一个参数是不是可变量
IsVar
判断一个参数是不是变量
6.转换功能
指令
说明
StrToByte
将字符串转换为指定格式的字节数据
ByteToStr
将字节数据转换成字符串
8.3.3运动设定
1.速度设定
指令
说明
MaxRobSpeed
获取当前型号机器人可实现的最大TCP速度
VelSet
设定最大的速度与倍率
SpeedRefresh
更新当前运动的速度倍率
AccSet
定义机器人的加速度
WorldAccLim
设定大地坐标中工具与载荷的加速度
PathAccLim
设定运动路径中TCP的加速度
2.轴配置管理
指令
说明
ConfJ
关节运动的轴配置控制
ConfL
线性运动的轴配置控制
3.奇异点的管理
指令
说明
SingArea
设定机器人运动时,在奇异点的插补方式
4.位置偏置功能
指令
说明
PDispOn
激活位置偏置
PDispSet
激活指定数值的位置偏置
PDispOff
关闭位置偏置
EOffsOn
激活外轴偏置
EOffsSet
激活指定数值的外轴偏置
EOffsOff
关闭外轴位置偏置
DefDFrame
通过三个位置数据计算出位置的偏置
DefFrame
通过六个位置数据计算出位置的偏置
ORobT
从一个位置数据删除位置偏置
DefAccFrame
从原始位置和替换位置定义一个框架
5.软伺服功能
指令
说明
SoftAct
激活一个或多个轴的软伺服功能
SoftDeact
关闭软伺服功能
6.机器人参数调整功能
指令
说明
TuneServo
伺服调整
TuneReset
伺服调整复位
PathResol
几何路径精度调整
CirPathMode
在圆弧插补运动时,工具姿态的变换方式
7.空间监控管理
指令
说明
WZBoxDef
定义一个方形的监控空间
WZCylDef
定义一个圆柱形的监控空间
WZSphDef
定义一个球形的监控空间
WZHomeJointDef
定义一个关节轴坐标的监控空间
WZLimJointDef
定义一个限定为不可进入的关节轴坐标监控空间
WZLimSup
激活一个监控空间并限定为不可进入
WZDOSet
激活一个监控空间并与一个输出信号关联
WZEnable
激活一个临时的监控空间
WZFree
关闭一个临时的监控空间
8.3.4运动控制
1.机器人运动控制
指令
说明
MoveC
TCP圆弧运动
MoveJ
关节运动
MoveL
TCP线性运动
MoveAbsJ
轴绝对角度位置运动
MoveExtJ
外部直线轴和旋转轴运动
MoveCDO
TCP圆弧运动的同时触发一个输出信号
MoveJDO
关节运动的同时触发一个输出信号
MoveLDO
TCP线性运动的同时触发一个输出信号
MoveCSync
TCP圆弧运动的同时执行一个例行程序
MoveJSync
关节运动的同时执行一个例行程序
MoveLSync
TCP线性运动的同时执行一个例行程序
2.搜索功能
指令
说明
SearchC
TCP圆弧搜索运动
SearchL
TCP线性搜索运动
SearchExtJ
外轴搜索运动
3.指定位置触发信号与中断功能
指令
说明
TriggIO
定义触发条件在一个指定的位置触发输出信号
TriggInt
定义触发条件在一个指定的位置触发中断程序
TriggCheckIO
定义一个指定的位置进行I/O状态的检查
TriggEquip
定义触发条件在一个指定的位置触发输出信号,并对信号响应的延迟进行补偿设定
TriggRampAO
定义触发条件在一个指定的位置触发模拟信号,并对信号响应的延迟进行补偿设定
TriggC
带触发事件的圆弧运动
TriggJ
带触发事件的关节运动
TriggL
带触发事件的线性运动
TriggLIOs
在一个指定的位置触发输出信号的线性运动
StepBwdPath
在RESTART的事件程序中进行路径的返回
TriggStopProc
在系统中创建一个监控处理,用于在STOP和QSTOP中需要信号复位和程序数据复位的操作
TriggSpeed
定义模拟输出信号与实机TCP速度之间的配合
4.出错或中断时的运动控制
指令
说明
StopMove
停止机器人运动
StartMove
重新启动机器人运动
StarMoveRetry
重新启动机器人运动及相关的参数设定
StopMoveReset
对停止运动状态复位,但不重新启动机器人运动
StorePath
储存已生成的最近路径
RestoPath
重新生成之前储存的路径
ClearPath
在当前的运动路径级别中,清空整个运动路径
PathLevel
获取当前路径级别
SyncMoveSuspend
在StorePath的路径级别中暂停同步坐标的运动
SyncMoveResume
在StorePath的路径级别中重返同步坐标的运动
IsStopMoveAct
获取当前停止运动标志符
*这些功能需要选项“Pathrecovery”配合
5.外轴的控制
指令
说明
DeactUnit
关闭一个外轴单元
ActUnit
激活一个外轴单元
MechUnitLoad
定义外轴单元的有效载荷
GetNextMechUnit
检索外轴单元在机器人系统中的名字
IsMechUnitActive
检查一个外轴单元状态是关闭/激活
6.独立轴控制
指令
说明
IndAMove
将一个轴设定为独立轴模式并进行绝对位置方式运动
IndCMove
将一个轴设定为独立轴模式并进行连续方式运动
IndDMove
将一个轴设定为独立轴模式并进行角度方式运动
IndRMove
将一个轴设定为独立轴模式并进行相对位置方式运动
IndReset
取消独立轴模式
IndInpos
检查独立轴是否已到达指定位置
IndSpeed
检查独立轴是都已到达指定的速度
注:
这些功能需要选项“Independentmovement”配合
7.路径修正功能
指令
说明
CorrCon
连接一个路径修正生成器
CorrWrite
将路径坐标系统中的修正值写到修正生成器
CorrDiscon
断开一个已连接的路径修正生成器
CorrClear
取消所有已连接的路径修正生成器
CorrRead
读取所有已连接的路径修正生成器的总修正值
注:
这些功能需要选项“PathoffsetorRobotWare-Aresensor”配合
8.路径记录功能
指令
说明
PathRecStart
开始记录机器人的路径
PathRecStop
停止记录机器人的路径
PathRecMoveBwd
机器人根据记录的路径作后退运动
PathRecMoveFwd
机器人运动到执行PathRecMoveBwd这个指令的位置上
PathRecValidBwd
检查是否已激活路径记录和是否有可后退的路径
PathRecValidFwd
检查是否有可向前的记录路径
注:
这些功能需要选项“Pathrecovery”配合
9.输送链跟踪功能
指令
说明
WaitWObj
等待输送链上的工件坐标
DropWObj
放弃输送链上的工件坐标
注:
这些功能需要选项“Conveyortracking”配合
10.传感器同步功能
指令
说明
WaitSensor
将一个在开始窗口的对象与传感器设备关联起来
SyncToSensor
开始/停止机器人与传感器设备的运动同步
DropSensor
断开当前对象的连接
注:
这些功能需要选项“Sensorsynchronization”配合
11.有效载荷与碰撞检测
指令
说明
MotionSup
激活/关闭运动监控
LoadId
工具或有效载荷的识别
ManLoadId
外轴有效载荷的识别
注:
此功能需要选项“Collisiondetection”配合
12.关于位置的功能
指令
说明
Offs
对机器人位置进行偏移
RelTool
对工具的位置和姿态进行偏移
CalcRobT
从jointtarget计算出robtarget
CPos
读取机器人当前的X、Y、Z
CRobT
读取机器人当前的robtarget
CJointT
读取机器人当前的关节轴角度
ReadMotor
读取轴电动机当前的角度
CTool
读取工具坐标当前的数据
CWObj
读取工件坐标当前的数据
MirPos
镜像一个位置
CalcJointT
从robtarget计算出jointtarget
Distance
计算两个位置的距离
PFRestart
检查当路径因电源关闭而中断的时候
CSpeedOverride
读取当前使用的速度倍率
8.3.5输入输出信号的处理
1.对输入输出信号的值进行设定
指令
说明
InvertDO
对一个数字输出信号的值置反
PulseDO
数字输出信号进行脉冲输出
Reset
将数字输出信号置为0
Set
将数字输出信号置为1
SetAO
设定模拟输出信号的值
SetDO
设定数字输出信号的值
SetGO
设定组输出信号的值
2.读取输入输出信号值
指令
说明
AOutput
读取模拟输出信号的当前值
DOutput
读取数字输出信号的当前值
GOutput
读取组输出信号的当前值
TestDI
检查一个数字输入信号已置1
ValidIO
检查I/O信号是否有效
WaitDI
等待一个数字输入信号的指定状态
WaitDO
等待一个数字输出信号的指定状态
WaitGI
等待一个组输入信号的指定值
WaitGO
等待一个组输出信号的指定值
WaitAI
等待一个模拟输入信号的指定值
WaitAO
等待一个模拟输出信号的指定值
3.IO模块的控制
指令
说明
IODisable
关闭一个I/O模块
IOEnable
开启一个I/O模块
8.3.6通信功能
1.示教器上人机界面的功能
指令
说明
TPErase
清屏
TPWrite
在示教器操作界面上写信息
ErrWrite
在示教器事件日志中写报警信息并储存
TPReadFK
互动的功能键操作
TPReadNum