怎么编写库卡KUKA机器人专业程序,高级写法案例

news/2025/1/9 18:33:08/文章来源:https://www.cnblogs.com/zrkuka/p/18641363


KUKA程序写法案例分享
换抢盘抓抓手程序:
DEF Q1_PICKGRPPER( )             :程序名称
INI             :系统初始化
 
PTP HOME  Vel= 100 % DEFAULT               :HOME 原点
OUT 272 'Grip2_Bracket_Open' State=TRUE       :输出272抓手2防尘盖打开信号为真
OUT 271 'Grip2_Bracket_Cls' State=FALSE       :输出271抓手2防尘盖关闭信号为假
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)          :恢复与抓手阀岛的通讯指令
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         :系统初始化
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            :循环指令
RET=IOCTL("PNIO-CTRL",60,3)     :断开与抓手阀岛的通讯指令
until (RET==0)   :循环结束指令
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]     :定义循环旗标
INTERRUPT DECL 101 WHEN $CYCFLAG[11] DO INT_101()  :中断声明
INTERRUPT Off 101     :关中断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' )    :等待允许进入抓件信号34
OUT 42 'Jig Non-Interference 2' State=FALSE    :输出夹具干涉信号42为假,发送
干涉
WAIT FOR ( IN 34 'Entry OK 2' )    :等待允许进入抓件信号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:    :跳转指针
$OV_PRO=30    :改变速度的系统变量
INTERRUPT ON 101   :开中断101
$ADVANCE=0    :改变预读指针的系统变量
PTP P6 CONT Vel=100 % PDAT9 Tool[3]:GRIPPER2 Base[0]
$OV_PRO=10   :改变速度的系统变量
SEARCH()      :调用子程序
INTERRUPT OFF 101     :关中断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    :发送一个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     :系统停止指令
Resume       :系统中断运行指令
END
 
抓手放件程序:
DEF Q1_PUT_PART( )
INI
PTP p1 CONT Vel=100 % PDAT2 Tool[3]:GRIPPER2 Base[0]
Inzone    :工作允许进入
$ADVANCE=0
WAIT FOR ( IN 33 'Entry OK 1' ) CONT       :等待允许进入放件信号33
OUT 41 'Jig Non-Interference 1' State=FALSE CONT    :发干涉信号
WAIT FOR ( IN 33 'Entry OK 1' ) CONT       :等待允许进入放件信号33
$ADVANCE=3
In_mb70rh_1    :发送机器人与机器人之间的干涉区信号 
$ADVANCE=0
WAIT FOR ( IN 57 'Robot Clear Zone 1' ) CONT  :等待机器人干涉信号57
OUT 57 'Robot Clear Zone 1' State=FALSE CONT :输出机器人干涉信号57为假发干涉
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  :清除机器人与机器人之间的干涉区信号
$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' )       :等到请求应答完成输入信号
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   :发送机器人与机器人之间的干涉区信号
$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   :清除机器人与机器人之间的干涉区信号 
$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  :输出复位焊机报警信号406为真
WAIT Time=1 sec
WAIT FOR ( NOT IN 406 'WELDING_FAULT' )    :等待焊机报警俗输入信号406为非
OUT 406 'RESET_FAULT_WITH_WF' State=FALSE    :输出复位焊机报警信号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     :工作进入允许信号处理
$ADVANCE=0
WAIT FOR ( IN 33 'Entry OK 1' ) CONT    :等待焊接进入允许信号33
OUT 41 'Jig Non-Interference 1' State=FALSE CONT :发送干涉信号
WAIT FOR ( IN 33 'Entry OK 1' ) CONT    :等待焊接进入允许信号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      :修磨及更换电极帽的计数处理
;*Tip dress or change****************
   TipD=TipD+1         :修磨计数
IF (TipD>=10) THEN    :修磨的判断
    TipdressReq=TRUE
    TipC=TipC+1     :更换电极帽计数
    TipD=0
ENDIF
IF (TipC>=10) THEN    :更换电极帽的判断
   TipchangeReq=TRUE
   TipC=0
