abb机器人涂胶应用
![abb机器人涂胶应用](https://img.360docs.net/img76/1duaryxqdithuijvjwbriaddywcd44hm-61.webp)
![abb机器人涂胶应用](https://img.360docs.net/img76/1duaryxqdithuijvjwbriaddywcd44hm-72.webp)
涂胶应用一、新建空工作站:
布置如下
IRB2600_12_165__01 一台abb2600机器人
IRB5350_Gripper_01 涂胶枪
Robotfoot 涂胶枪底座
SC_VacuumGripper 机器人工具夹具
Table 桌子
部件_1 我们需要喷涂的工件
建立系统步骤免去,添加通信网络,语言等等。
二、创建工件工具数据,
因本涂胶工作站和其他有所不同,工具固定在桌子上,工件在机器人上,所以设置工具工件坐标要注意一个地方,就是保持的真和假(在视频校器操作手册173页,关于固定工具中有讲到。这里就不详细介绍,介绍怎么操作)
1)创建工件坐标
点击基本的其他里面创建工件坐标。
点击机器人握住工件,这里选真。
设置好位置后点击创建。
2)工具坐标
点击基本菜单下的其他创建工具数据,
机器人握住工具选择假,然后设置位置后即可,
三、定义目标的和路径
1)手动机器人关节到合适的位置点击视校目标点,并改名字为home点,
2)手动关节到工件上,此时贴紧工件这是夹取动作的夹取点。
3)设置夹取的入点和出点。
4)设置涂胶的第一个点
5)用自动生成路径生成完这段路径(到此目标点建立完成,接下来就是要用这些目标的组成连贯的路径)
四、建立路径
1)路径与步骤上右键添加home路径,夹取(放置和这个路径一样这里我们到时复制这个例行程序就可以了),main主函数,以及涂胶的工作路径。
2)设置好运动方式,涂胶工作点应为要精准所以用movel,其他可以用movej。速度随意,涂胶尽量慢点。工具工件坐标都是用我们之前建立的,转角半径,尽量用小店,用z0,在要夹取的那个点用fine(因为要职位夹取信号,不然没有到就走了。)
3)左键点住目标的拖放到对应的路径上,如:我们点住rhome拖至home路径里。其他的也可以这样做。
4)在main里分别调用会原位的例行程序。添加while指令实现循环。
5)机器人信号和smart组建信号连接,实现机器人控制smart组建。打开仿真菜单下的工作站逻辑,信号连接里添加(先在视校器里添加需要的信号。然后才来这边关联)
6)机器人系统的夹钳打开对应smart组建的di32真空打开,组建夹取夹取到位对应机器人的clampok,视角输出1和2分别对应组建的视角1和2视角添加看下一节。
7)添加视角。点击基本下的图形工具。
8)ctrl加shift和鼠标左键移动到合适的视角后点击创建视角。点击后会出现在左侧。方便用smart组建调用。
9)用smart组建切换视角。点击建模下的smart组建添加组件
设置组建。视角选择我们之前创建好的,时间自己定义。机器人速度快这里也快点。
用个输入触发视角变换。点击信号和链接,添加两个输入信号。在下面添加两个链接,吧上面两个信号和视角切换的执行链接。这样我们就可以用这个输入来切换视角了,如果要用机器人控制的话。需要去仿真下的工作站逻辑信号连接里吧机器人信号的输出和这里的输入关联后就可以用机器人来控制。其他组建也是如此。
五、程序解析。
MODULE Module1
CONST robtarget
rhome:=[[1410.058256291,-458.806,1291.654677714],[0.008332551,0,-0.99996528 4,0],[-1,0,-1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
CONST robtarget
rjiaqu:=[[761.67,-788.51,1145.53],[0.000393978,-8.51254E-07,1,-6.41131E-07],[0,0,0 ,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget
rjiaqu_2:=[[761.427698812,-788.511687264,1457.181658546],[0.000394045,-0.0000 01048,0.999999922,-0.000000818],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
CONST robtarget
Target_10:=[[742.568130945,-137.883667169,934.663780058],[0.999999923,-0.000 001088,-0.000393412,-0.000000224],[-1,-5,0,1],[9E9,9E9,9E9,9E9,9E9,9E9]];
CONST robtarget
Target_60:=[[742.56714695,4.861057668,934.664676402],[0.999999923,-0.0000013 17,-0.000391816,-0.000000016],[-1,-5,0,1],[9E9,9E9,9E9,9E9,9E9,9E9]];
CONST robtarget
Target_20:=[[742.57,162.22,934.66],[0.699773,0.000279193,-0.000275507,-0.714365 ],[-1,-4,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget
Target_30:=[[1142.568141584,162.11615424,934.977856238],[-0.000000224,-0.000 393412,0.000001089,0.999999923],[-1,-4,-2,1],[9E9,9E9,9E9,9E9,9E9,9E9]];
CONST robtarget
Target_40:=[[1142.568007127,-137.883845758,934.97850957],[-0.000000224,-0.000 393412,0.000001088,0.999999923],[-1,-4,-2,1],[9E9,9E9,9E9,9E9,9E9,9E9]];
CONST robtarget
Target_50:=[[742.568130945,-137.883667169,934.663780058],[0.707106568,-0.000 278954,-0.000277414,0.707106885],[-1,-5,-3,1],[9E9,9E9,9E9,9E9,9E9,9E9]];
CONST robtarget
rjiaqu10:=[[1504.48,-585.01,1155.11],[0.964365,0.000104718,-0.0141936,0.264194], [0,0,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget
Target_70:=[[742.62,-137.88,865.74],[0.707106,-0.000278965,-0.000277665,0.70710 7],[-1,-5,-3,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget
turu:=[[742.57,-523.84,934.66],[1,-1.32836E-06,-0.000393392,-1.71176E-07],[0,-4,-1, 1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget
Target_80:=[[744.79,-211.96,897.60],[0.695897,-0.000271977,0.177624,0.695828],[-1,-4,-3,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget
Target_90:=[[1410.06,-458.81,1291.65],[0.00833258,7.20716E-32,-0.999965,-6.0056 3E-34],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
以上是声明目标的
PROC home() //原位例行程序
MoveJ rhome,v1000,z100,Tooldata_1\WObj:=Workobject_2; //用movej回原位
Reset do2_shijiao1;
Reset do3_shijiao3; //复位两个视角。
ENDPROC
PROC jiaqu() //夹取例行程序
Set do3_shijiao3; //切换到视角3
MoveL rjiaqu,v1000,z100,Tooldata_1\WObj:=Workobject_2; //移动到夹取上方
MoveL rjiaqu_2,v1000,z100,Tooldata_1\WObj:=Workobject_2; //移动到夹取的位置
Set do_clamp; //输出夹取信号。
WaitDI di0_clampok, 1; //等待夹取到位信号。
WaitTime 0.1; //等待0.1s
MoveL rjiaqu,v1000,z100,Tooldata_1\WObj:=Workobject_2; //移动到夹取上方的
!MoveJ rjiaqu10, v1000, z100, Tooldata_1\WObj:=Workobject_2; //注释了没用
ENDPROC
PROC jiaquCopy() //放例行程序
Set do3_shijiao3; //切换视角到3
MoveL rjiaqu, v1000, z0, Tooldata_1\WObj:=Workobject_2;
MoveL rjiaqu_2, v1000, z0, Tooldata_1\WObj:=Workobject_2;
WaitTime 1; //移动到放置的上方后下来,在等待0.1s
Reset do_clamp;
WaitDI di0_clampok, 0; //释放夹具后等待信号没有。
MoveL rjiaqu,v1000,z100,Tooldata_1\WObj:=Workobject_2;
MoveJ rhome, v1000, z100, Tooldata_1\WObj:=Workobject_2; //移动到上方后回原位。
ENDPROC
PROC tujiao() //涂胶工作程序。
ConfL\Off; //轴监控l关闭
Set do2_shijiao1; //切换视角。
MoveJ turu, v1000, z50, Tooldata_1\WObj:=Workobject_2;
MoveJ Target_10, v1000, z10, Tooldata_1\WObj:=Workobject_2;
MoveL Target_60, v1000, z1, Tooldata_1\WObj:=Workobject_2;
MoveL Target_20, v1000, z1, Tooldata_1\WObj:=Workobject_2;
MoveL Target_30, v1000, z1, Tooldata_1\WObj:=Workobject_2;
MoveL Target_40, v1000, z1, Tooldata_1\WObj:=Workobject_2;
MoveL Target_50, v1000, z1, Tooldata_1\WObj:=Workobject_2;
MoveL Target_70, v1000, z1, Tooldata_1\WObj:=Workobject_2;
MoveJ rhome, v1000, z1, Tooldata_1\WObj:=Workobject_2;
Reset do2_shijiao1;
Reset do3_shijiao3; //以上是挨个到工作点位。后复位视角。
ENDPROC
PROC main() //主程序。
home; //调用回原位程序,这里可以用ini初始化代替。随个人编程风格
WHILE TRUE DO //利用while使其能循环这里最下面用了stop,所以就执行一次后停止,要不间断的话吧stop去了。用个等待开始信号在前面实现循环。
jiaqu;
tujiao;
jiaquCopy; //分别调用夹取和涂胶工作以及放置例行程序。后停止。
Stop;
ENDWHILE
ENDPROC
ENDMODULE
最后为了更加美观添加合适的一些装饰等等。