点焊作业工业机器人离线编程与虚拟仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(封面)
XXXXXXX 学院
点焊作业工业机器人离线编程与虚拟仿真题目:
院(系):
专业班级:
学生姓名:
指导老师:
时间: 年月日
1点焊作业机器人工作站构成 (2)
1.1 实训任务实施 (3)
1.1.1 解压并初始化 (3)
2 . I/O 配置 (6)
3.程序模板导入 (7)
4 .坐标系标定 (16)
5.录制机器人虚拟仿真视频 (20)
参考文献 (20)
1点焊作业机器人工作站构成
本工作站为机电一体化训练平台模拟工作站,综合了码垛应用,压铸机取件,轨迹类应用,TCP标定等教学模板,一机多用,具有丰富的训练素材,机器人工作站布局如图1-1 所示。

图1.1
1.1实训任务实施
1.1.1解压并初始化
双击圧缩包文件"ST_Platform. rspag n,如图1-2所示,根据解压向导的提示解压该工作站。

09.ST.PIatform
图1-2
解压完成后可进行仿真运行,如图1・3所示。

仿真启动后,机器人执行初始化操作,若机器人无法自动回至工作原位,可手动将机器 人调整至机械原点,再重新执行仿真播放,如图1-4所示。

图g
“回到机
分别是可自动运行的码垛,圧铸机取件,轨迹应用以及一个手
动模板TCP 标定。

仿真启动后,需要手动选择当前激活的是哪一个自动运行的功能模板, 可通过工作站信号进行选择,如图1-5所示。

wxa ■-也
OSI
1
rt!
—qt*
S :.»Wf>m
Ol "CT 加你: exsifio
l •单击
“播
本工作站分 Z 向上”
筠KFt
f 5: © sT_n4ifH»t w
d"・. 4rf*«> 0]
j 创皿tftfMl OH iiTAXW 垃 ❻j | <nroW ・ Oi
I 1KMCK <>: ~~X ・| W —■>>>— <t| ]壬单击 人
lorm-AiB RotctStud^
址匸二£
CM
6« 2LT ZA
栄:
W S4 *«:
"Mm W aw •
flW?l«S
Qrt OH
单击“机器
Foundry为压铸机取件应用,Pallet为码垛应用,Practise为轨迹类应用,手动执行模板TCP标定使用的工具与Practise —致,无需执行仿真播放,直接激活Practise,切换为TCP标定的工具,进行手动TCP标定练习。

激活对应的功能模板后,即可查看到机器人对应的执行任务,依次进行激活,当仿真结束后,可单击仿真“停止”,若需回复至初始状态,可以通过重置下拉菜单中的保存状态进行工作站初始化。

初始化操作如图1-6所示。

初始化机器人的步骤是:将机器人恢复为出厂设置,然后在此工作站基础上依次完成I/O配置,程序导入,坐标系标定,H标点示教等操作,最终将机器人工作站复原至之前可正常运行的状态。

初始化前,先做好机器人备份,以备后面使用,在“控制器” 菜单中可进行备份
图1-7
完成备份后,在“控制器”菜单的“重启”中单击“1-启动”,初始化机器人,如图
1-8所示。

出现提示框,单击“确定”即可,等待机器人重新启动,机器人初始化结束。

图1-8
2 . I/O配置
在“控制器”菜单中打开虚拟“示教器”,先将界面语言改为中文,之后依次单击“ABB 菜单” -“配置”,进入“I/O主题”,配置I/O信号。

此工作站配置了1个DSQC652 通信板卡(数字量16进16出),则需要在Unit中设置此I/O的相关参数,配置见表l-lo
需要配置的I/O信号见表1-2.
3.程序模板导入
I/O配置完成后,将程序模板导入该机器人系统中。

通过示教器的程序编辑器进行程序模块的加载,依次单击“ABB菜单”-“程序编辑器”,若出现加载程序提示框,暂时单击“取消”,然后在程序模块界面进行加载,如图1-9所示。

浏览至之前做的备份文件,路径一般为:・・・・/备份文件名/RAPID/TASKI/PROGMOD, 如图1-10所示。

