您的当前位置:首页正文

工业机器人编程

2024-04-26 来源:客趣旅游网


工业机器人报告书

任务:工业机器人搬运的仿真程序

学 院 机械与汽车工程学院 专 业 机械工程 学生姓名 黄耀坤 学生学号 2

指导教师

一、小组任务及分工

1、小组任务:基于robotstudio平台,建立一个工业机器人搬运的仿真程序。系统具有完整的物品输送装置、 物 品、容器装置等,可演示整个搬运过程。

2、小组分工:经小组讨论,得到机器人搬运仿真程序的总体制作思路后,五个组员决定分工完成各个模块内 容,本人主要负责数据定义、主程序以及前面三个子程序的编程。

二、程序总体介绍

程序总体介绍(主程序及各子程序功能介绍):

三、程序中的需要使用的数据定义

数据定义

CONSTrobtarget

pPick:=[[394.997607159,132.703199388,12.734872184],[0.005862588,-0.00300065,0.999966662,0.004827206],[

0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

CONSTrobtarget

pHome:=[[-548.424175962,-238.61219249,801.420966892],[-0.000000012,-0.707106781,0.707106781,-0.000000 012],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]]; CONSTrobtarget

pPlaceBase:=[[100.088594059,77.835146221,158.046135973],[0.00000004,-0.000623424,0.999999806,-0.000000 001],[-1,0,-1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

!需要示教的目标点数据,抓取点pPick,HOME点pHome、放置基准点pPlaceBase

PERSrobtargetpPlace;

!放置目标点,类型为PERS,在程序中被赋予不同的数值,用以实现多点位放置

CONSTjointtargetjposHome:=[[0,0,0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

!关节目标点数据,各关节轴度数为0,即机器人到各关节轴机械刻度零位 CONSTspeeddatavLoadMax:=[3000,300,5000,1000]; CONSTspeeddatavLoadMin:=[500,200,5000,1000]; CONSTspeeddatavEmptyMax:=[5000,500,5000,1000];

CONSTspeeddatavEmptyMin:=[1000,200,5000,1000];

!速度数据,根据实际需求定义多种速度数据,以便于控制机器人各动作的速度

PERSnumnCount:=1;

!数字型变量nCount,此数据用于太阳能薄板计数,根据此数据的数值赋予放置 目标点pPlace不同的位置数 据,以实现多点位放置

PERSnumnXoffset:=145; PERSnumnYoffset:=148;

!数字型变量,用做放置位置偏移数值,即太阳能薄板摆放位置之间在X、Y方向的 单个间隔距离

VARboolbPickOK:=False;

!布尔量,当拾取动作完成后将其置为True,放置完成后将其置为False,以作逻辑 控制之用

TASKPERStooldata tGripper:=[TRUE,[[0,0,115],[1,0,0,0]],[1,[0,0,100],[0,1,0,0],0,0,0]]; !定义工具坐标系数据tGripper

TASKPERSwobjdata

WobjBuffer:=[FALSE,TRUE,\"\ !定义暂存盒工件坐标系WobjBuffer

TASKPERSwobjdata

WobjCNV:=[FALSE,TRUE,\"\],[1,0,0,0]]];

!定义输送带工件坐标系WobjCNV

TASKPERSloaddataLoadFull:=[0.5,[0,0,3],[1,0,0,0],0,0,0]; !定义有效载荷数据 LoadFull

四、主程序介绍:

PROC Main() !主程序

rInitialize; !调用初始化程序,初始化程序数据,io信号及返回Home点 此子程序中还需调用子程序rCheckHomePos,以检测机器人 是否在Home点,若不在则自动返回Home点

WHILETRUEDO !利用WHILE循环将初始化程序隔开

rPickPanel;

rPlaceInBuffer;

Waittime 0.3; ENDWHILE

ENDPROC

五、三个子程序介绍:

1、初始化程序

PROCrInitialize()

rCheckHomePos;

nCount:=1;

reset do32_VacuumOpen;

bPickOK:=False;

ENDPROC

!调用拾取程序

!调用放置程序

!循环等待时间,防止不满足机器人动作情况下程序扫描过 快,造成CPU过负荷 !初始化程序

!机器人位置初始化,调用检测是否在Home位置点程序,检测当前机器 人位置是否在HOME点,若在HOME点的话则继续执行之后的初始化相 关指令;若不在HOME点,则先返回至HOME点

!计数初始化,将用于太阳能薄板的计数数值设置为1,即从放置的第 一个位置开始摆放

!信号初始化,复位真空信号,关闭真空

!布尔量初始化,将拾取布尔量置为False

2、拾取太阳能薄板程序

PROCrPickPanel() !拾取太阳能薄板程序

IFbPickOK=FalseTHEN !当拾取布尔量bPickOK为False时,则执行IF条件下的拾取动作指令,否 则执行ELSE中出错处理的指令,因 为当机器人去拾取太阳能薄板时, 需保证其真空夹具上面没有太阳能薄板

MoveJoffs(pPick,0,0,100),vEmptyMax,z20,tGripper\\WObj:=WobjCNV;

!利用MoveJ指令移至拾取位置pPick点正上方Z轴正方向100mm处

WaitDI di01_PanelInPickPos,1; !等待产品到位信号di01_PanelInPickPos变为1,即太阳能薄板已到位

MoveLpPick,vEmptyMin,fine,tGripper\\WObj:=WobjCNV;

!产品到位后,利用MoveL移至拾取位置pPick点

Set do32_VacuumOpen; !将真空信号置为1,控制真空吸盘产生真空,将太阳能薄板拾起

WaitDI di02_VacuumOK,1; !等待真空反馈信号为1,即真空夹具产生的真空度达到需求后才认为已将 产品完全拾起。若真空夹具上面没有真空反馈信号,则可以使用固定等 待时间,如Waittime 0.3

bPickOK:=TRUE; !真空建立后,将拾取的布尔量置为TRUE,表示机器人夹具上面已拾取一 个产品,以便在放置程序中判断夹具的当前状态

GripLoadLoadFull; !加载载荷数据LoadFull

MoveLoffs(pPick,0,0,100),vLoadMin,z10,tGripper\\WObj:=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 press the start button\"; stop;

!如果在拾取开始之前拾取布尔量已经为TRUE,则表示夹具上面已有产 品,此种情况下机器人不能再去拾取另一个产品。此时通过写屏指令描 述当前错误状态,并提示操作员检查当前夹具状态,排除错误状态后 再 开始下一个循环。同时利用Stop指令,停止程序运行

ENDIF ENDPROC

3、计算位置程序

PROCrCalculatePos() !计算位置子程序,检测当前计数nCount的数值,以pPlaceBase为 基准点,利用Offs指令在坐标系WobjBuffer中沿着X、Y、Z方向 偏移相应的数值

TESTnCount CASE 1: pPlace:=offs(pPlaceBase,0,0,0);

若nCount为1,pPlaceBase点就是第一个放置位置,所以X、Y、Z 偏移值均为0,也可以直接写成:pPlace:=pPlaceBase; CASE 2:

pPlace:=offs(pPlaceBase,nXoffset,0,0); !若nCount为2,位置2相对于放置基准点pPlaceBase点在X正方向 偏移了一个产品间隔

CASE 3:

pPlace:=offs(pPlaceBase,0,nYoffset,0); !若nCount为3,位置3相对于放置基准点pPlaceBase点在Y正方向 偏移了一个产品间隔

CASE 4:

pPlace:=offs(pPlaceBase,nXoffset,nXoffset,0);

!若nCount为4,位置4相对于放置基准点pPlaceBase点在X、Y正 方向各偏移了一个产品间隔 DEFAULT

TPERASE

TPWRITE\"The CountNumber is error,please check it!\"; STOP;

!若nCount数值不为Case中所列的数值,则视为计数出错,写屏 提示错误信息,并利用Stop指令停止程序循环 ENDTEST

ENDPROC

因篇幅问题不能全部显示,请点此查看更多更全内容