在熟悉了此RAPID程序后,可以根据实际的需要在此程序的基础上做适用性的修改,以满足实际逻辑与动作的控制。
以下是实现机器人逻辑和动作控制的RAPID程序:
MOUDLE MainMoudle
CONST robtarget pPick: (t*.]*,*.,[0,0,0,0J,[9E9,9E9,9E9,9E9,9E9,9E91];CONST robtarget pHome :1l*.**J,[0,0,0J.[9E9,9E9,9E9,9E9,9E9,9E91];CONST robtarget pPlaceBase :=[[*,*,*].[*,*,*,*],[-1,0,1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
PERS
!需要示教的目标点数据,抓取点pPick、HOME点pHome、放置基准点pPlaceBasePERS wobjdata WobjCNV:=[FALSE,TRUE,"" [-456.216, 2058.49, 233.373],[1,0,0,0]1,[[0,0,0],[1,0,0,0]];
!定义输送带工件坐标系WobjCNV
PERS wobjdata WobjBuffer:=[FALSE,TRU,,[-421.764,1102.39,-233.373],[1,0,0,0]],[0,0,0_,[,0,0,0]];
!定义暂存盒工件坐标系WobjBuffer
PERS toldata tGripper:=[TRUE,[O0,1151][,0,017L[,[,0100,[,0],0,0,0]];
!定义工具坐标系数据tGripper
PERS loaddata LoadFull:=[0.5,[0,0,3],[1,0,0,0],0,0,0.1];
!定义有效载荷数据LoadFullrobtarget pPlace;
!放置目标点,类型为PERS,在程序中被赋予不同的数值,用以实现多点位放置CONST jointarget jposHome:=[[0,0,0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
关节目标点数据,各关节轴度数为0,即机器人回到各关节轴机械刻度零位CONST speeddata vLoadMax:=[3000,300,5000,1000];CONST speeddata vLoadMin:=[500,200,5000,1000];CONST speeddata vEmptyMax:([0005005000,1000];CONST speeddata vEmptyMin:=[1000,2005000,1000];
速度数据,根据实际需求定义多种速度数据,以便于控制机器人各动作的速度PERS num nCount:=1;
数字型变量nCount,此数据用于太阳能薄板计数,根据此数据的数值赋予放置目|点pPlace不同的位置数据,以实现多点位放置。
VAR bool bPickOK:=False;
!布尔量,当拾取动作完完成后将其置为True控制之用
放置完成后将将其置为False, 以作逻辑
PROC Main
主程序rInitialize;
!调用初始化程序WHILE TRUE DO
I利用WHILE循环将初始化程序隔开
PickPanel;!调用拾取程序
PlaceInBuffer;!调用放置程序Waittime 0.3;
措环等待时间,防止在不满足机器人动作情况下程序扫描过快,造成CPU过负荷
ENDWHILEENDPROC
T20
PROC rInitialize()
初始化程序rCheckHomePos;
机器人位置初始化,调用检测是否在Home位置点程序,检测当前机器人位置是否在HOME点,若在HOME点的话则继续执行之后的初始化相关指令;若不在HOME点,则先返回至HOME点nCount:=1;
计数初始化,将用于太阳能薄板的计数数值设置为1,即从放置的**个位置
始摆放
reset do32_ VacuumOpen;
信号初始化,复位真空信号,关闭真空bPickOK:=False;
布尔量初始化,将拾取布尔量置为FalseENDPROC
拾取太阳能薄板程序IF bPickOK-Falsc THEN
当拾取布尔量bPickOK为False时,则执行IF条件下的拾取动作指令,否则执行ELSE中出错处理的指令,因为当机器人去拾取太阳能薄板时,需保证其真空夹具上面没有太阳能薄板
MoveJ ofs(pPick,0,0,100),VEmptyMax,z20,tGripper\WObj:=WobjCNV;!利用MoveJ指令移至拾取位置pPick点正上方z轴正方向100mm处WaitDI di01_ PanelInPickPos,1;
等待产品到位信号di01 PanellnPickPos 变为1,即太阳能薄板已到位MoveL pPick,vEmptyMin,fine,Gripper\WObj:=WobjCNV;!产品到位后,利用MoveL移至拾取位置pPick点Set do32 VacuumOpen;
将真空信号置为1,控制真空吸盘产生真空,将太阳能薄板拾起WaitDI di02_ VacuumOK,1;
等待真空反馈信号为1,即真空夹具产生的真空度达到需求后才认为已将产品完全拾起。若真空夹具上面没有真空反馈信号,则可以使用固定等待时间,如Waittime 0.3;
bPickOK:= TRUE;
真空建立后,将拾取的布尔量置为TRUE,表示机器人夹具上面已拾取一个产品,以便在放置程序中判断夹具的当前状态
GripLoad LoadFull;
加载载荷数据LoadFull
MoveL offs(pPick,0,0,100),vLoadMin,z10,tGripperWObj:=WobjCNV;!利用MoveL移至拾取位置pPick点正上方100mm处ELSE
TPERASE;
TPWRITE "Cycle Restart Error";
TPWRITE "Cycle can't start with SolarPanel on Gripper";
TPWRITE "Please check the Gripper and then restart next cycle ";Stop;
!如果在拾取开始之前拾取布尔量已经为TRUE,则表示夹具上面已有产品,此种情况下机器人不能再去拾取另一个产品。此时通过写屏指令描述当前错误状态,并提示操作员检查当前夹具状态,排除错误状态后再开始下一个循环。同时利用Stop指令,停止程序运行
ENDIF
- 下一篇: ABB机器人数字IO信号设置参数介绍——ABB机器人
- 上一篇: ABB机器人示教器搬运程序解析——ABB机器人