加载完成后,选中该模板,单击“显示例行程序”,看到对应的程序。

程序注解如下:
MODULE MainModule
PERS tooldata tServoGun :=
[TRUE,[[315.617,-546.323,311.783],[0,0.707107,0.707107,0]],[80,[23.1,-
94.9,285.6],[1,0,0,0 ],0,0,8.383]];
CONST robtarget pHome :=
[[372.05,-568.49,1258.93],[0.712795,-0.0315415,-0.0295508,0.700039],[-l,-l,-l,0],[9E+09,9
E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget
pTipDress:=[[ 132&6& 105&85,1549.61 ],[0.549848,0.473897,0.487383,-0.485332],[0,1 ,-3,0], [9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
VAR intnum intnol:=0;
VAR intnum intno2:=0;
PERS num nTipCount:=l;
PERS forcedata force3:=[1500J.5];
CONST speeddata vSmall := [500,500,50,50];
CONST speeddata vBig := [2000,500,5000,1000];
CONST speeddata vMid := [1000,500,5000,1000];
CONST robtarget
pHome 10:=[ [733.50,-657.73,1290.56],[0.47355,-0.0388763,-0.0188857,0.879707],[-1,-1,-
1,0 ],[99.9896,9E+09,9E+09,9E+09,9E+09,9E+09]];
VAR bool bStartl := FALSE;
TASKPERS spotdata spot2 := [2,5];
TASKPERS spotdata spot3 := [3,5];
TASKPERS spotdata spot4 := [4,5];
TASKPERS spotdata spot5 := [5,5];
TASKPERS spotdata spot6 := [6,5];
PROC main()
InitAll;
WHILETRUEDO
IF di_StartPro = 1 THEN
ClkReset Timer;
ClkStart Timer;
SpotCar;
ClkStop Timer;
nCount:=nCount+1;
nCycleTime 1 :=ClkRead(Timer);
ENDIF
CycleCheck;
ENDWHILE
ENDPROC
PROC InitAll()
AccSet 50,50;
VelSet 80,1000;
Set gl_reset_fault;
WaitTime 1;
Reset gl_reset_fault;
lOunOpen;
MoveHome;
ClkReset Timer;
ENDPROC
PROC SpotCar()
!add instnictions;
JActUnit SERVOGUN;
MoveJ pHome, vMid. fine, tServoGun\WObj:=wobj0;
First:
MoveJ
[[843.70,303.73,299.87],[0.531401,0.45793&-0.483967,0.523146],卜1,0, ・l,0],[9E+09,9E+09,
9E+09,9E+09,9E+09,9E+09]], vMid, z50, tServoGun\WObj:=wobjO;
MoveL
[[1702.79,303.73,299.87],[0.531401,0.457937, ・0.483967,0.523146],卜1,0, ・l,0],[9E+09,9E+09 ,9E+09,9E+09、9E+09,9E+09]], vMid, z5, tServoGun\WObj:=wobjO;
MoveL
[[1702.79,353.25,299.87],[0.531401,0.457937, ・0.483967,0.523147],卜1,0, ・l,0],[9E+09,9E+09 ,9E+09,9E+09,9E+09,9E+09]], vSmall, z5, tServoGun\WObj:=wobjO;
SpotL
[[1702.79,353.25,299.87],[0.531401,0.457937,4).483967,0.523147],卜1,0,-1,0],[9E+09,9E+09 ,9E+09,9E+09,9E+09,9E+09]], vSmall, gunl, spot 1, tServoGun\WObj:=wobjO;
rGun;
SpotL
[[1702.79,353.25,333.51],[0.531401,0.457937,-0.483967,0.523147],卜1,0,-1,0],[9E+09,9E+09 ,9E+09,9E+09,9E+09,9E+09]], vSmall, gunl, spot2, tServoGun\WObj:=wobjO;
rGun;
SpotL
[[1702.79,353.25,419.95],[0.531401,0.457937, ・0.483967,0.523147], [-l,0,-l,0],[9E+09,9E+09 ,9E+09,9E+09,9E+09,9E+09]], vSmall, gunl, spot 1, tServoGunXWObj:=wobj0;
rGun;
MoveL
[[1702.79,287.05,419.95] ,[0.531401,0.457937,-0.483967,0.523147],[-1,0,-
1,0],[9E+09,9E+09 ,9E+09,9E+09.9E+09,9E+09]], vSmall, z5, tServoGun\WObj:=wobjO;
MoveJ
[[1015.64,286.77,420.64],[0.531416,0.457922, ・0.48395&0.523153],卜l,0,-
l,0],[9E+09,9E+09 ,9E+09,9E+09,9E+09,9E+09]], vMid, z5, tServoGun\WObj:=wobjO;
Second:
MoveL
[[1015.64,286.77,420.64],[0.594919,0.275335,-0.287024,0.698484],[0,0,-1,0],[9E+09,9E+09,
9E+09,9E+09,9E+09,9E+09]], vMid, z5, tServoGun\WObj:=wobjO;
MoveL
[[1001.67,-46.86,986.24],[0.663614,-0.0271593,-0.0240759,0.747194],[0,-1,0,0],[9E+09,9E+ 09,9E+09,9E+09,9E+09,9E+09]], vMid, z5, tServoGun\WObj:=wobjO;
MoveL
[[1730.13,-407.96,1039.25],[0.663614,-0.0271592,-0.0240758,0.747194],[0,-1 ,・ 1,0],[9E+09,9 E+09,9E+09,9E+09,9E+09,9E+09]], vSmall, z5, tServoGun\WObj:=wobjO;
SpotL
[[1735.28,-407.97,968.43],[0.663614,-0.0271592,-0.0240757,0.747194],[0,-l,-l,0],[9E+09,9
E+09,9E+09,9E+09,9E+09,9E+09]], vSmalL gunl, spot 1, tServoGun\WObj:=wobjO;
i<Jun;
SpotL
[[1739.40,-442.72,968.74],[0.663614,-0.0271592,-0.0240757,0.747194],[0,-l,-1,0],[9E+09,9
E+09,9E+09,9E+09,9E+09,9E+09]], vSmall, gunl, spot 1, tServoGunXWObj:=wobj0;
i<Jun;
SpotL
[[1742.27,-458.49,96&95] ,[0.663614,-0.0271592,-0.0240757,0.747194],[0,-1,-1,0],[9E+09,9 E+09,9E+09,9E+09,9E+09,9E+09]], vSmalL gunl, spot 1, tServoGun\WObj: = wobj0: rGun;
SpotL
[[1745.33,-484.31,969.17] ,[0.663614,-0.0271592,-0.0240758,0.747194],[0,-1,-1,0],[9E+09,9 E+09,9E+09,9E+09,9E+09,9E+09]], vSmalL gunl, spot 1, tServoGun\WObj: = wobj0:
rGun;
MoveL
[[1739.82,-484.31,1044.97],[0.663614,-0.0271592,-0.0240758,0.747194],[0,-1,-1,0],[9E+09,9 E+09,9E+09,9E+09,9E+09,9E+09]], vMid, z5, tServoGun\WObj:=wobjO;
MoveL
[[1347.63,-531.06J 016.45],[0.663614,-0.0271592,-0.0240758,0.747194],[0,-1 ,-l ,0],[9E+09,9 E+09,9E+09,9E+09,9E+09,9E+09]], vMid, z5, tServoGun\WObj:=wobjO;
MoveJ
[[1333.58,-1140.99,1015.47],[0.663614,-0.0271592,-0.0240758,0.747194],[-1,0,-1,0],[9E+09, 9E+09,9E+09,9E+09,9E+09,9E+09]], vMid, z5, tServoGun\WObj:=wobjO;
MoveJ
[[1333.58,-1140.99,1015.47],[0.663614,-0.0271592,-0.0240758,0.747194],[-1,0,-1,0],[9E+09, 9E+09,9E+09,9E+09,9E+09,9E+09]], vMid, z5, tServoGun\WObj:=wobjO;
MoveJ
[[1333.58,140.99,1015.47],[0.663614,4).0271592,-0.024075&0.747194],卜1,0,-1,0],[9E+09,
9E+09,9E+09,9E+09,9E+09,9E+09]], vMid, z50, tServoGun\WObj:=wobjO;
Third:
MoveL
[[1752.46,-1187.12,1045.94],[0.663614,-0.0271591 ,-0.0240757,0.747194],[-1,0,-1,0],[9E+09, 9E+09,9E+09,9E+09,9E+09,9E+09]], vMid, zl, tServoGun\WObj:=wobjO;
MoveL
[[1756.80,-1187.12,986.29],[0.663614,-0.027159,-0.0240757,0.747194],[-1,0,-1,0],[9E+09,9
E+09,9E+09,9E+09,9E+09,9E+09]], vMid, zl, tServoGun\WObj:=wobjO;
MoveL
[[1756.80,-1187.12,986.29],[0.663614,-0.027159,-0.0240757,0.747194],[-l ,0,・ 1,0],[9E+09,9 E+09,9E+09,9E+09,9E+09,9E+09]], vSmall, zl, tServoGun\WObj:=wobjO;
SpotL
[[1756.80,-1187.12,986.29],[0.663614,-0.027159,-0.0240757,0.747194],[-l ,0,-1,0],[9E+09,9
E+09,9E+09,9E+09,9E+09,9E+09]], vSmall, gunl, spot 1, tServoGun\WObj:=wobjO;
rGun;
SpotL
[[1758.10,-1198.05,986.38],[0.663614,-0.027159,-0.0240757,0.747194],[-1,0,-1,0],[9E+09,9
E+09,9E+09,9E+09,9E+09,9E+09]], vSmall, gunl, spot 1, tServoGun\WObj:=wobjO;
rGun;
MoveL
[[1755.92, "213.93,1042.37],[0.663614,-0.027159,-0.0240757,0.747194],卜1,0, ・l,0],[9E+09,9
MoveL [[126&55, J272.03,1006.93],[0.663614厂0.027159厂0.0240757,0.747194],卜l,0,-l,0],[9E+09,9 E+09,9E+09,9E+09,9E+09,9E+09]], vMid, zl, tServoGun\WObj:=wobjO;
MoveL
[[1268.55,-1272.03,1006.93],[0.663614,-0.027159,-0.0240757,0.747194],[-1,0,-1,0],[9E+09,9
E+09,9E+09,9E+09,9E+09,9E+09]], vMid, zl, tServoGun\WObj:=wobjO;
MoveJ
[[1268.55,-1272.03,1006.93],[0.551606,-0.437362,0.202392,0.680796],[-1 ,・2,0,0],[9E+09,9E +09,9E+09,9E+09,9E+09,9E+09]], vMid, z50, tServoGun\WObj:=wobjO;
Fourth:
MoveJ
[[1245.49,-1225.06,1532.43],[0.551606,-0.437362,0.202392,0.680796],[-1 ,-l ,0,0],[9E+09,9E
+09,9E+09,9E+09,9E+09,9E+09]], vMid, z50, tServoGun\WObj:=wobjO;
MoveJ
[[1571.63,-1320.78,1532.43],[0.551606,-0.437362,0.202392,0.680796],[-1 ,-l ,0,0],[9E+09,9E
+09,9E+09,9E+09,9E+09,9E+09]], vMid, z50, tServoGun\WObj:=wobjO;
MoveL
[[1593.54, “466.09,1532.43],[0.551606, ・0.437362,0.202392,0.680796],卜1,・1,0,0],[9E+09,9E +09、9E+09,9E+09,9E+09,9E+09]], vSmall, zl, tServoGun\WObj:=wobjO;
SpotL
[[1593.54, “466.09,1532.43],[0.551606,4).437362,0.202392,0.680796],卜1,・1,0,0],[9E+09,9E +09,9E+09,9E+09,9E+09,9E+09]], vSmall, gunl, spot 1, tServoGun\WObj:=wobj0: rGun;
SpotL
[[1593.54,-1466.09,1574.67],[0.551606,-0.437362,0.202392,0.680796],[-1,-1,0,0],[9E+09,9E
+09、9E+09,9E+09,9E+09,9E+09]], vSmall, gunl, spot 1, tServoGun\WObj: = wobj0: lOun;
SpotL
[[1593.54,-1466.09,1553.67],[0.551606,-0.437362,0.202392,0.680796],[-1,-1,0,0],[9E+09,9E
+09,9E+09,9E+09,9E+09,9E+09]], vSmall, gunl, spot 1, tServoGun\WObj:=wobj0;
rGun;
MoveL
[[1577.54,・ 1344.09,1615.67],[0.551606,-0.437362,0.202392,0.680796],[-1 ,-l ,0,0],[9E+09,9E +09,9E+09,9E+09,9E+09,9E+09]]‘ vSmall, z5, tServoGun\WObj:=wobjO;
MoveJ
[[1225.53,-1344.09,1615.67],[0.551606,-0.437362,0.202392,0.680796],[-1,-1,0,0] ,[9E+09,9E
MoveJ [[930.25,-1344.09,1615.67],[0.551606,-0.437362,0.202392,0.680796],[-1,-1,0,0],[9E+09,9E+ 09,9E+09,9E+09,9E+09,9E+09]], vMid, z50, tServoGun'WObj:二wobjO;
MoveJ pHome, vMid, fine, tServoGun\WObj :=wobj0;
'DeactUnit SERVOGUN;
ENDPROC
PROC CaL()
MoveAbsJ [[0,0,0,0,0,0],[ 100,9E+09,9E+09,9E+09,9E+09,9E+09]]\NoEOffs, vMid, z50, tServoGun;
ENDPROC
PROC CycleCheck()
IF curr_gundata{ 1} .weld_counter>=1000 THEN
IF nTipCount>8 THEN
ChangeTip;
nTipCount:=0;
ELSE
TipDress;
Incr nTipCount;
ENDIF
curr_gundata{ 11 .weld_counter:=0;
ENDIF
WriteTP;
WaitTime 0.2;
ENDPROC
PROC TipDress()
!ActUnit SERVOGUN;
Set gl_open_gun;
MoveJ pHome, vMid, fine, tServoGun\WObj :=wobj0;
MoveJ
[[1405.60,855.77,1532.01],[0.549848,0.473897,0.487382,-0.485332],[0,1,-3,0],[9E+09,9E+0
9,9E+09,9E+09,9E+09,9E+09]], vMid, zlO, tServoGun\WObj:=wobjO;
MoveL
[[1332.08,1058.85,1549.60],[0.549848,0.473897,0.487383,-0.485332],[0,1 ,・3,0],[9E+09,9E+ 09,9E+09,9E+09,9E+09,9E+09]], vMid, zlO, tServoGun'WObj:二wobjO;
[[1332.O8JO58.85J 549.60],[0.549848,0.473897,0.487383r0.485332]J0J「3,0],[9E+09,9E+ 09,9E+09,9E+09,9E+09,9E+09]], vMid, zl, tServoGun\WObj:=wobjO;
Set do_TipDress;
MoveL pTipDress,vSmall,fine,tServoGun;
Set gl.equalize;
SetForce gun 1, force 1;
Reset gl_equalize;
MoveL
[[1360.14,1058.85,1549.61 ],[0.549848,0.473897,0.487383,-0.485332],[0,1 ,・3,0],[9E+09,9E+ 09,9E+09,9E+09,9E+09,9E+09]], vMid, fine, tServoGun\WObj:=wobjO;
MoveL
[[1360.14,1058.85,1549.61 ],[0.549848,0.473897,0.487383,-0.485332],[0,1 ,・3,0],[9E+09,9E+ 09,9E+09,9E+09,9E+09,9E+09]], vMid, zlO, tServoGun\WObj:=wobjO;
Reset do_TipDress;
MoveJ
[[1360.14,874.68,1549.61],[0.549848,0.473897,0.487383,-0.485332],[0,1 ,・3,0],[9E+09,9E+0 9,9E+09,9E+09,9E+09,9E+09]], vMid, zlO, tServoGun\WObj:=wobjO;
MoveJ
[[1360.14,874.68J 549.61],[0.549848,0.473897,0.487383,-0.485332],[0,1,-3,0],[9E+09,9E+0 9,9E+09,9E+09,9E+09,9E+09]], vMid, z5, tServoGun\WObj:=wobjO;
JCalibrate gunl\TipChg;
MoveJ pHome, vMid, fine, tServoGun\WObj:=wobjO;
curr_gundata{ 1}. weld_counter:=0;
!DeactUnit SERVOGUN;
ENDPROC
PROC ChangeTipO
!ActUnit SERVOGUN;
MoveJ pHome, vMid, fine, tServoGun\WObj:=wobjO;
MoveJ
[[283.81,-1274.10,1581.30],[0.764804,-0.20233,0.249191,0.558606],卜1,-1,-1,0],[9E+09、9E+ 09,9E+09,9E+09,9E+09,9E+09]], vMid, fine, tServoGun\WObj:=wobjO;
ErrWrite "Change Gun Tip*\H Open Door H;
Stop;
[[283.81r1274.10J581.30],[0.764804r0.20233,0.24919L0.558606]J-l r lrL0]J9E+09,9E+
09,9E+09,9E+09,9E+09,9E+09]], vMid, fine, tServoGun\WObj:=wobjO;
!CaIibrate gunl\TipChg;
MoveJ pHome, vMid, fine, tServoGunXWObj :=wobjO;
!DeactUnit SERVOGUN;
ENDPROC
PROC Routine 1()
VelSet 100, 1000;
AccSet 10, 10;
SpotL
[[733.51 ,-657.71,1290.54],[0.473529,-0.0388379, ・0.0188713,0.87972],[-1,-1,-1,0],[5,9E+09, 9E+09,9E+09,9E+09,9E+09]], vSmall, gun 1, spot 1, tServoGun\WObj:=wobj0;
ENDPROC
PROC GoToSycPos()
MoveAbsJ [[0,0,0,0,0,0],[0,9E+09,9E+09,9E+09,9E+09,9E+09]]\NoEOffs, vlOOO, z50, tServoGun;
ENDPROC
PROC rGunOpen()
Reset gl_close_gun;
Set gl_open_gun;
WaitDI gl_gun_open, 1;
ENDPROC
PROC rGunClose()
Reset gl_open_giin;
Set gl_close_gun;
WaitDI gl_gun_close, 1;
ENDPROC
PROC rGun()
WaitTime 1;
i-GunClose;
WaitTime 2;
lOunOpen;
ENDPROC
ENDMODULE
4 •坐标系标定
在此综合平台中有3个工具数据需要进行标定,分别是码垛工具Gripper,圧铸取件工具Vacuum,练习用工具CalibTool.
码垛用工具Gripper如图1-11所示。

