东莞市建锋刀具有限公司
地址:广东省东莞市厚街镇双岗家具大道133号
电话:13662969526
传真:0769-88688872
E-mail:jianfengtools@163.com
联系人:张建平(总经理)
手机:15817774865/13926865203
QQ:2568541098
1. 问题举例
假设NC程序中一共使用了5把刀具,但只需要对第4把刀具的寿命进行监控。当第4把刀具的寿命到达时,系统出现6413号报警。
此时,如果再次启动NC程序,程序运行到了第2把刀具,才出现22069号报警,原因是此时,系统预读出4号刀具无效,程序才会终止,不能继续运行。
如果用户的需求是只要有相关刀具寿命到达后,程序就不能再次启动,也就是说从第1把刀具开始就不能运行,怎么办呢?
2. 解决方案
使用程序事件,在程序启动时就开始判断相关刀具的寿命。因为NC程序可能很长,在程序启动时不能读出后面要用到哪些刀具,所以判断刀具寿命时只能把主轴上和刀库里所有的刀具都检查一遍,如果有刀具寿命到达,不管程序里是否用到了,程序都不能启动。
3. 测试条件
硬件:828D PPU280.3 Milling
软件:V4.7+SP2+HF1
4. 实现方法
(1) 设置机床数据MD20108 Bit0=1,开启程序启动时的程序事件。
(2) 在制造商循环里新建程序CYCPE_MA.SPF。
(3) 程序内容如下:
PROC CYCPE_MA SBLOF DISPLOF
DEF INT LOCATION_QTY ;刀库刀位数量
DEF INT LOCATION_NUM ;刀库刀位号
DEF INT EDGE_QTY ;刀沿数量
DEF INT EDGE_NUM ;刀沿编号
DEF INT T_NUM ;刀具编号
DEF INT D_QTY ;刀沿数量
DEF INT D_NUM ;刀沿编号
IF $P_PROG_EVENT==1 ;start part program
LOCATION_QTY=$TC_MAP[7] ;刀库刀位数量
LOCATION_NUM=1 ;从1号刀位开始检测
D_NUM=1 ;从1号刀沿开始检测
T_NUM=$TC_MPP6[9998,1] ;读主轴上的刀具号
IF T_NUM >0 ;如果有刀
D_QTY=$P_TOOLND[T_NUM] ;读刀具的刀沿数量
D_NUM=1 ;从1号刀沿开始检测
LAB01:
IF (($TC_TP9[T_NUM] ==1) AND($TC_MOP11[T_NUM,D_NUM]>0) AND ($TC_MOP2[T_NUM,D_NUM]<=0)) GOTOF LAB04;判断刀具寿命加工时间是否到
IF (($TC_TP9[T_NUM] ==2) AND ($TC_MOP13[T_NUM,D_NUM]>0)AND ($TC_MOP4[T_NUM,D_NUM]<=0)) GOTOF LAB04;判断刀具寿命工件数量是否到
IF (($TC_TP9[T_NUM] ==4) AND($TC_MOP15[T_NUM,D_NUM]>0) AND ($TC_MOP6[T_NUM,D_NUM]<=0)) GOTOF LAB04;判断刀具寿命磨损量是否到
D_NUM=D_NUM+1 ;刀沿号+1
IF D_NUM<=D_QTY GOTOB LAB01 ;如果不是最后一个刀沿号,循环继续读
ENDIF ;如果有刀
LAB02:
T_NUM=$TC_MPP6[1,LOCATION_NUM] ;读每个刀位里的刀具编号
IF T_NUM >0 ;如果有刀
D_QTY=$P_TOOLND[T_NUM] ;读刀具的刀沿数量
D_NUM=1 ;从1号刀沿开始检测
LAB03:
IF (($TC_TP9[T_NUM] ==1) AND($TC_MOP11[T_NUM,D_NUM]>0) AND ($TC_MOP2[T_NUM,D_NUM]<=0)) GOTOF LAB04;判断刀具寿命加工时间是否到
IF (($TC_TP9[T_NUM] ==2) AND($TC_MOP13[T_NUM,D_NUM]>0) AND ($TC_MOP4[T_NUM,D_NUM]<=0)) GOTOF LAB04;判断刀具寿命工件数量是否到
IF (($TC_TP9[T_NUM] ==4) AND($TC_MOP15[T_NUM,D_NUM]>0) AND ($TC_MOP6[T_NUM,D_NUM]<=0)) GOTOF LAB04;判断刀具寿命磨损量是否到
D_NUM=D_NUM+1 ;刀沿号+1
IF D_NUM<=D_QTY GOTOB LAB03 ;如果不是最后一个刀沿号,循环继续读
ENDIF ;如果有刀
LOCATION_NUM=LOCATION_NUM+1 ;刀位号+1
IF LOCATION_NUM<=LOCATION_QTY GOTOB LAB02 ;如果不是最后一个刀位号,循环继续读
ENDIF
IF $P_PROG_EVENT==2 ;end part program
ENDIF
IF $P_PROG_EVENT==3 ;reset
ENDIF
IF $P_PROG_EVENT==4 ;power up
ENDIF
IF $P_PROG_EVENT==5 ;block search
ENDIF
M17
LAB04:
MSG("T"<<T_NUM<<" D"<<D_NUM<<"刀具寿命已到,程序不能运行。请重设置刀具寿命!")
G4 F1
GOTOB LAB04 ;循环显示报警
5. 测试结果
当监控主轴上T2刀具寿命时,D2的设定值是100个工件,当前剩余为0,所以T2号刀被禁用。启动程序时,会出现报警:T2 D2 刀具寿命已到。
6. 相关系统变量
刀库中的刀位数量:$TC_MAP7[刀库号]
刀位里的刀具号:$TC_MPP6[刀库号,刀位号]
刀具的刀沿数量:$P_TOOLND[刀具号]
刀具寿命监控方式:$TC_TP9[刀具号] (0:不监控,1:加工时间,2:工件个数,4:磨损量)
刀具寿命加工时间设定值:$TC_MOP11[刀具号,刀沿号]
刀具寿命加工时间剩余值:$TC_MOP2[刀具号,刀沿号]
刀具寿命工件数量设定值:$TC_MOP13[刀具号,刀沿号]
刀具寿命工件数量剩余值:$TC_MOP4[刀具号,刀沿号]
刀具寿命磨损量设定值:$TC_MOP15[刀具号,刀沿号]
刀具寿命磨损量剩余值:$TC_MOP6[刀具号,刀沿号]