最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

伺服刀库

IT圈 admin 26浏览 0评论

2024年5月8日发(作者:费莫浩思)

FANUC伺服电机刀库

FANUC技术部:黄辉

一、综述:

使用伺服电机作为刀库电机,具有可控性强,定位准的特点。可根据要求来实现动作,

主要的动作分为以下两种:

1、 PMC轴控制:

使用伺服电机的PMC轴功能,完全靠PMC来实现换刀动作。从动作上来看,伺服

轴为PMC轴,而不是NC控制轴。编程较为复杂,对技术人员的要求较高。

2、 宏程序实现

使用宏程序实现换刀动作,电机的主要动作和时序安排完全靠NC程序来实现,PMC

只做辅助作用。伺服电机为NC控制轴。使用宏程序实现刀库动作简单易懂,可读性强。

对于斗笠式圆盘固定换刀刀库,宏程序实现的方法更为简单,以下进行介绍。

二、宏程序实现:

圆盘刀库电机为旋转轴设置,且为360度循环显示,要求NC设定参数如下:

1006#0=1,1006#1=0(旋转轴设定)

1008#0=1,1008#2=1,1260=360000(坐标360度循环显示)

宏程序实现时,有多种方法,且对于增量式编码器电机和绝对编码器电机,对于找刀

方式,在实际编程要求上不同。

电机编码器不同:

1、绝对型编码器电机:

由于电机坐标由电池进行保持,对于固定换刀刀库,也就是说每把刀在刀库上的位

置是固定,是有固定的坐标值的。所以在找刀时,NC只需要走到相应的机械坐标位置

就可以找到相应的刀位,并进行抓松刀操作。

2、增量式编码器电机:

由于电机坐标掉电丢失,故要求每次开机之后刀库电机进行回零操作才可以固定每

个刀位的具体位置。同样,回零完成之后,找刀时,NC只需要走到相应的机械坐标位

置就可以找到相应的刀位,并进行抓松刀操作。

找刀方式不同:

1、就近找刀:

使由于刀库电机为旋转轴,可以通过设定旋转轴参数进行就近旋转找刀操作。

设定参数:1008#1=0(就近旋转)

2、固定方向找刀:

对于间隙较大的机械,如果进行就近找刀可能导致刀位位置发生变化,故可采用

固定方形找刀的方式,设定参数如下:

1008#1=1(按指令值符号方向找刀)

三、示例:

以下示例一个固定方向找刀,且为增量编码器的圆盘斗笠刀库宏程序,刀库共8把刀,

且为等距离分布,即每45度一个刀位。

使用M6调用O9001号宏程序,指令格式为M6T****,需要设定参数6071=6。

宏变量解释如下:

#100:目标刀号输出地址,为非保持型公共变量,掉电丢失,可自由定义。

#4120:T代码输出变量地址,为系统变量。

#3000:报警信息设置地址。括号内为报警内容。

#500:主轴上刀具号存储地址,为保持型公共变量,掉电不丢失,可自由定义。

#504:X轴换刀位坐标值存储地址,为保持型公共变量,掉电不丢失。

#505:Z轴换刀位坐标值存储地址,为保持型公共变量,掉电不丢失。

#105:同#100

注1:以上为车床系统范例,指令格式为M6T****,T代码由四位代码指令,前两位为刀号,

后两位为刀补号。

注2:上述的编程格式为在A代码体系下的编程,即3401#6,#7=0。即上述编程中均为绝

对坐标指令。如果更改代码体系,必须对程序进行修改。

注3:如果手动松刀,请手动将#500的内容清0。

四、宏程序内容注释

O9001;

N10 #100=FIX[#4120/100]; 对#4120进行取整操作,得出刀号,赋值给#100

