承接上一贴!
斗笠刀库的调试,作为调试人员,首先要清楚,斗笠刀库的控制过程:
简述其过程:执行换刀M6T指令后,主轴切换到换刀高度--主轴定位---斗笠刀库出到换刀位置--主轴松刀---Z轴抬起准备换刀---刀盘旋转到预换的刀具---Z轴移动到换刀点---主轴夹刀且夹刀信号到位后---刀库回原位;
此过程时斗笠刀库更换的全过程,该过程由几部分配合共同完成,首先,动作依靠换刀子程序来完成,换刀子程序有三个组成部分:
1;L6.SPF:斗笠式刀库的换刀子程序,实现刀库的主要动作 ·;
该程序是由宏指令NC程序格式执行完成;
N10 PROC L6 SAVE DISPLOF SBLOF
N20 DEF INT T_SP,T_ORDER
N30 T_SP=$TC_MPP6[9998,1]
N40 GETSELT(T_ORDER)
N50 STOPRE
N60 IF(($P_SIM==1) OR ($P_ISTEST==1)) GOTOF END1;程序模拟,程序测试激活
N70 IF(($P_SEARCH<>0) OR ($P_DRYRUN==1)) GOTOF END1;程序段搜索,空运行激活
N80 IF (($P_SEARCH==0) AND (T_SP==T_ORDER) AND (T_SP>0) AND (T_ORDER>0)) GOTOF INFO1
N90 IF (($P_SEARCH==0) AND (T_SP==T_ORDER) AND (T_SP==0) AND (T_ORDER==0)) GOTOF INFO1
N100 IF $A_DBW[0]==5 GOTOF INFO2 ;5 = 刀库未回零,不能换刀
N110 IF $A_DBW[0]==4 GOTOF INFO3 ;4 = 轴未回零,不能换刀
N120 IF $A_DBW[0]==6 GOTOF INFO4 ;6 = 刀库调试模式激活,不能换刀
N120 IF $MN_USER_DATA_FLOAT[4]==0 GOTOF INFO5 ;MD14514[4]=0,换刀速度未设置,不能换刀;
N130 $A_DBW[2]=5
N140 _WAITK1:
N150 G4F0.1
N160 MSG("等待 刀库==刀具表 确认,一致请按[刀位一致]继续");
N170 IF $A_DBW[2]<>1 GOTOB _WAITK1
N180 D0
N190 STOPRE
N200 M206; 换刀命令生效
N210 IF (($A_DBW[0]==2) OR ($A_DBW[0]==3)) GOTOF T_RET ;2 = T0 3 = 交换刀
N220 IF $A_DBW[0]==1 GOTOF T_NEWLOC ;1 = 只抓新刀
N230 STOPRE
N240 T_RET: ;还旧刀
N250 M05 ;主轴停止
N260 MSG("主轴定向")
N270 SPOSA=$MN_USER_DATA_FLOAT[0]
N280 MSG("Z轴回到换刀位")
N290 SUPA G00 G90 Z=$MN_USER_DATA_FLOAT[1] ;Z轴定位到换刀点
N300 WAITS
N310 MSG("刀库推出")
N320 M62 ;刀库推出
N330 G4 F1
N340 MSG("主轴松刀")
N350 M58 ;主轴松刀
N360G4 F2
N370 MSG("Z轴退到刀库旋转安全位置") ;
N380 SUPA G00 G90 Z=$MN_USER_DATA_FLOAT[2] ;Z轴返回刀库旋转的安全位置
N390 IF $A_DBW[0]==3 GOTOF T_GET ;交换刀具,先还旧刀,再抓新刀
N400 MSG("主轴抓刀")
N410 M59 ;主轴拉刀
N420 STOPRE
N430 MSG("刀库退回")
N440 M63 ;刀库回退
N450 MSG("Z轴退到安全位置")
N460 SUPA G00 G90 Z=$MN_USER_DATA_FLOAT[3] ;Z轴返回安全位置
N470 GOTOF END
N480 T_NEWLOC: ;只抓新刀
N490 M05 ;主轴停止
N500 MSG("主轴定向")
N510 SPOSA=$MN_USER_DATA_FLOAT[0]
N520 MSG("Z轴回到刀库旋转安全位置")
N530 SUPA G00 G90 Z=$MN_USER_DATA_FLOAT[2] ;Z 轴定位到刀库能旋转的安全位置
N540 WAITS
N550 MSG("刀库推出")
N560 M62 ;刀库推出
N570 G4 F1
N580 MSG("主轴松刀")
N590 M58 ;主轴松刀
N600 G4 F2
N610 GOTOF T_GO_ON ;继续抓刀
N620 T_GET:
N630 MSG("刀盘旋转") ;抓新刀
N640 M55 ;刀库旋转指令
N650 STOPRE
N660 T_GO_ON: ;继续抓刀
N670 MSG("Z轴扣刀")
N680 SUPA G01 G90 Z=$MN_USER_DATA_FLOAT[1] F=$MN_USER_DATA_FLOAT[4];Z轴定位到换刀点
N690 MSG("主轴抓刀")
N700 M59 ;主轴紧刀
N710 G4 F2
N720 MSG("刀库退回")
N730 M63 ;刀库回退
N740 MSG("Z轴退到安全位置")
N750 SUPA G00 G90 Z=$MN_USER_DATA_FLOAT[3] ;Z轴返回安全位置
N760 SETPIECE(1) ;刀具计数加1用于刀具寿命监控
N770 END:
N780 MSG("")
N790 D1
N800 $A_DBW[0]=0
N810 M05
N820 STOPRE
N830 M17
N840 END1:
N850 M206
N860 GOTOB END
N870 INFO1:MSG("**** 无换刀动作 原因:编程刀具号 = 主轴刀具号 ****")
N880 $A_DBW[0]=0
N890 G04F3
N900 MSG("")
N910 M17
N920 INFO2:MSG("**** 刀库未回零,不能换刀 ****")
N930 $A_DBW[0]=0
N940 G04F1
N950 GOTO INFO2
N960 M17
N970 INFO3:MSG("**** 轴 X Y Z 未回零,不能换刀 ****")
N980 $A_DBW[0]=0
N990 G04F1
N1000 GOTO INFO3
N1010 M17
N1020 INFO4:MSG("**** 刀库调试模式激活,不能换刀 ****")
N1030 $A_DBW[0]=0
N1040 G04F1
N1050 GOTO INFO4
N1060 M17
N1020 INFO5:MSG("**** 换刀速度MD14514[4]=0,不能换刀 ****")
N1040 $A_DBW[0]=0
N1050 G04F1
N1060 GOTO INFO5
N1070 M17
2.MAG_CONF.SPF:刀库初始化时,需要对刀库参数做基本参数配置 ;
3.CYCPE_MA.SPF:程序段搜索处理程序;
承接上一贴有介绍,其中起着决定性的参数如下:
MD14514[0] 主轴定位角度;
; MD14514[1] Z轴换刀点位置;
; MD14514[2] 用于刀库旋转的Z轴位置;
; MD14514[3] Z轴安全位置;
第二个子程序:MAG_CONF.SPF:刀库初始化时,需要对刀库参数做基本参数配置详细如下:
N10 def int NUM_MAG,MAG_TYPE, LOCATIONS, PLACE, NUM_BUFFER, NUM_LOAD, PLACE_SEARCH
;IF $MN_USER_DATA_INT[0]==0
MSG("刀盘刀位数量 MD14510[0] 未设定")
M0
ENDIF
N20 NUM_MAG = 1 ;Nummer des Magazins
N30 MAG_TYPE = 1 ;Magazinart (1: Kette, 3: Revolver,; 5: Flaechenmagazin)
N40 LOCATIONS = $MN_USER_DATA_INT[0] ;Anzahl der Magazinplaetze
N50 NUM_BUFFER = 1 ;Anzahl der Zwischenspeicher(Spindel, Greifer)
N60 NUM_LOAD = 1 ;Anzahl der Beladestellen
N70 PLACE_SEARCH = 257 ;Art der Suchstrategie,
;=257 Bit13=0 kein Tausch Altwerkzeug auf Platz von Neuwerkzeug
;Einstellung fuer Revolvermagazin
;=12289 Bit13=1 Tausch Altwerkzeug auf Platz von Neuwerkzeug
;Einstellung fuer Kettenmagazin
N80;
N90;
;Parameter pruefen
N100 stopre
N110 if ((NUM_MAG==0)or(LOCATIONS==0))
N120 Err1:STOPRE
N130 MSG("Wrong Parameter --> Cancel")
N140 G04 F4
N150 stopre
N160 M0
N170 GOTOB Err1
N180 endif
N190; Magazin Konfiguration
N200;
N210;
N220; Loesche alte Daten wenn Magazin 1 angelegt wird
N230 if NUM_MAG ==1
N240 $TC_MAP1[0]=0; loesche Magazine
N250 $TC_DP1[0,0]=0; loesche Werkzeuge
N260 STOPRE
N270 endif
;Konfiguration
N280 $TC_MAMP2= PLACE_SEARCH ; Art der Suchstrategie
; Magazin einrichten
N290 $TC_MAP1[NUM_MAG]= MAG_TYPE ; Magazinart (1: Kette, 3: Revolver,; 5: Flaechenmagazin)
;N300 $TC_MAP2[NUM_MAG]="MAGAZIN"<<NUM_MAG
N310 if PLACE_SEARCH == 257
N320 $TC_MAP3[NUM_MAG]= 81 ; Magazinzustand alle Plaetze festplatzkodiert bei Revolvermagazin
N330 else
N340 $TC_MAP3[NUM_MAG]=17 ; Magazinzustand
N350 endif
N360$TC_MAP4[NUM_MAG]=-1
N370 $TC_MAP5[NUM_MAG]=-1
N380 $TC_MAP6[NUM_MAG]=1 ; Anzahl Zeilen des Magazines
N390 $TC_MAP8[NUM_MAG]=0
N400 $TC_MAP9[NUM_MAG]=0
N410 $TC_MAP7[NUM_MAG]= LOCATIONS ; Anzahl Magazinplaetze
;N420 $TC_MAP10[NUM_MAG]=PLACE_SEARCH ; Art der Suchstrategie
;Magazinplaetze
;N430 for PLACE=1 to LOCATIONS
N440 STOPRE
N450 $TC_MPP1[NUM_MAG,PLACE]=1 ; Platzart
N460 $TC_MPP2[NUM_MAG,PLACE]=0 ; Platzytp,0 mit jedem WZ Platztyp vertraeglich
N470 $TC_MPP3[NUM_MAG,PLACE]=1 ; Nebenplatzbetrachtung ein (aus waere 0)
N480 $TC_MPP4[NUM_MAG,PLACE]=2 ; Platzzustand; (siehe FB WZV)
N490 $TC_MPP5[NUM_MAG,PLACE]= PLACE ; Platzartindex
N500 endfor
N510 STOPRE
;N520 ; Definition Zwischenspeichermagazin (immer Nummer 9998)
;N530 $TC_MAP1[9998]=7 ; Magazinart: 7: Zwischenspeicher
;N540 $TC_MAP2[9998]="Buffer"<<NUM_MAG
N550 $TC_MAP3[9998]=17 ; Magazinzustand
N560 $TC_MAP6[9998]=1 ; Anzahl Zeilen
N570 $TC_MAP7[9998]=NUM_BUFFER ; Anzahl Plaetze
; Plaetze des Zwischenspeichers
;Spindel
N580 $TC_MPP1[9998,1]=2 ; Platzart (hier Spindel)
N590 $TC_MPP2[9998,1]=0 ; Platztyp (hier immer 0)
N600 $TC_MPP3[9998,1]=0 ; Nebenplatzbetrachtung aus
N610 $TC_MPP4[9998,1]=2 ; Platzzustand
N620 $TC_MPP5[9998,1]=1 ; Platzartindex
;N630 ;Greifer
N640 FOR PLACE=2 to NUM_BUFFER
N650 STOPRE
N660 $TC_MPP1[9998,PLACE]=3 ;(hier Greifer)
N670 $TC_MPP2[9998,PLACE]=0 ;(hier immer 0)
N680 $TC_MPP3[9998,PLACE]=0 ;Nebenplatzbetrachtung aus
N690 $TC_MPP4[9998,PLACE]=2 ;Platzzustand
N700 $TC_MPP5[9998,PLACE]=PLACE ;Platzartindex
N710 endfor
N720 STOPRE
;N730 ; Definition Belademagazin (immer Nummer 9999)
;N740 $TC_MAP1[9999]=9 ; Magazinart: 9: Belademagazin
;N750 $TC_MAP2[9999]="BELADEMAGAZIN"<<NUM_MAG
N760 $TC_MAP3[9999]=17 ; Magazinzustand
N770 $TC_MAP4[9999]=-1
N780 $TC_MAP5[9999]=-1
N790 $TC_MAP6[9999]=1 ; Anzahl Zeilen
N800 $TC_MAP7[9999]=NUM_LOAD; Anzahl Plaetze
N810 STOPRE;
;N820 ; Belademagazinplaetze
;N830 for PLACE=1 to NUM_LOAD
N840 STOPRE
N850 $TC_MPP1[9999,PLACE]=7 ; Platzart Beladestelle
N860 $TC_MPP2[9999,PLACE]=0 ; Platztyp (hier immer 0)
N870 $TC_MPP3[9999,PLACE]=0 ; Nebenplatzbetrachtung aus
N880 $TC_MPP4[9999,PLACE]=2 ; Platzzustand
N890 $TC_MPP5[9999,PLACE]=PLACE ; Platzartindex
N900 endfor
N910 STOPRE
N920 ; Offsets (Abstaende) ; Abstaende zum Magazin
Zwischenspeicher
N930 for PLACE=1 to NUM_BUFFER
N940 $TC_MDP2[NUM_MAG,PLACE]=0
N950 endfor
N960 STOPRE
;Beladestellen
N970 for PLACE=1 to NUM_LOAD
N980 stopre
N990 $TC_MDP1[NUM_MAG,PLACE]=0
N1000 endfor
;Spindel-Greifer Zuordnung
;N1010 stopre
N1020 for PLACE=2 to NUM_BUFFER
N1030 stopre
N1040 $TC_MLSR[PLACE,1]=0
N1050endfor
Ende
N1060 M30