2、 程序代码
Ovrd 30 '速度30%
Mov P0 '开始移动到安全位置
HOpen 1 '打开手抓
If M_NvOpen(1)<>1 Then '如果端口没有打开
NVOpen "COM2:" As #1 '打开2号端口作为1号
EndIf
Wait M_NvOpen(1)=1 '等待打开
NVLoad #1,"2013" '读入视觉里的程序“2013”
NVPst #1,"2013","E76","J81","M100",0 '调用程序“2013”存入单元E76到J81中的数据
For M1=1 To M_NvNum(1) '数据编号从1开始循环
Mov P1 '抓瓶位置前方
Mvs P2 '抓瓶位置
Dly 0.1 '延时
HClose 1 '闭合手抓
Dly 0.2
Mov P6 '抓瓶位置上方
Mov P4 '姿态调整
Mov P5 '放瓶位置上方
P10.X = P_NvS1(M1).X '调取视觉输出X坐标
P10.Y = P_NvS1(M1).Y '调取视觉输出Y坐标
P10.Z = 450
P11=P10
P11.Z=370
Mov P10 '移动至放瓶位置
Mvs P11 '垂直下放瓶
Dly 0.1
HOpen 1
Dly 0.2
P11.X=P10.X-20 '以下程序前后左右晃动是为了使瓶子更容易落入孔中
Mvs P11
P11.X=P10.X+20
Mvs P11
P11.Y=P10.Y-20
Mvs P11
P11.Y=P10.Y+20
Mvs P11
P11.X=P10.X-20
Mvs P11
P11.X=P10.X+20
Mvs P11
P11.Y=P10.Y-20
Mvs P11
P11.Y=P10.Y+20
Mvs P11
P10.Y=P10.Y+50
Mvs P10
Next M1 '下一个放瓶编号
Mov P0
Hlt ' 暂停
End
各点坐标:
P0=(463.910,-75.340,680.230,-120.360,75.850,-46.420)(6,0)
P1=(459.520,-147.240,328.670,-121.440,76.300,-46.810)(6,0)
P2=(453.870,-70.340,329.430,-120.450,75.850,-46.490)(6,0)
P3=(57.620,-500.830,562.160,-125.830,85.470,152.050,0.000,0.000)(6,0)
P4=(403.440,-178.560,679.430,-97.990,84.750,-117.210)(6,0)
P5=(8.460,-433.000,696.350,-106.650,84.670,170.590)(6,0)
P6=(463.910,-75.340,680.230,-120.360,75.850,-46.420)(6,0)
P7=(8.460,-433.000,696.350,-106.650,84.670,170.590)(6,0)
P10=(270.060,-647.260,450.740,-125.830,85.470,152.050,0.000,0.000)(6,0)
P11=(270.060,-647.260,362.160,-125.830,85.470,152.050,0.000,0.000)(6,0)
3、 最终效果
本程序最终效果,12个瓶中有两个未能成功落入孔中,抓瓶和下落过程还有偏差,有待完善!
4、 感想:
这次实习通过对三菱六自由度机械手的学习,让我学到了很多东西。刚开始的时候感觉困难重重,不知道该从何下手。通过对使用文档的阅读和向老师请教,慢慢熟悉了机械手的示教方法和编程方法,后来又学会了视觉系统的使用以及校正。最后通过努力,将视觉系统与机械手结合在一起,达到了预期的效果。在这短短几天的实习中,每天都有新的问题,同时也有新的进展。这让我明白了无论学习还是做事,只要迎难而上并持之以恒,没有解决不了的问题。
`
4