YAMAHA YK400xg SCARA工业机器人源程序,附编程手册学习文档!
[PGM]
NAME=0702
'''''''''''输入IO定义'''''''''''''''
'
''''''DI20 有料信号'''''
''''''DI21 拍照1完成信号'''''
''''''DI22 拍照2完成信号'''''
''''''DI23 真空吸OK信号'''''
''''''DI24 可以放料信号'''''
''''''DI25 暂停信号'''''
''''''DI26 待机点信号'''''
'
'
'''''''''''输出IO定义'''''''''''''''
'
''''''DO20 真空吸'''''
''''''DO21 吸料完成'''''
''''''DO22 到拍照1点'''''
''''''DO23 到拍照2点'''''
''''''DO24 放料完成'''''
''''''DO25 安全信号'''''
'
'
'''''''''''点位定义'''''''''''''''
'
''''''P0点 待机点'''''
''''''P1点 取料点'''''
''''''P2点 拍照1点'''''
''''''P3点 拍照2点'''''
''''''P4点 放料点'''''
'
'
START *ZT,T2 '执行暂停任务
GOSUB *JSQLD '调用计算取料点子程序
GOSUB *DYQL '调用拍照位子程序
GOSUB *DJ '待机子程序
GOSUB *ZDSD '调用指定速度
'
*MIAN: '主函数
GOSUB *QULIAO '调用取料
GOSUB *CCD '拍照
GOSUB *FALIAO '放料
GOTO *MIAN
'
*DJ:
P500=WHRXY '获取当前点坐标
NX!=LOCX(P500)
NY!=LOCY(P500)
NZ!=LOCZ(P500)
NR!=LOCR(P500)
P501=P500
LOCY(P501)=LOCY(P0)
LOCZ(P501)=z!
A=ARMCND '获取机械手手系
IF A=0 THEN
RIGHTY
ELSE
LEFTY
ENDIF
WAIT DI2(6)=1 '待机点信号
SPEED 10
MOVE P,P501,Z=Z!
WAIT ARM
MOVE P,P0,Z=Z!
RIGHTY
MOVE P,P0,Z=Z! 'p0为待机点
DO2(5)=1 '输出安全信号DO(25)
RETURN
'
*QULIAO:
WAIT DI2(0)=1 'DI20 可以取料
DO2(4)=0 'DO24 放料信号置0
DO2(5)=0 'DO25 安全信号置0
MOVE P,P1,Z=Z! '移动到P1点(取料点)
WAIT ARM
DO2(0)=1 'DO20 真空吸
WAIT DI2(3)=1 'DI23 真空吸OK
START *ZK,T3
DO(21)=1 'DO21 吸料完成
'DELAY 100
'DO(21)=0
MOVE P,P2,Z=Z! '移动到P2点(拍照点)
RETURN
'
*CCD:
MOVE P,P2 '移动到P2点(拍照点)
WAIT ARM
DO2(2)=1 'DO22 到达拍照1点
'DELAY 100
'DO(22)=0
'DO(21)=0
WAIT DI2(1)=1 '等待拍照1完成信号
DO2(2)=0 '拍照1点信号置0
MOVE P,P3 '移动到拍照2点
WAIT ARM
DO2(3)=1 '到达拍照2点
'DELAY 100
'DO2(3)=0
WAIT DI2(2)=1 '等待拍照2完成信号
DO2(3)=0 '拍照2点信号置0
RETURN
'
*FALIAO:
MOVE P,P4,Z=Z! '移动到放料点P4
WAIT ARM
CUT T3
DO2(0)=0 '破真空
DELAY 100
WAIT DI2(3)=0 '破真空完成
DRIVE(3,0.00) '抬高Z轴到原点
DO2(4)=1 '放料完成
'DELAY 100
'DO(24)=0
RETURN
'''''P10为基准的长宽高'''''''''''''
'''''P12为基准取料点'''''''''''''''
'''''P11为现产品长宽高'''''''''''''''
'''''LOCR(P11)为产品序号'''''''''''''
'''''计算取料点'''''''''''''''''''''
'
*JSQLD:
AA!=LOCX(P11)-LOCX(P10)
BB!=LOCY(P11)-LOCY(P10)
CC!=LOCZ(P11)-LOCZ(P10)
P[100]=P12
LOCZ(P[100])=LOCZ(P12)-CC!
LOCX(P[100])=LOCX(P12)+(BB!/2.00)
LOCY(P[100])=LOCY(P12)-(AA!/2.00)
LOCR(P[100])=LOCR(P12)
P1=P[100]
RETURN
'
'''''''''调用拍照位''''''''''''
'
*DYQL:
P2=P[199+LOCR(P11)]
P3=P[299+LOCR(P11)]
RETURN
'
*ZDSD:
SD!=LOCX(P15)
SPEED SD!
RETURN
'
*ZT:
IF DI2(5)=1 THEN HOLD
GOTO *ZT
'
*ZK:
IF DI2(3)=0 THEN HALT
GOTO *ZK