机械手自动化程序.docx
《机械手自动化程序.docx》由会员分享,可在线阅读,更多相关《机械手自动化程序.docx(29页珍藏版)》请在冰豆网上搜索。
机械手自动化程序
集团文件版本号:
(M928-T898-M248-WU2669-I2896-DQ586-M1988)
机械手自动化程序
1、主程序main
&ACCESSRVP1
&REL1
&PARAMDISKPATH=KRC:
\R1\Program
DEFPro_main()
INTl
;FOLDINI;%{PE}
;FOLDBASISTECHINI
GLOBALINTERRUPTDECL3WHEN$STOPMESS==TRUEDOIR_STOPM()
INTERRUPTON3
BAS(#INITMOV,0)
;ENDFOLD(BASISTECHINI)
;FOLDUSERINI
;Makeyourmodificationshere
;ENDFOLD(USERINI)
GLOBALINTERRUPTDECL4WHEN$IN[10]==FALSEDOItrpt1()
GLOBALINTERRUPTDECL5WHEN$IN[11]==FALSEDOItrpt1()
INTERRUPTDECL6WHEN$IN[9]==TRUEDOItrpt1();地轨异常进入中断
INTERRUPTON6;开地轨监视中断6
IFNOTGripper_ChkStatus(1,"C")THEN
Gripper_SetStatus(1,"O")
Part0InLeft=FALSE
Part2InLeft=FALSE
ENDIF
IFNOTGripper_ChkStatus(2,"C")THEN
Gripper_SetStatus(2,"O")
Part1InRight=FALSE
ENDIF
FORl=1TO14
$OUT[l]=FALSE
ENDFOR;此循环语句在初始化时把所有端口清零复位。
IF$IN[5]THEN
Machine1_OnlyDrop=TRUE
Machine2_OnlyDrop=TRUE;机台1有首件信号时,机台1与机台2第一次响应只放标志位置1
ELSE
Machine1_OnlyDrop=FALSE
Machine2_OnlyDrop=FALSE
ENDIF
$FLAG[8]=FALSE;FLAG[8]是干什么用的?
;ENDFOLD(INI);初始化完成
$OV_PRO=70;限定系统运行速度
;FOLDPTPHOMEVel
$BWDSTART=FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS(#PTP_PARAMS,100)
$H_POS=XHOME
PTPXHOME
;ENDFOLD
IF$IN_HOMETHEN
$OUT[5]=FALSE
$OUT[8]=FALSE
$OUT[11]=FALSE
ENDIF
LOOP
WAITSEC0.05
IF$IN[1]ANDNOTPart0InLeftANDGripper_ChkStatus(3,"O")THENToPick_Search()
ENDIF
IFPart0InLeftAND($IN[3]ORMachine1_OnlyDrop)ANDGripper_ChkStatus(1,"C")ANDGripper_ChkStatus(2,"O")THEN
Machine1()
ENDIF
IFPart1InRightAND($IN[6]ORMachine2_OnlyDrop)ANDGripper_ChkStatus(2,"C")ANDGripper_ChkStatus(1,"O")THEN
Machine2()
ENDIF
IFPart2InLeftAND($IN[8]ORMachine3_OnlyDrop)ANDGripper_ChkStatus(1,"C")THEN
Machine3()
ENDIF
ENDLOOP
END
DEFItrpt1()
HALT
BRAKE
END
2、取料程序(采用中断的方法自动探料,完成取料作业)
&ACCESSRVO2
&REL1
&PARAMDISKPATH=KRC:
\R1\Program
DEFToPick_Search()
;FOLDINI;%{PE}
;FOLDBASISTECHINI
GLOBALINTERRUPTDECL3WHEN$STOPMESS==TRUEDOIR_STOPM();单独用了一个系统中断?
INTERRUPTON3
BAS(#INITMOV,0)
;ENDFOLD(BASISTECHINI)
;FOLDUSERINI
;Makeyourmodificationshere
;ENDFOLD(USERINI)
;ENDFOLD(INI)
INTERRUPTDECL1WHEN$IN[10]==TRUEDOFOUND()
SevenAxis_Run
(1)
GOTOMARK
;FOLDPTPP1CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT2
FDAT_ACT=FP1
BAS(#PTP_PARAMS,100)
PTPXP1C_DIS
;ENDFOLD
;FOLDPTPP3CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT8
FDAT_ACT=FP3
BAS(#PTP_PARAMS,100)
PTPXP3C_DIS
;ENDFOLD
;FOLDLINP2CONTVel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT2
FDAT_ACT=FP2
BAS(#CP_PARAMS,2)
LINXP2C_DISC_DIS
;ENDFOLD
;FOLDLINP1Vel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT1
FDAT_ACT=FP1
BAS(#CP_PARAMS,0.05)
LINXP1
;ENDFOLD
;FOLDPTPHOMEVel
$BWDSTART=FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS(#PTP_PARAMS,100)
$H_POS=XHOME
PTPXHOME
;ENDFOLD
mark:
Search()
INTERRUPTOFF1
WAITSEC0
XP4=$POS_ACT
;FOLDLINP4CONTVel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT10
FDAT_ACT=FP4
BAS(#CP_PARAMS,2)
LINXP4C_DISC_DIS
;ENDFOLD
Gripper_SetStatus(1,"O")
LIN_REL{Z15}
LIN_REL{Z-17}
Gripper_SetStatus(1,"C")
Part0InLeft=TRUE
WAITSEC0
XP0=$POS_ACT
XP0.Z=XP0.Z+25;看一下寻料程序到底是怎么运转的!
;FOLDLINP0CONTVel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT8
FDAT_ACT=FP0
BAS(#CP_PARAMS,0.025)
LINXP0C_DISC_DIS
;ENDFOLD
WAITSEC0
IFNOT$IN[10]THEN
GOTOmark
ENDIF
;FOLDLINP1CONTVel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT7
FDAT_ACT=FP1
BAS(#CP_PARAMS,2)
LINXP1C_DISC_DIS
;ENDFOLD
END
DEFSearch()
;FOLDINI;%{PE}
;FOLDBASISTECHINI
GLOBALINTERRUPTDECL3WHEN$STOPMESS==TRUEDOIR_STOPM()
INTERRUPTON3
BAS(#INITMOV,0)
;ENDFOLD(BASISTECHINI)
;FOLDUSERINI
;Makeyourmodificationshere
;ENDFOLD(USERINI)
;ENDFOLD(INI)
INTERRUPTON1
;FOLDPTPP1CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT6
FDAT_ACT=FP1
BAS(#PTP_PARAMS,100)
PTPXP1C_DIS
;ENDFOLD
$OUT[16]=TRUE
;FOLDLINP3CONTVel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT11
FDAT_ACT=FP3
BAS(#CP_PARAMS,2)
LINXP3C_DISC_DIS
;ENDFOLD
;FOLDLINP2CONTVel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT5
FDAT_ACT=FP2
BAS(#CP_PARAMS,0.05)
LINXP2C_DISC_DIS
;ENDFOLD
;FOLDLINP1Vel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT6
FDAT_ACT=FP1
BAS(#CP_PARAMS,0.02)
LINXP1
;ENDFOLD
WAITSEC0
END
DEFFOUND()
BRAKE
LIN$POS_INT;risealittle
RESUME
END
3、机台1取放料程序(完成机台1取放料动作与信号交互)
&ACCESSRVO2
&REL1
&PARAMDISKPATH=KRC:
\R1\Program
DEFMachine1()
;FOLDINI;%{PE}
;FOLDBASISTECHINI
GLOBALINTERRUPTDECL3WHEN$STOPMESS==TRUEDOIR_STOPM()
INTERRUPTON3
BAS(#INITMOV,0)
;ENDFOLD(BASISTECHINI)
;FOLDUSERINI
;Makeyourmodificationshere
;ENDFOLD(USERINI)
;ENDFOLD(INI)
SevenAxis_Run
(1)
$OUT[5]=TRUE
;ENDFOLD
IFNOTMachine1_OnlyDropTHEN
;FOLDPTPP1CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT4
FDAT_ACT=FP1
BAS(#PTP_PARAMS,100)
PTPXP1C_DIS
;ENDFOLD
mark:
;FOLDLINP2CONTVel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT4
FDAT_ACT=FP2
BAS(#CP_PARAMS,2)
LINXP2C_DISC_DIS
;ENDFOLD
;FOLDLINP3CONTVel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT5
FDAT_ACT=FP3
BAS(#CP_PARAMS,2)
LINXP3C_DISC_DIS
;ENDFOLD
Gripper_SetStatus(2,"C")
LIN_REL{Z7.5}
Gripper_SetStatus(2,"O")
;FOLDLINP3Vel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT1
FDAT_ACT=FP3
BAS(#CP_PARAMS,2)
LINXP3
;ENDFOLD
Gripper_SetStatus(2,"C")
Part1InRight=TRUE
;FOLDLINP2Vel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT6
FDAT_ACT=FP2
BAS(#CP_PARAMS,0.05)
LINXP2
;ENDFOLD
IFNOT$IN[11]THEN
GOTOmark
ENDIF
;FOLDPTPP4CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT6
FDAT_ACT=FP4
BAS(#PTP_PARAMS,100)
PTPXP4C_DIS
;ENDFOLD
;FOLDPTPP5CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT10
FDAT_ACT=FP5
BAS(#PTP_PARAMS,100)
PTPXP5C_DIS
;ENDFOLD
;FOLDPTPP6CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT8
FDAT_ACT=FP6
BAS(#PTP_PARAMS,100)
PTPXP6C_DIS
;ENDFOLD
;FOLDLINP7Vel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT7
FDAT_ACT=FP7
BAS(#CP_PARAMS,0.25)
LINXP7
;ENDFOLD
Gripper_SetStatus(1,"O")
;FOLDPTPP6CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT14
FDAT_ACT=FP6
BAS(#PTP_PARAMS,100)
PTPXP6C_DIS
;ENDFOLD
;FOLDPTPP8CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT9
FDAT_ACT=FP8
BAS(#PTP_PARAMS,100)
PTPXP8C_DIS
;ENDFOLD
ELSE
;FOLDPTPP5CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT2
FDAT_ACT=FP5
BAS(#PTP_PARAMS,100)
PTPXP5C_DIS
;ENDFOLD
;FOLDPTPP6CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT13
FDAT_ACT=FP6
BAS(#PTP_PARAMS,100)
PTPXP6C_DIS
;ENDFOLD
;FOLDLINP7Vel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT9
FDAT_ACT=FP7
BAS(#CP_PARAMS,0.25)
LINXP7
;ENDFOLD
Gripper_SetStatus(1,"O")
;FOLDPTPP6Vel
$BWDSTART=FALSE
PDAT_ACT=PPDAT12
FDAT_ACT=FP6
BAS(#PTP_PARAMS,100)
PTPXP6
;ENDFOLD
;FOLDPTPP8CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT7
FDAT_ACT=FP8
BAS(#PTP_PARAMS,100)
PTPXP8C_DIS
;ENDFOLD
Machine_Start
(1)
;FOLDPTPHOMEVel
$BWDSTART=FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS(#PTP_PARAMS,100)
$H_POS=XHOME
PTPXHOME
;ENDFOLD
ENDIF
IFMachine1_OnlyDropTHEN
Machine1_OnlyDrop=FALSE
ENDIF
Machine_Start
(1)
END
4、机台2取放料程序(完成机台2取放料动作与信号交互)
&ACCESSRV2
&REL6
&PARAMDISKPATH=KRC:
\R1\Program
DEFMachine2()
;FOLDINI;%{PE}
;FOLDBASISTECHINI
GLOBALINTERRUPTDECL3WHEN$STOPMESS==TRUEDOIR_STOPM()
INTERRUPTON3
BAS(#INITMOV,0)
;ENDFOLD(BASISTECHINI)
;FOLDUSERINI
;Makeyourmodificationshere
;ENDFOLD(USERINI)
;ENDFOLD(INI)
PTP$POS_ACT
SevenAxis_Run
(2)
$OUT[8]=TRUE
;ENDFOLD
IFNOTMachine2_OnlyDropTHEN
;FOLDPTPP1CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT3
FDAT_ACT=FP1
BAS(#PTP_PARAMS,100)
PTPXP1C_DIS
;ENDFOLD
mark:
;FOLDPTPP2CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT4
FDAT_ACT=FP2
BAS(#PTP_PARAMS,100)
PTPXP2C_DIS
;ENDFOLD
;FOLDLINP3Vel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT4
FDAT_ACT=FP3
BAS(#CP_PARAMS,2)
LINXP3
;ENDFOLD
Gripper_SetStatus(1,"C")
LIN_REL{Z7.5}
Gripper_SetStatus(1,"O")
;FOLDLINP3Vel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT0
FDAT_ACT=FP3
BAS(#CP_PARAMS,2)
LINXP3
;ENDFOLD
Gripper_SetStatus(1,"C")
Part2InLeft=TRUE
;FOLDLINP2CONTVel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT3
FDAT_ACT=FP2
BAS(#CP_PARAMS,0.05)
LINXP2C_DISC_DIS
;ENDFOLD
IFNOT$IN[10]THEN
GOTOmark
ENDIF
;FOLDPTPP4CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT7
FDAT_ACT=FP4
BAS(#PTP_PARAMS,100)
PTPXP4C_DIS
;ENDFOLD
;FOLDPTPP5CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT14
FDAT_ACT=FP5
BAS(#PTP_PARAMS,100)
PTPXP5C_DIS
;ENDFOLD
;FOLDPTPP6CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT9
FDAT_ACT=FP6
BAS(#PTP_PARAMS,100)
PTPXP6C_DIS
;ENDFOLD
;FOLDLINP7Vel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT7
FDAT_ACT=FP7
BAS(#CP_PARAMS,0.25)
LINXP7
;ENDFOLD
Gripper_SetStatus(2,"O")
;FOLDPTPP6CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT11
FDAT_ACT=FP6
BAS(#PTP_PARAMS,100)
PTPXP6C_DIS
;ENDFOLD
;FOLDPTPP8CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT12
FDAT_ACT=FP8
BAS(#PTP_PARAMS,100)
PTPXP8C_DIS
;ENDFOLD
ELSE
;FOLDPTPP5CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT13
FDAT_ACT=FP5
BAS(#PTP_PARAMS,100)
PTPXP5C_DIS
;ENDFOLD
;FOLDPTPP6CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT1
FDAT_ACT=FP6
BAS(#PTP_PARAMS,100)
PTPXP6C_DIS
;ENDFOLD
;FOLDLINP7Vel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT1
FDAT_ACT=FP7
BAS(#CP_PARAMS,0.25)
LINXP7
;ENDFOLD
Gripper_SetStatus(2,"O")
;FOLDLINP6CONTVel
$BWDSTART=FALSE
LDAT_ACT=LCPDAT2
FDAT_ACT=FP6
BAS(#CP_PARAMS,2)
LINXP6C_DISC_DIS
;ENDFOLD
;FOLDPTPP8CONTVel
$BWDSTART=FALSE
PDAT_ACT=PPDAT6
FDAT_ACT=FP8
BAS(#PTP_PARAMS,100)
PTPXP8C_DIS
;ENDFOLD
Machine_Start
(2)
;FOLDPTPHOMEVel5:
100,7:
DEFAULT
$BWDSTART=FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS(#PTP_PARAMS,100)
$H_POS=XHOME
PTPXHOME
;ENDFOLD
ENDIF
IFMachine2_OnlyDropTHEN
Machine2_OnlyDrop=FALSE
ENDIF
Machine_Start
(2)
END
5、机台3取放料程序(完成机台3取放料动作与信号交互)
&ACCESSRVP1
&REL6
D