N11 IF[#100GT0]GOTO15; 如果T代码刀号大于0,跳至N15执行,否则继续

N12 #3000=1(TOOL NUMBER IS 0); 承接N11,如果T代码小于0,则触发3001号报警

N15 IF[#100LT9]GOTO25; 如果刀号小于9,则跳至N25执行

N20 #3000=2(TOOL NOT FOUND); 承接N15,如果刀号大于等于9,触发3002报警

N25 IF[#500EQ#100]GOTO105; 如果主轴上刀号等于目标刀号,跳至N105执行

N26 M19; 主轴定向

N27 G53G0Z0; Z轴到达一安全位等待,此例中为Z0,可修改

N30 IF[#500EQ0]GOTO57; 如果主轴上无刀,跳至N57执行

N35 G53G00A[#500*45.000-45.000]; 刀库旋转至主轴刀号对应刀位

N40 G53G00X#504; X轴运动至还刀位(需要预先调整测定)

N45 G53G00Z#505; Z轴运动至还刀位(需要预先调整测定)

N46 M36; 还刀(将主轴上的刀还回刀库)

N55 G4X4.; 暂停4秒(可根据需要调整)

N56 G53G0Z-220.805; Z轴回到一安全位等待,可修改位置值

N57 M36; 松刀

N60 #105=FIX[#4120/100] 对#4120进行取整操作,得出刀号,赋值给#105

N61 IF[#105LT#500]GOTO110 如果目标刀号小于主轴上刀号,跳至N110执行

N65 G53G00A[#105*45.000-45.000] 刀库旋转至目标刀号位置

N70 G53G00X#504; X轴运动至还刀位(需要预先调整测定)

N71 G53G00Z#505; Z轴运动至还刀位(需要预先调整测定)

N72 M35; 抓刀(抓目标刀上主轴)

N75 G4X4.; 暂停4秒(可根据需要调整)

N80G53G00Z-220.805.; Z轴回一安全位(根据实际情况调整)

N85G53X-450.; X轴回一安全位(根据实际情况调整)

N90#500=FIX[#4120/100]; 更新主轴上刀号

N100M99; 换刀结束,返回主程序

N105#3000=3(TOOL IS ON THE SPINDLE);触发3003号报警

GOTO100 返回N100程序段执行

N110 G53G00A[#105*45.000-45.000+360.]; 由于单方向旋转,当目标刀号小时,加360度

GOTO70 跳至N70程序段执行

五、思路分解

对上例程序进行分解,以方便了解思路。

主要情况如下:

1、 主轴上无刀,指令T****;

N10 #100=FIX[#4120/100]; 对#4120进行取整操作,得出刀号,赋值给#100

N26 M19; 主轴定向

N27 G53G0Z0; Z轴到达一安全位等待

N57 M36 松刀

N60 #105=FIX[#4120/100] 对#4120进行取整操作,得出刀号,赋值给#105

N70 G53G00X#504; X轴运动至抓刀位(需要预先调整测定)

N71 G53G00Z#505; Z轴运动至抓刀位(需要预先调整测定)

N72 M35; 抓刀(抓目标刀上主轴)

N75 G4X4.; 暂停4秒(可根据需要调整)

N80G53G00Z-220.805.; Z轴回一安全位(根据实际情况调整)

N85G53X-450.; X轴回一安全位(根据实际情况调整)

N90#500=FIX[#4120/100]; 更新主轴上刀号

N100M99; 换刀结束,返回主程序

2、 主轴上有刀,指令T****,且指令(目标)刀号大于主轴上刀号:

N10 #100=FIX[#4120/100]; 对#4120进行取整操作,得出刀号,赋值给#100

N26 M19; 主轴定向

N27 G53G0Z0; Z轴到达一安全位等待

N35 G53G00A[#500*45.000-45.000]; 刀库旋转至主轴刀号对应刀位

N40 G53G00X#504; X轴运动至还刀位(需要预先调整测定)

N45 G53G00Z#505; Z轴运动至还刀位(需要预先调整测定)

N46 M36; 还刀(将主轴上的刀还回刀库)

N55 G4X4.; 暂停4秒(可根据需要调整)

N56 G53G0Z-220.805; Z轴回到一安全位等待,此例中为Z0,可修改

N60 #105=FIX[#4120/100] 对#4120进行取整操作,得出刀号,赋值给#105

N70 G53G00X#504; X轴运动至抓刀位(需要预先调整测定)

N71 G53G00Z#505; Z轴运动至抓刀位(需要预先调整测定)

N72 M35; 抓刀(抓目标刀上主轴)

N75 G4X4.; 暂停4秒(可根据需要调整)

N80G53G00Z-220.805.; Z轴回一安全位(根据实际情况调整)

N85G53X-450.; X轴回一安全位(根据实际情况调整)

N90#500=FIX[#4120/100]; 更新主轴上刀号

N100M99; 换刀结束,返回主程序

3、 主轴上有刀,指令T****,且指令(目标)刀号小于主轴上刀号:

N10 #100=FIX[#4120/100]; 对#4120进行取整操作,得出刀号,赋值给#100

N1 M19; 主轴定向

N5 G53G0Z0; Z轴到达一安全位等待

N35 G53G00A[#500*45.000-45.000]; 刀库旋转至主轴刀号对应刀位

N40 G53G00X#504; X轴运动至还刀位(需要预先调整测定)

N45 G53G00Z#505; Z轴运动至还刀位(需要预先调整测定)

N46 M36; 还刀(将主轴上的刀还回刀库)

N55 G4X4.; 暂停4秒(可根据需要调整)

N56 G53G0Z-220.805; Z轴回到一安全位等待,此例中为Z0,可修改

N60 #105=FIX[#4120/100] 对#4120进行取整操作,得出刀号,赋值给#105

N110 G53G00A[#105*45.000-45.000+360.];单方向旋转,当目标刀号小时,加360度

N70 G53G00X#504; X轴运动至还刀位(需要预先调整测定)

N71 G53G00Z#505; Z轴运动至还刀位(需要预先调整测定)

N72 M35; 抓刀(抓目标刀上主轴)

N75 G4X4.; 暂停4秒(可根据需要调整)

N80G53G00Z-220.805; Z轴回一安全位(根据实际情况调整)

N85G53X-450.; X轴回一安全位(根据实际情况调整)

N90#500=FIX[#4120/100]; 更新主轴上刀号

N100M99; 换刀结束,返回主程序

4、 主轴上有刀,指令T****,且指令(目标)刀号等于主轴上刀号:

N10 #100=FIX[#4120/100]; 对#4120进行取整操作,得出刀号,赋值给#100

N105#3000=3(TOOL IS ON THE SPINDLE);触发3003号报警

N100M99; 换刀结束,返回主程序

六:结束语

对于上述范例,考虑了较为简单的情况,且要求每次开机后必须进行刀库回零,否则

容易出现刀位不对的现象,如果要求每次开机后不回零而直接换刀,则必须对程序进行修

改,或者更改为绝对值编码器电机。

2024年5月8日发(作者:费莫浩思)

FANUC伺服电机刀库

FANUC技术部:黄辉

一、综述:

使用伺服电机作为刀库电机,具有可控性强,定位准的特点。可根据要求来实现动作,

主要的动作分为以下两种:

1、 PMC轴控制:

使用伺服电机的PMC轴功能,完全靠PMC来实现换刀动作。从动作上来看,伺服

轴为PMC轴,而不是NC控制轴。编程较为复杂,对技术人员的要求较高。

2、 宏程序实现

使用宏程序实现换刀动作,电机的主要动作和时序安排完全靠NC程序来实现,PMC

只做辅助作用。伺服电机为NC控制轴。使用宏程序实现刀库动作简单易懂,可读性强。

对于斗笠式圆盘固定换刀刀库,宏程序实现的方法更为简单,以下进行介绍。

二、宏程序实现:

圆盘刀库电机为旋转轴设置,且为360度循环显示,要求NC设定参数如下:

1006#0=1,1006#1=0(旋转轴设定)

1008#0=1,1008#2=1,1260=360000(坐标360度循环显示)

宏程序实现时,有多种方法,且对于增量式编码器电机和绝对编码器电机,对于找刀

方式,在实际编程要求上不同。

电机编码器不同:

1、绝对型编码器电机:

由于电机坐标由电池进行保持,对于固定换刀刀库,也就是说每把刀在刀库上的位

置是固定,是有固定的坐标值的。所以在找刀时,NC只需要走到相应的机械坐标位置

就可以找到相应的刀位,并进行抓松刀操作。

2、增量式编码器电机:

由于电机坐标掉电丢失,故要求每次开机之后刀库电机进行回零操作才可以固定每

个刀位的具体位置。同样,回零完成之后,找刀时,NC只需要走到相应的机械坐标位

置就可以找到相应的刀位,并进行抓松刀操作。

找刀方式不同:

1、就近找刀:

使由于刀库电机为旋转轴,可以通过设定旋转轴参数进行就近旋转找刀操作。

设定参数:1008#1=0(就近旋转)

2、固定方向找刀:

对于间隙较大的机械,如果进行就近找刀可能导致刀位位置发生变化,故可采用

固定方形找刀的方式,设定参数如下:

1008#1=1(按指令值符号方向找刀)

三、示例:

以下示例一个固定方向找刀,且为增量编码器的圆盘斗笠刀库宏程序,刀库共8把刀,

且为等距离分布,即每45度一个刀位。

使用M6调用O9001号宏程序,指令格式为M6T****,需要设定参数6071=6。

宏变量解释如下:

#100:目标刀号输出地址,为非保持型公共变量,掉电丢失,可自由定义。

#4120:T代码输出变量地址,为系统变量。

#3000:报警信息设置地址。括号内为报警内容。

#500:主轴上刀具号存储地址,为保持型公共变量,掉电不丢失,可自由定义。

#504:X轴换刀位坐标值存储地址,为保持型公共变量,掉电不丢失。

#505:Z轴换刀位坐标值存储地址,为保持型公共变量,掉电不丢失。

#105:同#100

注1:以上为车床系统范例,指令格式为M6T****,T代码由四位代码指令,前两位为刀号,

后两位为刀补号。

注2:上述的编程格式为在A代码体系下的编程,即3401#6,#7=0。即上述编程中均为绝

对坐标指令。如果更改代码体系,必须对程序进行修改。

注3:如果手动松刀,请手动将#500的内容清0。

四、宏程序内容注释

O9001;

N10 #100=FIX[#4120/100]; 对#4120进行取整操作,得出刀号,赋值给#100

N11 IF[#100GT0]GOTO15; 如果T代码刀号大于0,跳至N15执行,否则继续

N12 #3000=1(TOOL NUMBER IS 0); 承接N11,如果T代码小于0,则触发3001号报警

N15 IF[#100LT9]GOTO25; 如果刀号小于9,则跳至N25执行

N20 #3000=2(TOOL NOT FOUND); 承接N15,如果刀号大于等于9,触发3002报警

N25 IF[#500EQ#100]GOTO105; 如果主轴上刀号等于目标刀号,跳至N105执行

N26 M19; 主轴定向

N27 G53G0Z0; Z轴到达一安全位等待,此例中为Z0,可修改

N30 IF[#500EQ0]GOTO57; 如果主轴上无刀,跳至N57执行

N35 G53G00A[#500*45.000-45.000]; 刀库旋转至主轴刀号对应刀位

N40 G53G00X#504; X轴运动至还刀位(需要预先调整测定)

N45 G53G00Z#505; Z轴运动至还刀位(需要预先调整测定)

N46 M36; 还刀(将主轴上的刀还回刀库)

N55 G4X4.; 暂停4秒(可根据需要调整)

N56 G53G0Z-220.805; Z轴回到一安全位等待,可修改位置值

N57 M36; 松刀

N60 #105=FIX[#4120/100] 对#4120进行取整操作,得出刀号,赋值给#105

N61 IF[#105LT#500]GOTO110 如果目标刀号小于主轴上刀号,跳至N110执行

N65 G53G00A[#105*45.000-45.000] 刀库旋转至目标刀号位置

N70 G53G00X#504; X轴运动至还刀位(需要预先调整测定)

N71 G53G00Z#505; Z轴运动至还刀位(需要预先调整测定)

N72 M35; 抓刀(抓目标刀上主轴)

N75 G4X4.; 暂停4秒(可根据需要调整)

N80G53G00Z-220.805.; Z轴回一安全位(根据实际情况调整)

N85G53X-450.; X轴回一安全位(根据实际情况调整)

N90#500=FIX[#4120/100]; 更新主轴上刀号

N100M99; 换刀结束,返回主程序

N105#3000=3(TOOL IS ON THE SPINDLE);触发3003号报警

GOTO100 返回N100程序段执行

N110 G53G00A[#105*45.000-45.000+360.]; 由于单方向旋转,当目标刀号小时,加360度

GOTO70 跳至N70程序段执行

五、思路分解

对上例程序进行分解,以方便了解思路。

主要情况如下:

1、 主轴上无刀,指令T****;

N10 #100=FIX[#4120/100]; 对#4120进行取整操作,得出刀号,赋值给#100

N26 M19; 主轴定向

N27 G53G0Z0; Z轴到达一安全位等待

N57 M36 松刀

N60 #105=FIX[#4120/100] 对#4120进行取整操作,得出刀号,赋值给#105

N70 G53G00X#504; X轴运动至抓刀位(需要预先调整测定)

N71 G53G00Z#505; Z轴运动至抓刀位(需要预先调整测定)

N72 M35; 抓刀(抓目标刀上主轴)

N75 G4X4.; 暂停4秒(可根据需要调整)

N80G53G00Z-220.805.; Z轴回一安全位(根据实际情况调整)

N85G53X-450.; X轴回一安全位(根据实际情况调整)

N90#500=FIX[#4120/100]; 更新主轴上刀号

N100M99; 换刀结束,返回主程序

2、 主轴上有刀,指令T****,且指令(目标)刀号大于主轴上刀号:

N10 #100=FIX[#4120/100]; 对#4120进行取整操作,得出刀号,赋值给#100

N26 M19; 主轴定向

N27 G53G0Z0; Z轴到达一安全位等待

N35 G53G00A[#500*45.000-45.000]; 刀库旋转至主轴刀号对应刀位

N40 G53G00X#504; X轴运动至还刀位(需要预先调整测定)

N45 G53G00Z#505; Z轴运动至还刀位(需要预先调整测定)

N46 M36; 还刀(将主轴上的刀还回刀库)

N55 G4X4.; 暂停4秒(可根据需要调整)

N56 G53G0Z-220.805; Z轴回到一安全位等待,此例中为Z0,可修改

N60 #105=FIX[#4120/100] 对#4120进行取整操作,得出刀号,赋值给#105

N70 G53G00X#504; X轴运动至抓刀位(需要预先调整测定)

N71 G53G00Z#505; Z轴运动至抓刀位(需要预先调整测定)

N72 M35; 抓刀(抓目标刀上主轴)

N75 G4X4.; 暂停4秒(可根据需要调整)

N80G53G00Z-220.805.; Z轴回一安全位(根据实际情况调整)

N85G53X-450.; X轴回一安全位(根据实际情况调整)

N90#500=FIX[#4120/100]; 更新主轴上刀号

N100M99; 换刀结束,返回主程序

3、 主轴上有刀,指令T****,且指令(目标)刀号小于主轴上刀号:

N10 #100=FIX[#4120/100]; 对#4120进行取整操作,得出刀号,赋值给#100

N1 M19; 主轴定向

N5 G53G0Z0; Z轴到达一安全位等待

N35 G53G00A[#500*45.000-45.000]; 刀库旋转至主轴刀号对应刀位

N40 G53G00X#504; X轴运动至还刀位(需要预先调整测定)

N45 G53G00Z#505; Z轴运动至还刀位(需要预先调整测定)

N46 M36; 还刀(将主轴上的刀还回刀库)

N55 G4X4.; 暂停4秒(可根据需要调整)

N56 G53G0Z-220.805; Z轴回到一安全位等待,此例中为Z0,可修改

N60 #105=FIX[#4120/100] 对#4120进行取整操作,得出刀号,赋值给#105

N110 G53G00A[#105*45.000-45.000+360.];单方向旋转,当目标刀号小时,加360度

N70 G53G00X#504; X轴运动至还刀位(需要预先调整测定)

N71 G53G00Z#505; Z轴运动至还刀位(需要预先调整测定)

N72 M35; 抓刀(抓目标刀上主轴)

N75 G4X4.; 暂停4秒(可根据需要调整)

N80G53G00Z-220.805; Z轴回一安全位(根据实际情况调整)

N85G53X-450.; X轴回一安全位(根据实际情况调整)

N90#500=FIX[#4120/100]; 更新主轴上刀号

N100M99; 换刀结束,返回主程序

4、 主轴上有刀,指令T****,且指令(目标)刀号等于主轴上刀号:

N10 #100=FIX[#4120/100]; 对#4120进行取整操作,得出刀号,赋值给#100

N105#3000=3(TOOL IS ON THE SPINDLE);触发3003号报警

N100M99; 换刀结束,返回主程序

六:结束语

对于上述范例,考虑了较为简单的情况,且要求每次开机后必须进行刀库回零,否则

容易出现刀位不对的现象,如果要求每次开机后不回零而直接换刀,则必须对程序进行修

改,或者更改为绝对值编码器电机。

发布评论

评论列表 (0)

  1. 暂无评论