库卡KUKA机器人程序注释详解(项目案例)
4、工件型号处理调用程序,调用顺序如下:DEF TREATMENT_PIECE()
INI
$OUT[183]=FALSE ///循环开始
$OUT[182]=FALSE ///放料工件为0
$OUT[179]=FALSE ///IFW位置为0
$OUT[180]=FALSE ///面罩位置为0
$OUT[181]=FALSE ///吹洗位置为0
$OUT[184]=FALSE ///机械手夹爪工件为0
PICK_UP() ///抓料程序
SCROLL_DOWN() ///抖料程序
IFW_TANK() ///IFW冲洗程序
PIN_POINT() ///面罩冲洗程序
BLOWING() ///吹洗程序
DEPOSIT() ///放料程序
END
第一步:PICK_UP.src 机械手抓料程序
DEF PICK_UP() ///定义程序名
INI ///定义变量
PTPHOME Vel=100%DEFAULT ///回到home点
$OUT[183]=FALSE ///循环开始
$OUT[182]=FALSE ///工件放料位为0
$OUT[179]=FALSE ///IFW位置为0
$OUT[180]=FALSE ///面罩位置为0
$OUT[181]=FALSE ///吹洗位置为0
$OUT[184]=FALSE ///夹爪为0
SETGRP1State=OPNCONTatSTARTDelay=0ms ///夹爪打开
TRIGGERWHENDISTANCE=0 DELAY=0 DO H50(GRP_APO,1,1,GCONT)PRIO=-1
;VADOSOTTOALPEZZOALCARICO
;GOUNDERPARTLOAD ///进入工件加载
LINP1Vel=0.1m/sCPDAT1Tool[1]Base[0] ///关键点:工件下面位置1,每次修改的第一个主要位置
LINP5Vel=0.1m/sCPDAT4Tool[1]Base[0] ///位置1到位后上升进入定位销位置2
SETGRP1State=CLOCONTatSTARTDelay=0ms ///夹爪夹紧
LINP6Vel=0.1m/sCPDAT5Tool[1]Base[0] ///位置2顶起来后驶出位置3
;ESCODAIRULLI
;GOOUTBYROLLER ///驶出轨道
LINP3Vel=0.09m/sCPDAT3Tool[1]Base[0] ///驶出位置,不用改
$OUT[184]=TRUE ///机器人抓料位置为1
PTPP4Vel=100%PDAT2Tool[1]Base[0] ///驶出位置,不用改
END
第二步:SCROLL_DOWN.src 抖料位置程序
DEF SCROLL_DOWN() ///这步精度不高最简单,只要不撞合适就行。
INI
;VADOSUSCROLLOPEZZO
;GOTOSCROLLDOWN
PTPP1CONTVel=100%PDAT1Tool[1]Base[0]
PTPP2CONTVel=100%PDAT8Tool[1]Base[0]
;INIZIODISCROLLO
;STARTSCROLLDOWN
PTPP3CONTVel=100%PDAT4Tool[1]Base[0]
PTPP4CONTVel=100%PDAT5Tool[1]Base[0]
PTPP5CONTVel=100%PDAT6Tool[1]Base[0]
;FINESCROLLO
;ENDSCROLLDOWN
PTPP7CONTVel=100%PDAT7Tool[1]Base[0]
END
第三步: IFW_TANK.src IFW池冲洗程序
DEF IFW_TANK()
INI
;VADOSUVASCAIFW
;GOONTANKIFW
PTPP1CONTVel=100%PDAT1Tool[1]Base[0] ///这些位置都不撞就行
PTPP2CONTVel=100%PDAT2Tool[1]Base[0]
;ENTROINVASCAIFW
;INSIDETHETANKIFW
LINP3Vel=2m/sCPDAT1Tool[1]Base[0]
PTPP8Vel=100%PDAT7Tool[1]Base[0]
LINP9Vel=2m/sCPDAT9Tool[1]Base[0] ///关键点2:这个位置距离池中喷嘴很近,注意防撞。
WAITTime=5sec
LINP10Vel=2m/sCPDAT10Tool[1]Base[0]
$OUT[179]=TRUE ///机器人在IFW位置
;INIZIOMOVIMENTOPERLAVAGGIOIFW
;STARTOFMOVEMENTFORWASHINGIFW
WHILE NOT($IN[177]) ///IFW 时间结束
LINP5Vel=2m/sCPDAT7Tool[1]Base[0]
LINP6Vel=2m/sCPDAT8Tool[1]Base[0]
PTPP11Vel=100%PDAT8Tool[1]Base[0]
PTPP12Vel=100%PDAT9Tool[1]Base[0]///手动的时候,这个位置可以驶出
ENDWHILE
$OUT[179]=FALSE ///在IFW位置为0
;FINEMOVIMENTOLAVAGGIOIFW
;FINEMOTIONWASHINGIFW
;ESCODALLAVASCAIFW
;GOOUTBYTANKIFW ///驶出池子
PTPP7Vel=100%PDAT6Tool[1]Base[0] ///这些位置都安全
END
第四部: PIN_POINT.src 面罩冲洗程序
DEF PIN_POINT()
INI
;VADOSUPIN_POINT
;GOONPIN_POINT
PTPP1Vel=100%PDAT1Tool[1]Base[0] ///普通位置,不碰就行
;ENTRONELPIN_POINT
;WITHINTHEPIN_POINT
LINP2Vel=2m/sCPDAT1Tool[1]Base[0]
LINP10Vel=0.2m/sCPDAT6Tool[1]Base[0] ///关键点3 :注意缸盖的2个定位孔,调试时注意将气缸伸出调整在正中心
$OUT[180]=TRUE ///在面罩里位置为1
WAITFOR($IN[178]) ///PLC指令:面罩冲洗结束
$OUT[180]=FALSE ///在面罩里位置为0
;ESCODALLAMASCHERADELPIN_POINT
;GOOUTTHEMASKOFPIN_POINT
LINP6Vel=0.2m/sCPDAT5Tool[1]Base[0] ///驶出面罩
;MOVIMENTIPERSVUOTAMENTOPEZZODAACQUA
;MOVEMENTSFORDRAININGPIECEWATER
PTPP8Vel=100%PDAT3Tool[1]Base[0]
WAITTime=0.2sec
PTPP9Vel=100%PDAT4Tool[1]Base[0] ///普通位置
WAITTime=0.2sec
PTPP7Vel=100%PDAT2Tool[1]Base[0]
END
第五步: BLOWING.src 吹洗程序
DEF BLOWING()
INI
;MISPOSTOVERSOLASOFFIATURA
;IMOVETOBLOWING
PTPP1CONTVel=100%PDAT1Tool[1]Base[0] ///这步都是普通位置,合适就行
$OUT[181]=TRUE ///吹洗位置为1
;SONODAVANTIALLASOFFIATURA
;AREINFRONTOFBLOWING
PTPP4CONTVel=100%PDAT4Tool[1]Base[0]
;PASSODUEVOLTENELLASOFFIATURA
;STEPTWOTIMESINBLOWING
LINP7Vel=0.2m/sCPDAT2Tool[1]Base[0]
LINP8Vel=0.2m/sCPDAT3Tool[1]Base[0]
LINP5Vel=0.2m/sCPDAT1Tool[1]Base[0] ///吹三次
;FINESOFFIATURA
;ENDBLOWING
$OUT[189]=TRUE ///吹洗结束为1
PTPP6Vel=100%PDAT6Tool[1]Base[0]
$OUT[181]=FALSE ///吹洗位置为0
$OUT[189]=FALSE ///吹洗结束为0
END
第六部: DEPOSIT.src 机械手放料位置程序
DEF DEPOSIT()
INI
PTPP1Vel=100%PDAT1Tool[1]Base[0]
WAITFOR($IN[184]) ///PLC输入,放料位置为0
LINP2Vel=1m/sCPDAT1Tool[1]Base[0] ///进入轨道
SETGRP1State=OPNCONTatSTARTDelay=0ms ///夹爪打开
LINP3Vel=0.08m/sCPDAT2Tool[1]Base[0] ///放料无精度要求,合适就行
LINP5Vel=0.08m/sCPDAT4Tool[1]Base[0] ///放料
WAITTime=0.5sec
LINP8Vel=0.08m/sCPDAT6Tool[1]Base[0]
LINP6Vel=2m/sCPDAT5Tool[1]Base[0]
$OUT[182]=TRUE ///放料工件位置为1
$OUT[184]=FALSE ///机械手工件为0
$OUT[183]=TRUE ///循环结束为1
PTPP7Vel=100%PDAT2Tool[1]Base[0]
END