当前位置:文档之家› 工业机器人编程

工业机器人编程

工业机器人编程
工业机器人编程

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

学院机械与汽车工程学院

专业机械工程

学生姓名黄耀坤

学生学号 201330110456

指导教师

一、小组任务及分工

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,"",[[-350.365,-355.079,418.761],[0.707547,0,0,0.706666]],[[0,0,0],[1,0,0,0]]];

!定义暂存盒工件坐标系WobjBuffer

TASKPERSwobjdata

WobjCNV:=[FALSE,TRUE,"",[[-726.207,-645.04,600.015],[0.709205,-0.0075588,0.000732113,0.704961]],[[0,0,0 ],[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; !循环等待时间,防止不满足机器人动作情况下程序扫描过

快,造成CPU过负荷

ENDWHILE

ENDPROC

五、三个子程序介绍:

1、初始化程序

PROCrInitialize()!初始化程序

rCheckHomePos;!机器人位置初始化,调用检测是否在Home位置点程序,检测当前机器

人位置是否在HOME点,若在HOME点的话则继续执行之后的初始化相

关指令;若不在HOME点,则先返回至HOME点

nCount:=1;!计数初始化,将用于太阳能薄板的计数数值设置为1,即从放置的第

一个位置开始摆放

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

bPickOK:=False;!布尔量初始化,将拾取布尔量置为False

ENDPROC

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

相关主题
文本预览
相关文档 最新文档