图Ml
丄具数据Gripper的各项参数见表1-3,在示教器中编辑工具数据Gripper,确认各项数值。

压铸取件工具Vacuum如图1-12所示。

图1-12
标定之前,要先佔算该工具的重量以及重心偏移,在示教器中编辑工具数据Vacuum,确认关于load方面的各项数值,见表1-4o
此处的工具负载参数指示佔算的数值,例如重量为1. 5kg.重心X偏移为1。

在实际应用过程中,工具重心以及偏移的设置通常采用系统例行程序Loadldentify来自动标定, 负载标定方法可参考WWW. robotpartner, cn/abb网站中对应的视频教程。

最后利用TCP 标定方法进行标定,固定的校准针可使用练习模板中的校准针。

练习模板丄具CalibTool如图1-13所示。

图1-13
工具坐标示意图如图1T4所示。

图M4
标定之前,要先佔算该工具的重量以及重心偏移,在示教器中编辑匸具数据CalibTool, 确认关于load方面的各项数值,见表1-5。

5.录制机器人虚拟仿真视频
参考文献
[1]叶辉,等.工业机器人实操与应用技巧[M].北京:机械工业出版社.2010
[2]叶辉,等.工业机器人典型应用案例精析[M].北京:机械工业出版社2013.。

相关文档
最新文档