
KUKA程序?qū)懛ò咐窒?/strong>
換搶盤抓抓手程序:
DEF Q1_PICKGRPPER( ) :程序名稱
INI :系統(tǒng)初始化
PTP HOME Vel= 100 % DEFAULT :HOME 原點
OUT 272 'Grip2_Bracket_Open' State=TRUE :輸出272抓手2防塵蓋打開信號為真
OUT 271 'Grip2_Bracket_Cls' State=FALSE :輸出271抓手2防塵蓋關(guān)閉信號為假
WAIT FOR ( IN 272 'Grip2_Bracket_Opened' ) :等待抓手2防塵蓋打開到位輸入信
號272
WAIT FOR ( NOT IN 263 'ATC_Face' ) :等待換搶盤面接觸輸入信號263為非
WAIT FOR ( IN 265 'Grip2_In_Place' ) :等待抓手2在位輸入信號265
PTP P4 CONT Vel=100 % PDAT2 Tool[0] Base[0]
PTP P3 CONT Vel=50 % PDAT1 Tool[0] Base[0]
LIN P2 CONT Vel=0.2 m/s CPDAT2 Tool[0] Base[0]
LIN P1 Vel=0.1 m/s CPDAT1 Tool[0] Base[0]
WAIT FOR ( IN 263 'ATC_Face' ) :等待換搶盤面接觸輸入信號263
OUT 261 'ATC_LOCK' State=TRUE :輸出換搶盤鎖緊信號261為真
OUT 262 'ATC_UNLOCK' State=FALSE :輸出換搶盤松開信號262為假
WAIT FOR ( IN 261 'ATC_Locked' ) :等待換搶盤鎖緊到位輸入信號261
RET=IOCTL("PNIO-CTRL",50,3) :恢復(fù)與抓手閥島的通訊指令
WAIT Time=1 sec :等待1S
Harder2=true :將Harder2置位為真
LIN P6 Vel=0.2 m/s CPDAT4 Tool[3]:GRIPPER2 Base[0]
LIN P5 CONT Vel=0.2 m/s CPDAT3 Tool[3]:GRIPPER2 Base[0]
WAIT FOR ( NOT IN 265 'Grip2_In_Place' ) : 等待抓手2在位輸入信號265為假
LIN P8 CONT Vel=1 m/s CPDAT6 Tool[3]:GRIPPER2 Base[0]
LIN P7 CONT Vel=1 m/s CPDAT5 Tool[3]:GRIPPER2 Base[0]
PTP P9 CONT Vel=100 % PDAT4 Tool[3]:GRIPPER2 Base[0]
END
換搶盤放抓手程序
DEF Q1_PUTGRPPER( ) :程序名稱
INI :系統(tǒng)初始化
OUT 271 'Grip2_Bracket_Cls' State=FALSE
OUT 272 'Grip2_Bracket_Open' State=TRUE
WAIT FOR ( IN 272 'Grip2_Bracket_Opened' )
WAIT FOR ( IN 269 'Grip1_Bracket_Closed' ) :等待抓手2防塵蓋打開到位輸入信號269
PTP P7 CONT Vel=100 % PDAT3 Tool[3]:GRIPPER2 Base[0]
PTP P3 CONT Vel=100 % PDAT1 Tool[3]:GRIPPER2 Base[0]
LIN P2 CONT Vel=0.2 m/s CPDAT2 Tool[3]:GRIPPER2 Base[0]
LIN P1 Vel=0.1 m/s CPDAT5 Tool[3]:GRIPPER2 Base[0]
WAIT FOR ( IN 265 'Grip2_In_Place' )
Harder2=false :將Harder2置位為假
Repeat :循環(huán)指令
RET=IOCTL("PNIO-CTRL",60,3) :斷開與抓手閥島的通訊指令
until (RET==0) :循環(huán)結(jié)束指令
WAIT FOR ( IN 263 'ATC_Face' )
OUT 261 'ATC_LOCK' State=FALSE
OUT 262 'ATC_UNLOCK' State=TRUE
WAIT FOR ( IN 262 'ATC_Unlocked' )
WAIT Time=1 sec
LIN P4 Vel=0.1 m/s CPDAT3 Tool[0] Base[0]
WAIT FOR ( NOT IN 263 'ATC_Face' )
LIN P5 CONT Vel=0.5 m/s CPDAT4 Tool[0] Base[0]
PTP P6 CONT Vel=100 % PDAT2 Tool[0] Base[0]
PTP P8 CONT Vel=100 % PDAT4 Tool[0] Base[0]
PTP HOME Vel= 100 % DEFAULT
OUT 271 'Grip2_Bracket_Cls' State=TRUE
OUT 272 'Grip2_Bracket_Open' State=FALSE
WAIT FOR ( IN 271 'Grip2_Bracket_Closed' )
OUT 271 'Grip2_Bracket_Cls' State=FALSE
END
抓手抓件程序:
DEF Q1_Pick_part( )
INI
$CYCFLAG[11]=$IN[357] OR $IN[359] :定義循環(huán)旗標(biāo)
INTERRUPT DECL 101 WHEN $CYCFLAG[11] DO INT_101() :中斷聲明
INTERRUPT Off 101 :關(guān)中斷101
PTP P1 Vel=100 % PDAT1 Tool[3]:GRIPPER2 Base[0]
OUT 349 'Vac1_ON' State=FALSE :輸出真空信號249為假
UnClamp1 :抓手夾具打開
$ADVANCE=0
OUT 348 'unclamp' State=TRUE CONT :輸出抓手打開信號348為真
OUT 347 'clamp' State=FALSE CONT :輸出抓手夾緊信號347為假
$TIMER_STOP[6]=TRUE
$TIMER[6]=-10000
$TIMER_STOP[6]=FALSE
WAIT FOR ( $TIMER_FLAG[6]==TRUE ) OR (( NOT $IN[351] ) AND ( $IN[349] ))
WAIT FOR ( $TIMER_FLAG[6]==TRUE ) OR (( NOT $IN[355] ) AND ( $IN[353] ))
IF $TIMER_FLAG[6]==TRUE THEN
$TIMER_STOP[6]=TRUE
$OUT[76]=TRUE :輸出抓手報警信號76為真
MsgQuit("Check If All Clamps Are Opened!", "Grip")
HALT
WAIT FOR ( NOT $IN[351] ) AND ( $IN[349] ) :等待抓手打開到位輸入信號349
WAIT FOR ( NOT $IN[355] ) AND ( $IN[353] ) :等待抓手打開到位輸入信號353
$OUT[76]=FALSE :輸出抓手報警信號76為假
ENDIF
$ADVANCE=3
PinShift1 :抓手定位銷伸出
$ADVANCE=0
OUT 346 'pin_unshift' State= FALSE CONT :輸出定位銷縮回信號346為假
OUT 345 'pin_shift' State= TRUE CONT :輸出定位銷伸出信號345為真
$TIMER_STOP[6]=TRUE
$TIMER[6]=-10000
$TIMER_STOP[6]=FALSE
WAIT FOR ( $TIMER_FLAG[6]==TRUE ) OR (( NOT $IN[345] ) AND ( $IN[347] ))
IF $TIMER_FLAG[6]==TRUE THEN
$TIMER_STOP[6]=TRUE
$OUT[76]=TRUE :輸出抓手報警信號76為真
MsgQuit("Check If All Clamps Are Opened!", "Grip")
HALT
WAIT FOR ( NOT $IN[345] ) AND ( $IN[347] ) :等待抓手定位銷伸出到位輸入
信號347
$OUT[76]=FALSE
ENDIF
$ADVANCE=3
WAIT FOR ( IN 34 'Entry OK 2' ) :等待允許進(jìn)入抓件信號34
OUT 42 'Jig Non-Interference 2' State=FALSE :輸出夾具干涉信號42為假,發(fā)送
干涉
WAIT FOR ( IN 34 'Entry OK 2' ) :等待允許進(jìn)入抓件信號34
PTP P2 CONT Vel=100 % PDAT2 Tool[3]:GRIPPER2 Base[0]
PTP P3 CONT Vel=100 % PDAT3 Tool[3]:GRIPPER2 Base[0]
PTP P4 CONT Vel=100 % PDAT4 Tool[3]:GRIPPER2 Base[0]
FIRST: :跳轉(zhuǎn)指針
$OV_PRO=30 :改變速度的系統(tǒng)變量
INTERRUPT ON 101 :開中斷101
$ADVANCE=0 :改變預(yù)讀指針的系統(tǒng)變量
PTP P6 CONT Vel=100 % PDAT9 Tool[3]:GRIPPER2 Base[0]
$OV_PRO=10 :改變速度的系統(tǒng)變量
SEARCH() :調(diào)用子程序
INTERRUPT OFF 101 :關(guān)中斷101
NOpartcheck :判斷料框是否有件的邏輯集合
WAIT FOR ( IN 1025 'Always ON' AND IN 357 'part_check1' ) :等待板件檢測到
位信號
OUT 349 'Vac1_ON' State=TRUE :輸出真空信號349為真
WAIT Time=1 sec :等待1S
Clamp1 :抓手夾具夾緊
$ADVANCE=0
OUT 347 'clamp' State=TRUE CONT
OUT 348 'unclamp' State=FALSE CONT
$TIMER_STOP[6]=TRUE
$TIMER[6]=-10000
$TIMER_STOP[6]=FALSE
WAIT FOR ( $TIMER_FLAG[6]==TRUE ) OR (( NOT $IN[349] ) AND ( $IN[351] ))
WAIT FOR ( $TIMER_FLAG[6]==TRUE ) OR (( NOT $IN[353] ) AND ( $IN[355] ))
IF $TIMER_FLAG[6]==TRUE THEN
$TIMER_STOP[6]=TRUE
$OUT[76]=TRUE
MsgQuit("Check If All Clamps Are Opened!", "Grip")
HALT
WAIT FOR ( NOT $IN[349] ) AND ( $IN[351] )
WAIT FOR ( NOT $IN[353] ) AND ( $IN[355] )
$OUT[76]=FALSE
ENDIF
$ADVANCE=3
$OV_PRO=30
LIN P7 CONT Vel=0.2 m/s CPDAT7 Tool[3]:GRIPPER2 Base[0]
LIN P8 CONT Vel=0.2 m/s CPDAT5 Tool[3]:GRIPPER2 Base[0]
LIN P9 CONT Vel=1 m/s CPDAT6 Tool[1]:GRIPPER1 Base[0]
$ADVANCE=3
$OV_PRO=20
PTP P11 CONT Vel=100 % PDAT5 Tool[1]:GRIPPER1 Base[0]
PTP P12 CONT Vel=100 % PDAT6 Tool[1]:GRIPPER1 Base[0]
PULSE 37 'Job Complete 5' State=TRUE Time=1 sec :發(fā)送一個2S的完成信號37
脈沖
OUT 42 'Jig Non-Interference 2' State=TRUE :輸出干涉信號42為真,清除干涉
END
DEF SEARCH() :定義局部子程序SEARCH()
$ADVANCE=0
LIN P7 Vel=0.5 m/s CPDAT8 Tool[3]:GRIPPER2 Base[0]
LIN P13 Vel=0.5 m/s CPDAT10 Tool[3]:GRIPPER2 Base[0]
END
DEF INT_101() : 定義局部子程序INT_101 ()
Brake F :系統(tǒng)停止指令
Resume :系統(tǒng)中斷運行指令
END
抓手放件程序:
DEF Q1_PUT_PART( )
INI
PTP p1 CONT Vel=100 % PDAT2 Tool[3]:GRIPPER2 Base[0]
Inzone :工作允許進(jìn)入
$ADVANCE=0
WAIT FOR ( IN 33 'Entry OK 1' ) CONT :等待允許進(jìn)入放件信號33
OUT 41 'Jig Non-Interference 1' State=FALSE CONT :發(fā)干涉信號
WAIT FOR ( IN 33 'Entry OK 1' ) CONT :等待允許進(jìn)入放件信號33
$ADVANCE=3
In_mb70rh_1 :發(fā)送機器人與機器人之間的干涉區(qū)信號
$ADVANCE=0
WAIT FOR ( IN 57 'Robot Clear Zone 1' ) CONT :等待機器人干涉信號57
OUT 57 'Robot Clear Zone 1' State=FALSE CONT :輸出機器人干涉信號57為假發(fā)干涉
WAIT FOR ( IN 57 'Robot Clear Zone 1' ) CONT :等待機器人干涉信號57
$ADVANCE=3
PTP p4 CONT Vel=100 % PDAT3 Tool[3]:GRIPPER2 Base[0]
PTP p5 CONT Vel=100 % PDAT4 Tool[3]:GRIPPER2 Base[0]
UnClamp1 :抓手夾具打開
$ADVANCE=0
OUT 348 'unclamp' State=TRUE CONT
OUT 347 'clamp' State=FALSE CONT
$TIMER_STOP[6]=TRUE
$TIMER[6]=-10000
$TIMER_STOP[6]=FALSE
WAIT FOR ( $TIMER_FLAG[6]==TRUE ) OR (( NOT $IN[351] ) AND ( $IN[349] ))
WAIT FOR ( $TIMER_FLAG[6]==TRUE ) OR (( NOT $IN[355] ) AND ( $IN[353] ))
IF $TIMER_FLAG[6]==TRUE THEN
$TIMER_STOP[6]=TRUE
$OUT[76]=TRUE
MsgQuit("Check If All Clamps Are Opened!", "Grip")
HALT
WAIT FOR ( NOT $IN[351] ) AND ( $IN[349] )
WAIT FOR ( NOT $IN[355] ) AND ( $IN[353] )
$OUT[76]=FALSE
ENDIF
$ADVANCE=3
LIN p6 CONT Vel=0.5 m/s CPDAT7 Tool[3]:GRIPPER2 Base[0]
LIN p7 CONT Vel=0.2 m/s CPDAT6 Tool[3]:GRIPPER2 Base[0]
LIN p14 CONT Vel=0.1 m/s CPDAT8 Tool[3]:GRIPPER2 Base[0]
LIN p8 Vel=0.1 m/s CPDAT5 Tool[3]:GRIPPER2 Base[0]
AGA:
MsgDialog(PCAnswer,"Part check ok?","TIPD",,,,,,,"NO","YES")
IF PCAnswer==2 then
GOTO AGA
ENDIF
IF PCAnswer==1 then
GOTO NEXT
ENDIF
NEXT:
OUT_mb70rh_1 :清除機器人與機器人之間的干涉區(qū)信號
$ADVANCE=0
OUT 57 'Robot Clear Zone 1' State=TRUE CONT
$ADVANCE=3
OUT 349 'Vac1_ON' State=FALSE
Outzone
$ADVANCE=0
OUT 49 'Robot action request 1' State=TRUE :輸出機器人請求信號49為真
WAIT FOR ( IN 49 'Action complete 1' ) :等到請求應(yīng)答完成輸入信號
OUT 49 'Robot action request 1' State=FALSE :輸出機器人請求信號49為假
$ADVANCE=3
PinUnShift1
$ADVANCE=0
OUT 346 'pin_unshift' State=TRUE CONT
OUT 345 'pin_shift' State=FALSE CONT
$TIMER_STOP[6]=TRUE
$TIMER[6]=-10000
$TIMER_STOP[6]=FALSE
WAIT FOR ( $TIMER_FLAG[6]==TRUE ) OR (( NOT $IN[347] ) AND ( $IN[345] ))
IF $TIMER_FLAG[6]==TRUE THEN
$TIMER_STOP[6]=TRUE
$OUT[76]=TRUE
MsgQuit("Check If All Clamps Are Opened!", "Grip")
HALT
WAIT FOR ( NOT $IN[347] ) AND ( $IN[345] )
$OUT[76]=FALSE
ENDIF
$ADVANCE=3
In_mb70rh_1 :發(fā)送機器人與機器人之間的干涉區(qū)信號
$ADVANCE=0
WAIT FOR ( IN 57 'Robot Clear Zone 1' ) CONT
OUT 57 'Robot Clear Zone 1' State=FALSE CONT
WAIT FOR (IN 57 'Robot Clear Zone 1' ) CONT
$ADVANCE=3
LIN p9 CONT Vel=0.2 m/s CPDAT2 Tool[3]:GRIPPER2 Base[0]
WAIT FOR ( NOT IN 357 '' AND NOT IN 359 '' )
LIN p10 CONT Vel=1 m/s CPDAT3 Tool[3]:GRIPPER2 Base[0]
LIN p11 CONT Vel=2 m/s CPDAT4 Tool[3]:GRIPPER2 Base[0]
PTP p12 CONT Vel=100 % PDAT9 Tool[3]:GRIPPER2 Base[0]
PULSE 38 'Job Complete 6' State=TRUE Time=1 sec
OUT_mb70rh_1 :清除機器人與機器人之間的干涉區(qū)信號
$ADVANCE=0
OUT 57 'Robot Clear Zone 1' State=TRUE CONT
$ADVANCE=3
PTP p13 CONT Vel=100 % PDAT10 Tool[3]:GRIPPER2 Base[0]
END
換搶盤抓槍程序:
DEF PickGun1( )
INI
OUT 268 'Gun1_Bracket_Open' State=TRUE CONT
OUT 267 'Gun1_Bracket_Cls' State=FALSE CONT
WAIT FOR ( IN 268 'Gun1_Bracket_Opened' ) CONT
WAIT FOR ( IN 264 'Gun1_In_Place' ) CONT
WAIT FOR ( NOT IN 263 'ATC_Face' )
PTP HOME Vel= 100 % DEFAULT
PTP P4 CONT Vel=100 % PDAT1 Tool[0] Base[0]
PTP P8 CONT Vel=100 % PDAT4 Tool[0] Base[0]
LIN P3 Vel=0.2 m/s CPDAT3 Tool[0] Base[0]
LIN P2 CONT Vel=0.1 m/s CPDAT2 Tool[0] Base[0]
LIN P1 Vel=0.1 m/s CPDAT1 Tool[0] Base[0]
WAIT FOR ( IN 263 'ATC_Face' )
OUT 261 'ATC_LOCK' State=TRUE
OUT 262 'ATC_UNLOCK' State=FALSE
WAIT FOR ( IN 261 'ATC_Locked' )
ServoGun Couple=1 :焊鉗耦合指令
OUT 406 'RESET_FAULT_WITH_WF' State=TRUE :輸出復(fù)位焊機報警信號406為真
WAIT Time=1 sec
WAIT FOR ( NOT IN 406 'WELDING_FAULT' ) :等待焊機報警俗輸入信號406為非
OUT 406 'RESET_FAULT_WITH_WF' State=FALSE :輸出復(fù)位焊機報警信號406為假
WAIT FOR ( IN 257 'WaterFlow_OK' ) :等待輸入水信號257
WGUN1=TRUE :將WGUN1置位為真
LIN P9 Vel=0.1 m/s CPDAT6 Tool[2]:GUN Base[0]
LIN P5 Vel=0.1 m/s CPDAT4 Tool[2]:GUN Base[0]
LIN P6 CONT Vel=2 m/s CPDAT5 Tool[2]:GUN Base[0]
PTP P7 CONT Vel=100 % PDAT3 Tool[2]:GUN Base[0]
END
換搶盤放槍程序:
DEF PutGun1( )
INI
OUT 268 'Gun1_Bracket_Open' State=TRUE CONT
OUT 267 'Gun1_Bracket_Cls' State=FALSE CONT
WAIT FOR ( IN 268 'Gun1_Bracket_Opened' ) CONT
WAIT FOR ( NOT IN 264 'Gun1_In_Place' )
PTP P1 CONT Vel=100 % PDAT1 Tool[2]:GUN Base[0]
PTP P5 CONT Vel=100 % PDAT2 Tool[2]:GUN Base[0]
LIN P4 CONT Vel=1 m/s CPDAT3 Tool[2]:GUN Base[0]
LIN P3 Vel=0.1 m/s CPDAT2 Tool[2]:GUN Base[0]
LIN P9 Vel=0.1 m/s CPDAT8 Tool[2]:GUN Base[0]
LIN P2 Vel=0.1 m/s CPDAT7 Tool[2]:GUN Base[0]
WGUN1=false
WAIT FOR ( IN 263 'ATC_Face' )
ServoGun Decouple=1 :焊鉗脫開指令
OUT 262 'ATC_UNLOCK' State=TRUE
OUT 261 'ATC_LOCK' State=FALSE
WAIT FOR ( IN 262 'ATC_Unlocked' )
WAIT Time=1 sec
LIN P6 Vel=0.1 m/s CPDAT4 Tool[0] Base[0]
WAIT FOR ( NOT IN 263 'ATC_Face' )
LIN P7 CONT Vel=0.5 m/s CPDAT5 Tool[0] Base[0]
LIN P8 CONT Vel=2 m/s CPDAT6 Tool[0] Base[0]
PTP P10 CONT Vel=100 % PDAT4 Tool[0] Base[0]
OUT 267 'Gun1_Bracket_Cls' State=TRUE
OUT 268 'Gun1_Bracket_Open' State=FALSE
WAIT FOR ( IN 267 'Gun1_Bracket_Closed' )
OUT 267 'Gun1_Bracket_Cls' State=FALSE
PTP HOME Vel= 100 % DEFAULT
END
焊接程序:
DEF Q1( )
INI
INI() :信號初始化子程序
PTP HOME Vel= 100 % DEFAULT
Inzone :工作進(jìn)入允許信號處理
$ADVANCE=0
WAIT FOR ( IN 33 'Entry OK 1' ) CONT :等待焊接進(jìn)入允許信號33
OUT 41 'Jig Non-Interference 1' State=FALSE CONT :發(fā)送干涉信號
WAIT FOR ( IN 33 'Entry OK 1' ) CONT :等待焊接進(jìn)入允許信號33
$ADVANCE=3
PTP P1 CONT Vel=100 % PDAT1 Tool[1]:GUN1 Base[0]
PTP P2 CONT Vel=100 % PDAT2 Tool[1]:GUN1 Base[0]
PTP P3 CONT Vel=100 % PDAT3 Tool[1]:GUN1 Base[0]
PTP SG1 Vel=100 % PDAT4 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2 mm Force=2.5
kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG2 Vel=100 % PDAT5 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2 mm Force=2.2
kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG3 Vel=100 % PDAT6 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2 mm Force=2.2
kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP P34 CONT Vel=100 % PDAT56 Tool[1]:GUN1 Base[0]
PTP SG4 Vel=100 % PDAT7 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2 mm Force=2.2
kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP P4 CONT Vel=100 % PDAT8 Tool[1]:GUN1 Base[0]
PTP P5 CONT Vel=100 % PDAT9 Tool[1]:GUN1 Base[0]
PTP P6 CONT Vel=100 % PDAT10 Tool[1]:GUN1 Base[0]
PTP P7 CONT Vel=100 % PDAT11 Tool[1]:GUN1 Base[0]
PTP P8 CONT Vel=100 % PDAT12 Tool[1]:GUN1 Base[0]
PTP P9 CONT Vel=100 % PDAT13 Tool[1]:GUN1 Base[0]
PTP SG5 Vel=100 % PDAT14 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG6 Vel=100 % PDAT15 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG7 Vel=100 % PDAT16 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP P26 CONT Vel=100 % PDAT48 Tool[1]:GUN1 Base[0]
PTP P27 CONT Vel=100 % PDAT49 Tool[1]:GUN1 Base[0]
PTP P28 CONT Vel=100 % PDAT50 Tool[1]:GUN1 Base[0]
PTP P29 CONT Vel=100 % PDAT51 Tool[1]:GUN1 Base[0]
PTP P31 CONT Vel=100 % PDAT53 Tool[1]:GUN1 Base[0]
PTP SG11 Vel=100 % PDAT22 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG12 Vel=100 % PDAT23 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP P12 CONT Vel=100 % PDAT24 Tool[1]:GUN1 Base[0]
PTP SG13 Vel=100 % PDAT25 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG14 Vel=100 % PDAT26 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG15 Vel=100 % PDAT27 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG16 Vel=100 % PDAT28 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG17 Vel=100 % PDAT29 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP P13 CONT Vel=100 % PDAT30 Tool[1]:GUN1 Base[0]
PTP SG18 Vel=100 % PDAT31 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG19 Vel=100 % PDAT32 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG20 Vel=100 % PDAT33 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG21 Vel=100 % PDAT34 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP P14 CONT Vel=100 % PDAT35 Tool[1]:GUN1 Base[0]
PTP P15 CONT Vel=100 % PDAT36 Tool[1]:GUN1 Base[0]
PTP P16 CONT Vel=100 % PDAT37 Tool[1]:GUN1 Base[0]
PTP P17 CONT Vel=100 % PDAT38 Tool[1]:GUN1 Base[0]
PTP P32 CONT Vel=100 % PDAT54 Tool[1]:GUN1 Base[0]
PTP P18 CONT Vel=100 % PDAT39 Tool[1]:GUN1 Base[0]
PTP P19 CONT Vel=100 % PDAT40 Tool[1]:GUN1 Base[0]
PTP SG22 Vel=100 % PDAT41 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP P20 CONT Vel=100 % PDAT42 Tool[1]:GUN1 Base[0]
PTP P35 CONT Vel=100 % PDAT57 Tool[1]:GUN1 Base[0]
>>>>>>>>>>>>>>>><<<<<<<<<<<<
PTP P22 CONT Vel=100 % PDAT44 Tool[1]:GUN1 Base[0]
PTP P48 CONT Vel=100 % PDAT72 Tool[1]:GUN1 Base[0]
Outzone :工位完成信號處理
$ADVANCE=0
OUT 41 'Jig Non-Interference 1' State=TRUE CONT :清除干涉信號
PULSE 34 'Job Complete 2' State=TRUE CONT Time=2 sec :輸出一個2S的脈沖完
成信號
$ADVANCE=3
PTP P33 CONT Vel=100 % PDAT55 Tool[1]:GUN1 Base[0
PTP P24 CONT Vel=100 % PDAT46 Tool[1]:GUN1 Base[0
TIP :修磨及更換電極帽的計數(shù)處理
;*Tip dress or change****************
TipD=TipD+1 :修磨計數(shù)
IF (TipD>=10) THEN :修磨的判斷
TipdressReq=TRUE
TipC=TipC+1 :更換電極帽計數(shù)
TipD=0
ENDIF
IF (TipC>=10) THEN :更換電極帽的判斷
TipchangeReq=TRUE
TipC=0
ENDIF
IF Tipdressreq OR Tipchangereq then :對修磨程序調(diào)用的判斷
TIPDRESS() :調(diào)用修磨程序
ENDIF
PTP HOME Vel= 100 % DEFAULT
END
修磨程序:
DEF TIPDRESS( )
INI
PTP HOME Vel= 100 % DEFAULT
OUT 26 'Tip Dress Running' State=TRUE :輸出焊鉗修磨信號26
OUT 408 'CHK_WELD' State=FALSE :輸出焊機是否通電信號408為假,切斷焊接電源
PTP P1 CONT Vel=100 % PDAT1 Tool[1]:GUN1 Base[0]
PTP P2 CONT Vel=100 % PDAT2 Tool[1]:GUN1 Base[0]
PTP P3 CONT Vel=100 % PDAT3 Tool[1]:GUN1 Base[0]
PTP P4 CONT Vel=100 % PDAT4 Tool[1]:GUN1 Base[0]
Tipchange :更換電極帽部分
IF (TipchangeReq==true) then
OUT 257 'W.A.Unit_Sol_ON' State=FALSE :輸出斷水信號257為假,斷水
WAIT FOR ( NOT IN 257 'WaterFlow_OK' ) :等待水壓信號257沒有輸入
OUT 27 'Tip Change Position' State=TRUE :輸出焊鉗在電極帽更換位置信號為真
AG: :跳轉(zhuǎn)指針
MsgDialog(TipAnswer,"Tip change complete?","TIPD",,,,,,,"NO","YES")
IF (TipAnswer==1) then
PULSE 28 'Tip Change Complete' State=TRUE Time=2 sec :輸出脈沖為2S的電極
帽更換完成信號
ENDIF
IF (TipAnswer==2) then
GOTO AG
ENDIF
INIT ServoGun=1 New :電極初始化
OUT 27 'Tip Change Position' State=FALSE :輸出焊鉗在電極帽更換位置信號為假
OUT 257 'W.A.Unit_Sol_ON' State=TRUE :輸出斷水信號257為真,通水
WAIT FOR ( IN 257 'WaterFlow_OK' ) :等待水壓信號257有輸入
TipchangeReq=FALSE :將TipchangeReq置零
ENDIF
PTP P5 CONT Vel=100 % PDAT5 Tool[1]:GUN1 Base[0]
PTP P9 Vel=100 % PDAT10 Tool[1]:GUN1 Base[0]
PTP P6 Vel=100 % PDAT7 Tool[1]:GUN1 Base[0]
OUT 408 'CHK_WELD' State=FALSE :輸出焊機是否通電信號408為假,切斷焊接電源
OUT 258 'TipdresserON/OFF' State=TRUE :輸出修磨器旋轉(zhuǎn)信號為真
WAIT FOR ( NOT IN 408 'CHK_WELD' ) :等待焊機焊接電源是否切斷信號
PTP SG1 Vel=100 % PDAT6 TipDress ProgNr=1 ServoGun=1 Part=3.8 mm Force=1.5
kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
OUT 258 'TipdresserON/OFF' State=FALSE :輸出修磨器旋轉(zhuǎn)信號為假
PTP P7 Vel=100 % PDAT8 Tool[1]:GUN1 Base[0]
PTP P8 Vel=100 % PDAT9 Tool[1]:GUN1 Base[0]
INIT ServoGun=1 Same :電極周期性初始化
PTP P10 Vel=100 % PDAT11 Tool[1]:GUN1 Base[0]
PTP P11 Vel=100 % PDAT12 Tool[1]:GUN1 Base[0]
PTP P12 Vel=100 % PDAT13 Tool[1]:GUN1 Base[0]
OUT 26 'Tip Dress Running' State=FALSE :輸出焊鉗修磨信號26為假
OUT 408 'CHK_WELD' State=TRUE :輸出焊機通電信號,給焊槍通電
TipDressReq=FALSE 將TipDressReq置零
PTP P13 Vel=100 % PDAT14 Tool[1]:GUN1 Base[0]
PTP HOME Vel= 100 % DEFAULT
END
換搶盤抓抓手程序:
DEF Q1_PICKGRPPER( ) :程序名稱
INI :系統(tǒng)初始化
PTP HOME Vel= 100 % DEFAULT :HOME 原點
OUT 272 'Grip2_Bracket_Open' State=TRUE :輸出272抓手2防塵蓋打開信號為真
OUT 271 'Grip2_Bracket_Cls' State=FALSE :輸出271抓手2防塵蓋關(guān)閉信號為假
WAIT FOR ( IN 272 'Grip2_Bracket_Opened' ) :等待抓手2防塵蓋打開到位輸入信
號272
WAIT FOR ( NOT IN 263 'ATC_Face' ) :等待換搶盤面接觸輸入信號263為非
WAIT FOR ( IN 265 'Grip2_In_Place' ) :等待抓手2在位輸入信號265
PTP P4 CONT Vel=100 % PDAT2 Tool[0] Base[0]
PTP P3 CONT Vel=50 % PDAT1 Tool[0] Base[0]
LIN P2 CONT Vel=0.2 m/s CPDAT2 Tool[0] Base[0]
LIN P1 Vel=0.1 m/s CPDAT1 Tool[0] Base[0]
WAIT FOR ( IN 263 'ATC_Face' ) :等待換搶盤面接觸輸入信號263
OUT 261 'ATC_LOCK' State=TRUE :輸出換搶盤鎖緊信號261為真
OUT 262 'ATC_UNLOCK' State=FALSE :輸出換搶盤松開信號262為假
WAIT FOR ( IN 261 'ATC_Locked' ) :等待換搶盤鎖緊到位輸入信號261
RET=IOCTL("PNIO-CTRL",50,3) :恢復(fù)與抓手閥島的通訊指令
WAIT Time=1 sec :等待1S
Harder2=true :將Harder2置位為真
LIN P6 Vel=0.2 m/s CPDAT4 Tool[3]:GRIPPER2 Base[0]
LIN P5 CONT Vel=0.2 m/s CPDAT3 Tool[3]:GRIPPER2 Base[0]
WAIT FOR ( NOT IN 265 'Grip2_In_Place' ) : 等待抓手2在位輸入信號265為假
LIN P8 CONT Vel=1 m/s CPDAT6 Tool[3]:GRIPPER2 Base[0]
LIN P7 CONT Vel=1 m/s CPDAT5 Tool[3]:GRIPPER2 Base[0]
PTP P9 CONT Vel=100 % PDAT4 Tool[3]:GRIPPER2 Base[0]
END
換搶盤放抓手程序
DEF Q1_PUTGRPPER( ) :程序名稱
INI :系統(tǒng)初始化
OUT 271 'Grip2_Bracket_Cls' State=FALSE
OUT 272 'Grip2_Bracket_Open' State=TRUE
WAIT FOR ( IN 272 'Grip2_Bracket_Opened' )
WAIT FOR ( IN 269 'Grip1_Bracket_Closed' ) :等待抓手2防塵蓋打開到位輸入信號269
PTP P7 CONT Vel=100 % PDAT3 Tool[3]:GRIPPER2 Base[0]
PTP P3 CONT Vel=100 % PDAT1 Tool[3]:GRIPPER2 Base[0]
LIN P2 CONT Vel=0.2 m/s CPDAT2 Tool[3]:GRIPPER2 Base[0]
LIN P1 Vel=0.1 m/s CPDAT5 Tool[3]:GRIPPER2 Base[0]
WAIT FOR ( IN 265 'Grip2_In_Place' )
Harder2=false :將Harder2置位為假
Repeat :循環(huán)指令
RET=IOCTL("PNIO-CTRL",60,3) :斷開與抓手閥島的通訊指令
until (RET==0) :循環(huán)結(jié)束指令
WAIT FOR ( IN 263 'ATC_Face' )
OUT 261 'ATC_LOCK' State=FALSE
OUT 262 'ATC_UNLOCK' State=TRUE
WAIT FOR ( IN 262 'ATC_Unlocked' )
WAIT Time=1 sec
LIN P4 Vel=0.1 m/s CPDAT3 Tool[0] Base[0]
WAIT FOR ( NOT IN 263 'ATC_Face' )
LIN P5 CONT Vel=0.5 m/s CPDAT4 Tool[0] Base[0]
PTP P6 CONT Vel=100 % PDAT2 Tool[0] Base[0]
PTP P8 CONT Vel=100 % PDAT4 Tool[0] Base[0]
PTP HOME Vel= 100 % DEFAULT
OUT 271 'Grip2_Bracket_Cls' State=TRUE
OUT 272 'Grip2_Bracket_Open' State=FALSE
WAIT FOR ( IN 271 'Grip2_Bracket_Closed' )
OUT 271 'Grip2_Bracket_Cls' State=FALSE
END
抓手抓件程序:
DEF Q1_Pick_part( )
INI
$CYCFLAG[11]=$IN[357] OR $IN[359] :定義循環(huán)旗標(biāo)
INTERRUPT DECL 101 WHEN $CYCFLAG[11] DO INT_101() :中斷聲明
INTERRUPT Off 101 :關(guān)中斷101
PTP P1 Vel=100 % PDAT1 Tool[3]:GRIPPER2 Base[0]
OUT 349 'Vac1_ON' State=FALSE :輸出真空信號249為假
UnClamp1 :抓手夾具打開
$ADVANCE=0
OUT 348 'unclamp' State=TRUE CONT :輸出抓手打開信號348為真
OUT 347 'clamp' State=FALSE CONT :輸出抓手夾緊信號347為假
$TIMER_STOP[6]=TRUE
$TIMER[6]=-10000
$TIMER_STOP[6]=FALSE
WAIT FOR ( $TIMER_FLAG[6]==TRUE ) OR (( NOT $IN[351] ) AND ( $IN[349] ))
WAIT FOR ( $TIMER_FLAG[6]==TRUE ) OR (( NOT $IN[355] ) AND ( $IN[353] ))
IF $TIMER_FLAG[6]==TRUE THEN
$TIMER_STOP[6]=TRUE
$OUT[76]=TRUE :輸出抓手報警信號76為真
MsgQuit("Check If All Clamps Are Opened!", "Grip")
HALT
WAIT FOR ( NOT $IN[351] ) AND ( $IN[349] ) :等待抓手打開到位輸入信號349
WAIT FOR ( NOT $IN[355] ) AND ( $IN[353] ) :等待抓手打開到位輸入信號353
$OUT[76]=FALSE :輸出抓手報警信號76為假
ENDIF
$ADVANCE=3
PinShift1 :抓手定位銷伸出
$ADVANCE=0
OUT 346 'pin_unshift' State= FALSE CONT :輸出定位銷縮回信號346為假
OUT 345 'pin_shift' State= TRUE CONT :輸出定位銷伸出信號345為真
$TIMER_STOP[6]=TRUE
$TIMER[6]=-10000
$TIMER_STOP[6]=FALSE
WAIT FOR ( $TIMER_FLAG[6]==TRUE ) OR (( NOT $IN[345] ) AND ( $IN[347] ))
IF $TIMER_FLAG[6]==TRUE THEN
$TIMER_STOP[6]=TRUE
$OUT[76]=TRUE :輸出抓手報警信號76為真
MsgQuit("Check If All Clamps Are Opened!", "Grip")
HALT
WAIT FOR ( NOT $IN[345] ) AND ( $IN[347] ) :等待抓手定位銷伸出到位輸入
信號347
$OUT[76]=FALSE
ENDIF
$ADVANCE=3
WAIT FOR ( IN 34 'Entry OK 2' ) :等待允許進(jìn)入抓件信號34
OUT 42 'Jig Non-Interference 2' State=FALSE :輸出夾具干涉信號42為假,發(fā)送
干涉
WAIT FOR ( IN 34 'Entry OK 2' ) :等待允許進(jìn)入抓件信號34
PTP P2 CONT Vel=100 % PDAT2 Tool[3]:GRIPPER2 Base[0]
PTP P3 CONT Vel=100 % PDAT3 Tool[3]:GRIPPER2 Base[0]
PTP P4 CONT Vel=100 % PDAT4 Tool[3]:GRIPPER2 Base[0]
FIRST: :跳轉(zhuǎn)指針
$OV_PRO=30 :改變速度的系統(tǒng)變量
INTERRUPT ON 101 :開中斷101
$ADVANCE=0 :改變預(yù)讀指針的系統(tǒng)變量
PTP P6 CONT Vel=100 % PDAT9 Tool[3]:GRIPPER2 Base[0]
$OV_PRO=10 :改變速度的系統(tǒng)變量
SEARCH() :調(diào)用子程序
INTERRUPT OFF 101 :關(guān)中斷101
NOpartcheck :判斷料框是否有件的邏輯集合
WAIT FOR ( IN 1025 'Always ON' AND IN 357 'part_check1' ) :等待板件檢測到
位信號
OUT 349 'Vac1_ON' State=TRUE :輸出真空信號349為真
WAIT Time=1 sec :等待1S
Clamp1 :抓手夾具夾緊
$ADVANCE=0
OUT 347 'clamp' State=TRUE CONT
OUT 348 'unclamp' State=FALSE CONT
$TIMER_STOP[6]=TRUE
$TIMER[6]=-10000
$TIMER_STOP[6]=FALSE
WAIT FOR ( $TIMER_FLAG[6]==TRUE ) OR (( NOT $IN[349] ) AND ( $IN[351] ))
WAIT FOR ( $TIMER_FLAG[6]==TRUE ) OR (( NOT $IN[353] ) AND ( $IN[355] ))
IF $TIMER_FLAG[6]==TRUE THEN
$TIMER_STOP[6]=TRUE
$OUT[76]=TRUE
MsgQuit("Check If All Clamps Are Opened!", "Grip")
HALT
WAIT FOR ( NOT $IN[349] ) AND ( $IN[351] )
WAIT FOR ( NOT $IN[353] ) AND ( $IN[355] )
$OUT[76]=FALSE
ENDIF
$ADVANCE=3
$OV_PRO=30
LIN P7 CONT Vel=0.2 m/s CPDAT7 Tool[3]:GRIPPER2 Base[0]
LIN P8 CONT Vel=0.2 m/s CPDAT5 Tool[3]:GRIPPER2 Base[0]
LIN P9 CONT Vel=1 m/s CPDAT6 Tool[1]:GRIPPER1 Base[0]
$ADVANCE=3
$OV_PRO=20
PTP P11 CONT Vel=100 % PDAT5 Tool[1]:GRIPPER1 Base[0]
PTP P12 CONT Vel=100 % PDAT6 Tool[1]:GRIPPER1 Base[0]
PULSE 37 'Job Complete 5' State=TRUE Time=1 sec :發(fā)送一個2S的完成信號37
脈沖
OUT 42 'Jig Non-Interference 2' State=TRUE :輸出干涉信號42為真,清除干涉
END
DEF SEARCH() :定義局部子程序SEARCH()
$ADVANCE=0
LIN P7 Vel=0.5 m/s CPDAT8 Tool[3]:GRIPPER2 Base[0]
LIN P13 Vel=0.5 m/s CPDAT10 Tool[3]:GRIPPER2 Base[0]
END
DEF INT_101() : 定義局部子程序INT_101 ()
Brake F :系統(tǒng)停止指令
Resume :系統(tǒng)中斷運行指令
END
抓手放件程序:
DEF Q1_PUT_PART( )
INI
PTP p1 CONT Vel=100 % PDAT2 Tool[3]:GRIPPER2 Base[0]
Inzone :工作允許進(jìn)入
$ADVANCE=0
WAIT FOR ( IN 33 'Entry OK 1' ) CONT :等待允許進(jìn)入放件信號33
OUT 41 'Jig Non-Interference 1' State=FALSE CONT :發(fā)干涉信號
WAIT FOR ( IN 33 'Entry OK 1' ) CONT :等待允許進(jìn)入放件信號33
$ADVANCE=3
In_mb70rh_1 :發(fā)送機器人與機器人之間的干涉區(qū)信號
$ADVANCE=0
WAIT FOR ( IN 57 'Robot Clear Zone 1' ) CONT :等待機器人干涉信號57
OUT 57 'Robot Clear Zone 1' State=FALSE CONT :輸出機器人干涉信號57為假發(fā)干涉
WAIT FOR ( IN 57 'Robot Clear Zone 1' ) CONT :等待機器人干涉信號57
$ADVANCE=3
PTP p4 CONT Vel=100 % PDAT3 Tool[3]:GRIPPER2 Base[0]
PTP p5 CONT Vel=100 % PDAT4 Tool[3]:GRIPPER2 Base[0]
UnClamp1 :抓手夾具打開
$ADVANCE=0
OUT 348 'unclamp' State=TRUE CONT
OUT 347 'clamp' State=FALSE CONT
$TIMER_STOP[6]=TRUE
$TIMER[6]=-10000
$TIMER_STOP[6]=FALSE
WAIT FOR ( $TIMER_FLAG[6]==TRUE ) OR (( NOT $IN[351] ) AND ( $IN[349] ))
WAIT FOR ( $TIMER_FLAG[6]==TRUE ) OR (( NOT $IN[355] ) AND ( $IN[353] ))
IF $TIMER_FLAG[6]==TRUE THEN
$TIMER_STOP[6]=TRUE
$OUT[76]=TRUE
MsgQuit("Check If All Clamps Are Opened!", "Grip")
HALT
WAIT FOR ( NOT $IN[351] ) AND ( $IN[349] )
WAIT FOR ( NOT $IN[355] ) AND ( $IN[353] )
$OUT[76]=FALSE
ENDIF
$ADVANCE=3
LIN p6 CONT Vel=0.5 m/s CPDAT7 Tool[3]:GRIPPER2 Base[0]
LIN p7 CONT Vel=0.2 m/s CPDAT6 Tool[3]:GRIPPER2 Base[0]
LIN p14 CONT Vel=0.1 m/s CPDAT8 Tool[3]:GRIPPER2 Base[0]
LIN p8 Vel=0.1 m/s CPDAT5 Tool[3]:GRIPPER2 Base[0]
AGA:
MsgDialog(PCAnswer,"Part check ok?","TIPD",,,,,,,"NO","YES")
IF PCAnswer==2 then
GOTO AGA
ENDIF
IF PCAnswer==1 then
GOTO NEXT
ENDIF
NEXT:
OUT_mb70rh_1 :清除機器人與機器人之間的干涉區(qū)信號
$ADVANCE=0
OUT 57 'Robot Clear Zone 1' State=TRUE CONT
$ADVANCE=3
OUT 349 'Vac1_ON' State=FALSE
Outzone
$ADVANCE=0
OUT 49 'Robot action request 1' State=TRUE :輸出機器人請求信號49為真
WAIT FOR ( IN 49 'Action complete 1' ) :等到請求應(yīng)答完成輸入信號
OUT 49 'Robot action request 1' State=FALSE :輸出機器人請求信號49為假
$ADVANCE=3
PinUnShift1
$ADVANCE=0
OUT 346 'pin_unshift' State=TRUE CONT
OUT 345 'pin_shift' State=FALSE CONT
$TIMER_STOP[6]=TRUE
$TIMER[6]=-10000
$TIMER_STOP[6]=FALSE
WAIT FOR ( $TIMER_FLAG[6]==TRUE ) OR (( NOT $IN[347] ) AND ( $IN[345] ))
IF $TIMER_FLAG[6]==TRUE THEN
$TIMER_STOP[6]=TRUE
$OUT[76]=TRUE
MsgQuit("Check If All Clamps Are Opened!", "Grip")
HALT
WAIT FOR ( NOT $IN[347] ) AND ( $IN[345] )
$OUT[76]=FALSE
ENDIF
$ADVANCE=3
In_mb70rh_1 :發(fā)送機器人與機器人之間的干涉區(qū)信號
$ADVANCE=0
WAIT FOR ( IN 57 'Robot Clear Zone 1' ) CONT
OUT 57 'Robot Clear Zone 1' State=FALSE CONT
WAIT FOR (IN 57 'Robot Clear Zone 1' ) CONT
$ADVANCE=3
LIN p9 CONT Vel=0.2 m/s CPDAT2 Tool[3]:GRIPPER2 Base[0]
WAIT FOR ( NOT IN 357 '' AND NOT IN 359 '' )
LIN p10 CONT Vel=1 m/s CPDAT3 Tool[3]:GRIPPER2 Base[0]
LIN p11 CONT Vel=2 m/s CPDAT4 Tool[3]:GRIPPER2 Base[0]
PTP p12 CONT Vel=100 % PDAT9 Tool[3]:GRIPPER2 Base[0]
PULSE 38 'Job Complete 6' State=TRUE Time=1 sec
OUT_mb70rh_1 :清除機器人與機器人之間的干涉區(qū)信號
$ADVANCE=0
OUT 57 'Robot Clear Zone 1' State=TRUE CONT
$ADVANCE=3
PTP p13 CONT Vel=100 % PDAT10 Tool[3]:GRIPPER2 Base[0]
END
換搶盤抓槍程序:
DEF PickGun1( )
INI
OUT 268 'Gun1_Bracket_Open' State=TRUE CONT
OUT 267 'Gun1_Bracket_Cls' State=FALSE CONT
WAIT FOR ( IN 268 'Gun1_Bracket_Opened' ) CONT
WAIT FOR ( IN 264 'Gun1_In_Place' ) CONT
WAIT FOR ( NOT IN 263 'ATC_Face' )
PTP HOME Vel= 100 % DEFAULT
PTP P4 CONT Vel=100 % PDAT1 Tool[0] Base[0]
PTP P8 CONT Vel=100 % PDAT4 Tool[0] Base[0]
LIN P3 Vel=0.2 m/s CPDAT3 Tool[0] Base[0]
LIN P2 CONT Vel=0.1 m/s CPDAT2 Tool[0] Base[0]
LIN P1 Vel=0.1 m/s CPDAT1 Tool[0] Base[0]
WAIT FOR ( IN 263 'ATC_Face' )
OUT 261 'ATC_LOCK' State=TRUE
OUT 262 'ATC_UNLOCK' State=FALSE
WAIT FOR ( IN 261 'ATC_Locked' )
ServoGun Couple=1 :焊鉗耦合指令
OUT 406 'RESET_FAULT_WITH_WF' State=TRUE :輸出復(fù)位焊機報警信號406為真
WAIT Time=1 sec
WAIT FOR ( NOT IN 406 'WELDING_FAULT' ) :等待焊機報警俗輸入信號406為非
OUT 406 'RESET_FAULT_WITH_WF' State=FALSE :輸出復(fù)位焊機報警信號406為假
WAIT FOR ( IN 257 'WaterFlow_OK' ) :等待輸入水信號257
WGUN1=TRUE :將WGUN1置位為真
LIN P9 Vel=0.1 m/s CPDAT6 Tool[2]:GUN Base[0]
LIN P5 Vel=0.1 m/s CPDAT4 Tool[2]:GUN Base[0]
LIN P6 CONT Vel=2 m/s CPDAT5 Tool[2]:GUN Base[0]
PTP P7 CONT Vel=100 % PDAT3 Tool[2]:GUN Base[0]
END
換搶盤放槍程序:
DEF PutGun1( )
INI
OUT 268 'Gun1_Bracket_Open' State=TRUE CONT
OUT 267 'Gun1_Bracket_Cls' State=FALSE CONT
WAIT FOR ( IN 268 'Gun1_Bracket_Opened' ) CONT
WAIT FOR ( NOT IN 264 'Gun1_In_Place' )
PTP P1 CONT Vel=100 % PDAT1 Tool[2]:GUN Base[0]
PTP P5 CONT Vel=100 % PDAT2 Tool[2]:GUN Base[0]
LIN P4 CONT Vel=1 m/s CPDAT3 Tool[2]:GUN Base[0]
LIN P3 Vel=0.1 m/s CPDAT2 Tool[2]:GUN Base[0]
LIN P9 Vel=0.1 m/s CPDAT8 Tool[2]:GUN Base[0]
LIN P2 Vel=0.1 m/s CPDAT7 Tool[2]:GUN Base[0]
WGUN1=false
WAIT FOR ( IN 263 'ATC_Face' )
ServoGun Decouple=1 :焊鉗脫開指令
OUT 262 'ATC_UNLOCK' State=TRUE
OUT 261 'ATC_LOCK' State=FALSE
WAIT FOR ( IN 262 'ATC_Unlocked' )
WAIT Time=1 sec
LIN P6 Vel=0.1 m/s CPDAT4 Tool[0] Base[0]
WAIT FOR ( NOT IN 263 'ATC_Face' )
LIN P7 CONT Vel=0.5 m/s CPDAT5 Tool[0] Base[0]
LIN P8 CONT Vel=2 m/s CPDAT6 Tool[0] Base[0]
PTP P10 CONT Vel=100 % PDAT4 Tool[0] Base[0]
OUT 267 'Gun1_Bracket_Cls' State=TRUE
OUT 268 'Gun1_Bracket_Open' State=FALSE
WAIT FOR ( IN 267 'Gun1_Bracket_Closed' )
OUT 267 'Gun1_Bracket_Cls' State=FALSE
PTP HOME Vel= 100 % DEFAULT
END
焊接程序:
DEF Q1( )
INI
INI() :信號初始化子程序
PTP HOME Vel= 100 % DEFAULT
Inzone :工作進(jìn)入允許信號處理
$ADVANCE=0
WAIT FOR ( IN 33 'Entry OK 1' ) CONT :等待焊接進(jìn)入允許信號33
OUT 41 'Jig Non-Interference 1' State=FALSE CONT :發(fā)送干涉信號
WAIT FOR ( IN 33 'Entry OK 1' ) CONT :等待焊接進(jìn)入允許信號33
$ADVANCE=3
PTP P1 CONT Vel=100 % PDAT1 Tool[1]:GUN1 Base[0]
PTP P2 CONT Vel=100 % PDAT2 Tool[1]:GUN1 Base[0]
PTP P3 CONT Vel=100 % PDAT3 Tool[1]:GUN1 Base[0]
PTP SG1 Vel=100 % PDAT4 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2 mm Force=2.5
kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG2 Vel=100 % PDAT5 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2 mm Force=2.2
kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG3 Vel=100 % PDAT6 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2 mm Force=2.2
kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP P34 CONT Vel=100 % PDAT56 Tool[1]:GUN1 Base[0]
PTP SG4 Vel=100 % PDAT7 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2 mm Force=2.2
kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP P4 CONT Vel=100 % PDAT8 Tool[1]:GUN1 Base[0]
PTP P5 CONT Vel=100 % PDAT9 Tool[1]:GUN1 Base[0]
PTP P6 CONT Vel=100 % PDAT10 Tool[1]:GUN1 Base[0]
PTP P7 CONT Vel=100 % PDAT11 Tool[1]:GUN1 Base[0]
PTP P8 CONT Vel=100 % PDAT12 Tool[1]:GUN1 Base[0]
PTP P9 CONT Vel=100 % PDAT13 Tool[1]:GUN1 Base[0]
PTP SG5 Vel=100 % PDAT14 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG6 Vel=100 % PDAT15 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG7 Vel=100 % PDAT16 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP P26 CONT Vel=100 % PDAT48 Tool[1]:GUN1 Base[0]
PTP P27 CONT Vel=100 % PDAT49 Tool[1]:GUN1 Base[0]
PTP P28 CONT Vel=100 % PDAT50 Tool[1]:GUN1 Base[0]
PTP P29 CONT Vel=100 % PDAT51 Tool[1]:GUN1 Base[0]
PTP P31 CONT Vel=100 % PDAT53 Tool[1]:GUN1 Base[0]
PTP SG11 Vel=100 % PDAT22 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG12 Vel=100 % PDAT23 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP P12 CONT Vel=100 % PDAT24 Tool[1]:GUN1 Base[0]
PTP SG13 Vel=100 % PDAT25 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG14 Vel=100 % PDAT26 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG15 Vel=100 % PDAT27 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG16 Vel=100 % PDAT28 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG17 Vel=100 % PDAT29 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP P13 CONT Vel=100 % PDAT30 Tool[1]:GUN1 Base[0]
PTP SG18 Vel=100 % PDAT31 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG19 Vel=100 % PDAT32 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG20 Vel=100 % PDAT33 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP SG21 Vel=100 % PDAT34 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP P14 CONT Vel=100 % PDAT35 Tool[1]:GUN1 Base[0]
PTP P15 CONT Vel=100 % PDAT36 Tool[1]:GUN1 Base[0]
PTP P16 CONT Vel=100 % PDAT37 Tool[1]:GUN1 Base[0]
PTP P17 CONT Vel=100 % PDAT38 Tool[1]:GUN1 Base[0]
PTP P32 CONT Vel=100 % PDAT54 Tool[1]:GUN1 Base[0]
PTP P18 CONT Vel=100 % PDAT39 Tool[1]:GUN1 Base[0]
PTP P19 CONT Vel=100 % PDAT40 Tool[1]:GUN1 Base[0]
PTP SG22 Vel=100 % PDAT41 ProgNr=1 ServoGun=1 Cont=CLS OPN Part=2.5 mm
Force=2.5 kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
PTP P20 CONT Vel=100 % PDAT42 Tool[1]:GUN1 Base[0]
PTP P35 CONT Vel=100 % PDAT57 Tool[1]:GUN1 Base[0]
>>>>>>>>>>>>>>>><<<<<<<<<<<<
PTP P22 CONT Vel=100 % PDAT44 Tool[1]:GUN1 Base[0]
PTP P48 CONT Vel=100 % PDAT72 Tool[1]:GUN1 Base[0]
Outzone :工位完成信號處理
$ADVANCE=0
OUT 41 'Jig Non-Interference 1' State=TRUE CONT :清除干涉信號
PULSE 34 'Job Complete 2' State=TRUE CONT Time=2 sec :輸出一個2S的脈沖完
成信號
$ADVANCE=3
PTP P33 CONT Vel=100 % PDAT55 Tool[1]:GUN1 Base[0
PTP P24 CONT Vel=100 % PDAT46 Tool[1]:GUN1 Base[0
TIP :修磨及更換電極帽的計數(shù)處理
;*Tip dress or change****************
TipD=TipD+1 :修磨計數(shù)
IF (TipD>=10) THEN :修磨的判斷
TipdressReq=TRUE
TipC=TipC+1 :更換電極帽計數(shù)
TipD=0
ENDIF
IF (TipC>=10) THEN :更換電極帽的判斷
TipchangeReq=TRUE
TipC=0
ENDIF
IF Tipdressreq OR Tipchangereq then :對修磨程序調(diào)用的判斷
TIPDRESS() :調(diào)用修磨程序
ENDIF
PTP HOME Vel= 100 % DEFAULT
END
修磨程序:
DEF TIPDRESS( )
INI
PTP HOME Vel= 100 % DEFAULT
OUT 26 'Tip Dress Running' State=TRUE :輸出焊鉗修磨信號26
OUT 408 'CHK_WELD' State=FALSE :輸出焊機是否通電信號408為假,切斷焊接電源
PTP P1 CONT Vel=100 % PDAT1 Tool[1]:GUN1 Base[0]
PTP P2 CONT Vel=100 % PDAT2 Tool[1]:GUN1 Base[0]
PTP P3 CONT Vel=100 % PDAT3 Tool[1]:GUN1 Base[0]
PTP P4 CONT Vel=100 % PDAT4 Tool[1]:GUN1 Base[0]
Tipchange :更換電極帽部分
IF (TipchangeReq==true) then
OUT 257 'W.A.Unit_Sol_ON' State=FALSE :輸出斷水信號257為假,斷水
WAIT FOR ( NOT IN 257 'WaterFlow_OK' ) :等待水壓信號257沒有輸入
OUT 27 'Tip Change Position' State=TRUE :輸出焊鉗在電極帽更換位置信號為真
AG: :跳轉(zhuǎn)指針
MsgDialog(TipAnswer,"Tip change complete?","TIPD",,,,,,,"NO","YES")
IF (TipAnswer==1) then
PULSE 28 'Tip Change Complete' State=TRUE Time=2 sec :輸出脈沖為2S的電極
帽更換完成信號
ENDIF
IF (TipAnswer==2) then
GOTO AG
ENDIF
INIT ServoGun=1 New :電極初始化
OUT 27 'Tip Change Position' State=FALSE :輸出焊鉗在電極帽更換位置信號為假
OUT 257 'W.A.Unit_Sol_ON' State=TRUE :輸出斷水信號257為真,通水
WAIT FOR ( IN 257 'WaterFlow_OK' ) :等待水壓信號257有輸入
TipchangeReq=FALSE :將TipchangeReq置零
ENDIF
PTP P5 CONT Vel=100 % PDAT5 Tool[1]:GUN1 Base[0]
PTP P9 Vel=100 % PDAT10 Tool[1]:GUN1 Base[0]
PTP P6 Vel=100 % PDAT7 Tool[1]:GUN1 Base[0]
OUT 408 'CHK_WELD' State=FALSE :輸出焊機是否通電信號408為假,切斷焊接電源
OUT 258 'TipdresserON/OFF' State=TRUE :輸出修磨器旋轉(zhuǎn)信號為真
WAIT FOR ( NOT IN 408 'CHK_WELD' ) :等待焊機焊接電源是否切斷信號
PTP SG1 Vel=100 % PDAT6 TipDress ProgNr=1 ServoGun=1 Part=3.8 mm Force=1.5
kN ApproxDist=5 mm SpotOffset=0 mm Tool[1]:GUN1 Base[0]
OUT 258 'TipdresserON/OFF' State=FALSE :輸出修磨器旋轉(zhuǎn)信號為假
PTP P7 Vel=100 % PDAT8 Tool[1]:GUN1 Base[0]
PTP P8 Vel=100 % PDAT9 Tool[1]:GUN1 Base[0]
INIT ServoGun=1 Same :電極周期性初始化
PTP P10 Vel=100 % PDAT11 Tool[1]:GUN1 Base[0]
PTP P11 Vel=100 % PDAT12 Tool[1]:GUN1 Base[0]
PTP P12 Vel=100 % PDAT13 Tool[1]:GUN1 Base[0]
OUT 26 'Tip Dress Running' State=FALSE :輸出焊鉗修磨信號26為假
OUT 408 'CHK_WELD' State=TRUE :輸出焊機通電信號,給焊槍通電
TipDressReq=FALSE 將TipDressReq置零
PTP P13 Vel=100 % PDAT14 Tool[1]:GUN1 Base[0]
PTP HOME Vel= 100 % DEFAULT
END