MD14514[0] 主轴定位角度;
MD14514[1] Z 轴换刀点位置;
MD14514[2] 用于刀库旋转的 Z 轴位置;
MD14514[3] Z 轴安全位置;
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 ;主轴松刀
N360 G4 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
N1045 G04F1
N1050 GOTO INFO5
N1060 M17