ENDIF
IF Tipdressreq OR Tipchangereq then    :对修磨程序调用的判断
TIPDRESS()     :调用修磨程序
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:   :跳转指针
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   :输出修磨器旋转信号为真
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   :输出修磨器旋转信号为假
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 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/861410.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

佩戴安全头盔监测识别摄像机

佩戴安全头盔监测识别摄像机作为一种先进的监控设备,对于提高工作场所的安全水平和管理效率具有重要意义。然而,在使用过程中,我们也需要注意保护员工的隐私和个人信息安全,加强数据的保护和管理,在促进工作场所安全的同时,也保障员工的合法权益。同时,也需要结合国家相…

收获满满:2024软工已通关

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13315这个作业的目标 回顾课程学习情况并总结收获学号 102202114一、学期回顾 初闻软件工程 第一次听说软件工程,就知道这是一门不好…

客流量监测识别摄像机

客流量监测识别摄像机作为一种新型的监测设备,可以广泛应用于商场、车站、机场、展览馆等各类公共场所,帮助管理者有效管理客流量和优化服务质量。总之,客流量监测识别摄像机是一种有益的监控设备,为公共场所的管理和安全提供了有力支持。在使用时需谨慎操作,维护监控数据…

Danfoss FC51变频器参数设置

LCP 4个功能组:数字式显示器 菜单键 导航键 操作键和指示灯(绿:变频器打开黄:警告红:报警)点按[Menu]键可选择一下菜单:状态菜单:读数模式和手动启动模式下均可访问状态菜单。读数模式下屏幕将显示当前所选读数参数的值 快捷菜单:Quick Menu快速设置常用参数 主菜单:…

基于看板的项目管理工具

在项目管理领域,看板作为一种高效的可视化工具,正日益受到众多团队的青睐。它通过直观的展示方式,帮助团队成员清晰地了解项目的进展、任务分配以及工作流程。市面上基于看板的项目管理工具种类繁多,每一款都有其独特的特点和优势。本文将为大家介绍多款基于看板的项目管理…

图片PDF转换器

图片PDF转换器python 3.7 环境安装 python3 -m pip install -i https://mirrors.aliyun.com/pypi/simple/ Pillow==9.5.0 python3 -m pip install -i https://mirrors.aliyun.com/pypi/simple/ reportlab==4.2.5图片PDF转换器.py #!/usr/bin/python # -*- coding: UTF-8 -*- #i…

软件工程2024秋——个人总结作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13315这个作业的目标 回首过去,展望未来学号 102202149一、学程漫溯 1.1 初念软工途对于软件工程,我刚开始以为是会教我们做一些we…

VMware ESXi 8.0U3c macOS Unlocker OEM BIOS xFusion (超聚变) 定制版

VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS xFusion (超聚变) 定制版VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS xFusion (超聚变) 定制版 ESXi 8.0U3c 标准版,Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科)、Hitachi (日立)、Fujits…

Axon Investigate 4.0.5 - 视频证据处理平台

Axon Investigate 4.0.5 - 视频证据处理平台Axon Investigate 4.0.5 - 视频证据处理平台 A simple, fast and forensically-sound solution to video evidence challenges 请访问原文链接:https://sysin.org/blog/axon-investigate/ 查看最新版。原创作品,转载请保留出处。 作…

Redis可视化工具推荐:Another Redis Desktop Manager下载与详细使用教程

Redis 可视化工具推荐:Another Redis Desktop Manager Redis 是一种高性能的键值数据库,广泛应用于缓存和消息队列等场景。对于开发者来说,命令行工具固然强大,但操作繁琐。而一款高效易用的可视化工具可以极大地提升使用效率。本篇将为大家推荐一款开源、跨平台且功能强大…

腾讯 StereoCrafter:2D 视频转 3D 视频效果;支付宝推出新 AI 视觉搜索产品「探一下」丨 RTE 开发者日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑…

宝塔面板登录失败,如何重置密码?

您好,宝塔面板是许多用户管理和维护服务器的重要工具。如果遇到登录失败的情况,可能是由于密码错误或其他配置问题导致的。以下是详细的解决方法和步骤:检查网络连接:确保您的网络连接稳定,并且能够正常访问宝塔面板的URL如果使用的是远程服务器,请确认服务器IP地址和端口…