涂胶应用一、新建空工作站:布置如下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 Module1CONST robtargetrhome:=[[1410.058256291,-458.806,1291.654677714],[0.008332551,0,-0.99996528 4,0],[-1,0,-1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];CONST robtargetrjiaqu:=[[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 robtargetrjiaqu_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 robtargetTarget_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 robtargetTarget_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 robtargetTarget_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 robtargetTarget_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 robtargetTarget_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 robtargetTarget_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 robtargetrjiaqu10:=[[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 robtargetTarget_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 robtargetturu:=[[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 robtargetTarget_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 robtargetTarget_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; //复位两个视角。
ENDPROCPROC jiaqu() //夹取例行程序Set do3_shijiao3; //切换到视角3MoveL 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.1sMoveL rjiaqu,v1000,z100,Tooldata_1\WObj:=Workobject_2; //移动到夹取上方的!MoveJ rjiaqu10, v1000, z100, Tooldata_1\WObj:=Workobject_2; //注释了没用ENDPROCPROC jiaquCopy() //放例行程序Set do3_shijiao3; //切换视角到3MoveL rjiaqu, v1000, z0, Tooldata_1\WObj:=Workobject_2;MoveL rjiaqu_2, v1000, z0, Tooldata_1\WObj:=Workobject_2;WaitTime 1; //移动到放置的上方后下来,在等待0.1sReset do_clamp;WaitDI di0_clampok, 0; //释放夹具后等待信号没有。
MoveL rjiaqu,v1000,z100,Tooldata_1\WObj:=Workobject_2;MoveJ rhome, v1000, z100, Tooldata_1\WObj:=Workobject_2; //移动到上方后回原位。
ENDPROCPROC 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; //以上是挨个到工作点位。