数控圈-西门子加工中心如何用程序控制刀具寿命?刀具寿命到达后,如何禁止程序?

技术小编 4982 0

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[刀具号,刀沿号]



抱歉,评论功能暂时关闭!