数车宏程序B及其应用实例16K.docx

上传人:b****5 文档编号:5723240 上传时间:2022-12-31 格式:DOCX 页数:20 大小:102.35KB
下载 相关 举报
数车宏程序B及其应用实例16K.docx_第1页
第1页 / 共20页
数车宏程序B及其应用实例16K.docx_第2页
第2页 / 共20页
数车宏程序B及其应用实例16K.docx_第3页
第3页 / 共20页
数车宏程序B及其应用实例16K.docx_第4页
第4页 / 共20页
数车宏程序B及其应用实例16K.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

数车宏程序B及其应用实例16K.docx

《数车宏程序B及其应用实例16K.docx》由会员分享,可在线阅读,更多相关《数车宏程序B及其应用实例16K.docx(20页珍藏版)》请在冰豆网上搜索。

数车宏程序B及其应用实例16K.docx

数车宏程序B及其应用实例16K

FANUC0iMate-TC系统

宏程序B功能

实例应用

 

William.Yang

FANUC0iMate-TC系统宏程序B功能

宏程序作为一种数控程序编制指令现在已经被广大数控机床用户所认识,尤其是近年来随着各类数控大赛的不断开展,宏程序在大赛中的广泛应用,在数控行业中掀起了宏程序的热潮。

宏程序根据所用的数控机床的不同略有不同,但大同小异,我们学会了一种机床的宏程序后,再学习其它机床的宏程序就容易了。

本文以国际上比较流行的FANUC0iMate数控系统为例,介绍一下宏程序的编程。

FANUC0iMate数控系统中宏程序分为用户宏程序功能A和用户宏程序功能B两类。

A类宏程序是采用了G代码和引数进行赋值来表达各种数学运算和逻辑关系的一种方法,现在这种方法由于编制起来相对复杂,一般只有数控机床上没有配置用户宏程序功能B的用户才使用用户宏程序功能A。

目前大多数用户都使用用户宏程序功能B进行编制,所以本书仅以用户宏程序功能B为重点深入介绍宏程序的相关知识。

讲座中编写了近年广泛应用的一些例子和笔者最近开发的零件使用宏程序的复杂例子。

以FANUC0iMate数控系统数控车床和加工中心为例进行讲解,本讲座已经作为我学院的宏程序教案进行推广,同时在我学院进行培训的高级技师、技师及高级工中进行了讲授反映良好,特将本教案作为实例供广大使用FANUC0iMate数控系统的用户和有兴趣研究宏程序的读者作为参考。

 

一、宏程序的基本概念

在一般的程序中,程序字为常量,只能描述固定的几何形状,缺乏灵活性和适用性。

若能用改变参数的方法使同一主程序能加工形状(属性)相同但尺寸(参数)不同的零件,加工就会非常方便,也提高了可靠性。

加工不规则形状零件时,机床可能要作非圆曲线运动,一般手工编程达不到要求。

在进行自动测量时机床要对测量数据进行处理,这些数据属于变量,一般程序是不能处理的。

针对这种情况,数控机床提供了另一种编程方式,即宏编程。

在程序中使用变量,通过对变量进行赋值及处理使程序具有特殊功能,这种有变量的程序叫宏程序。

二、宏程序与普通程序的区别

1)普通程序:

1只能使用常量 

2常量之间不可以运算

③程序只能顺序执行

2)宏程序:

1使用变量可赋值

2变量之间可以运算

③程序执行时可以跳转

三、宏程序中变量的使用

1)变量的类型

①空变量:

#0

功能:

空变量总是空,不能赋值。

②用户变量

局部变量:

#1~#33(断电时清除)

功能:

局部变量只能在本宏程序中存储数据。

公共变量:

#100~#199(断电时清除)

#500~#999(断电时不清除)

功能:

公共变量在不同的宏程序中的意义相同。

 

③系统变量:

#1000以上

功能:

系统变量用于读和写CNC运行时各种数据变化。

编程中常用的系统变量,见表1。

表1刀具补偿存贮器C的系统变量

补偿号

X轴

Z轴

刀尖半径R

刀尖位置T

磨损

几何

磨损

几何

磨损

几何

1

#2001

#2701

#2101

#2801

#2201

#2901

#2301

49

#2049

#2749

#2149

#2849

#2249

#2949

#2349

64

#2064

#2164

#2264

#2364

 

2)变量的赋值

①直接赋值

变量可在操作面板MACRO内容处直接输入,也可用MDI方式赋值,也可在程序内用以下方式赋值,但等号左边不能用表达式,#_=数值(或表达式)。

如:

#1=20;

G01X#1;

②自变量赋值

宏程序体以子程序方式出现,所用的变量可在宏调用时在主程序中赋值。

如:

G65P9120X100.0Y20.0F20.0;

其中X、Y、F对应于宏程序中的变量号,变量的具体数值由自变量后的数值决定。

自变量与宏程序体中变量的对应关系有2种,2种方法可以混用,其中G、L、N、O、P不能作为自变量为变量赋值。

变量赋值方法Ⅰ、Ⅱ见表2、表3

 

表2变量赋值方法Ⅰ

自变量

变量

自变量

变量

自变量

变量

自变量

变量

A

#1

H

#11

R

#18

X

#24

B

#2

I

#4

S

#19

Y

#25

C

#3

J

#5

T

#20

Z

#26

D

#7

K

#6

U

#21

E

#8

M

#13

V

#22

F

#9

Q

#17

W

#23

表3变量赋值方法Ⅱ

自变量

变量

自变量

变量

自变量

变量

自变量

变量

A

#1

I3

#10

I6

#19

I9

#28

B

#2

J3

#11

J6

#20

J9

#29

C

#3

K3

#12

K6

#21

K9

#30

I1

#4

I4

#13

I7

#22

I10

#31

J1

#5

J4

#14

J7

#23

J10

#32

K1

#6

K4

#15

K7

#24

K10

#33

I2

#7

I5

#16

I8

#25

J2

#8

J5

#17

J8

#26

K2

#9

K5

#18

K8

#27

 

四、运算指令

宏程序具有赋值、算术运算、逻辑运算等功能,见表4

表4变量的各种运算

形式

意义

具体实例

定义转换

#i=#j

定义、转换

#20=500

#102=#10

#i=#j+#k

#5=#10+#102

#i=#j-#k

#8=#3+100

#i=#j*#k

#120=#1*#24

#20=#7*360

#i=#j/#k

#104=#8/#7

#110=#21/12

#i=SIN[#j]

#i=ASIN[#j]

#i=COS[#j]

#i=ACOS[#j]

#i=TAN[#j]

#i=ATAN[#j]

正弦(度)

反正弦(度)

余弦(度)

反余弦(度)

正切

反正切

#10=SIN[#5]

#10=ASIN[#16]

#133=COS[#20]

#10=ACOS[#16]

#30=TAN[#21]

#148=ATAN[#1]/[#2]

#i=SQRT[#j]

#i=ABS[#j]

#i=ROUND[#j]

#i=FIX[#j]

#i=FUP[#j]

#i=LN[#j]

#i=EXP[#j]

平方根

绝对值

四舍五入

上取整

下取整

自然对数

指数ex

#131=SQRT[#10]

#5=ABS[#102]

#112=ROUND[#23]

#115=FIX[#109]

#114=FUP[#33]

#3=LN[#100]

#7=EXP[#9]

#i=#jAND#k

#i=#jOR#k

#i=#jXOR#k

异或

#11=#1AND#18

#20=#3OR#8

#12=#5XOR25

五、控制指令

控制指令起到控制程序流向的作用。

1)分支语句(GOTO)其格式为:

IF[〈条件表达式〉]GOTOn

IF[〈条件表达式〉]THEN〈表达式〉

若条件表达式为成立则程序转向段号为n的程序段,若条件不满足就继续执行下一句

程序,条件式的种类见表5。

表5条件式种类

条件式

意义

#jEQ#k

#jNE#k

#jGT#k

#jLT#k

#jGE#k

#jLE#k

2)循环指令格式:

WHILE[〈条件式〉]DOm(m=1,2,3);

ENDm;

当条件式满足时,就循环执行WHILE与ENDm之间的程序段,若条件不满足就执行ENDm;的下一个程序段。

注意:

1)同一识别号可以使用多次,但DOm与ENDm必须成对使用。

WHILE[…]DO2;

END2;

WHILE[…]DO2;

END2;

2)循环可以嵌套,但最多嵌套三层。

WHILE[…]DO1;

WHILE[…]DO2;

WHILE[…]DO3;

END3;

END2;

END1;

3)循环不可以交叉。

WHILE[…]DO2;

WHILE[…]DO3;

END2;

END3;

4)可以从循环内向循环外转移。

WHILE[…]DO2;

GOTO11;

END2;

N11…;

5)不可以从循环外向循环内转移。

GOTO11;

WHILE[…]DO2;

N11…;

END2;

6)在循环内可以调用用户宏程序或子程序。

循环在用户宏程序或子程序中嵌套三层。

┇┇

WHILE[…]DO2;WHILE[…]DO2;

┇┇

G65…;M98…;

┇┇

G66…;END2;

┇┇

G67;

END2;

六、宏程序的使用方法

1)宏程序使用格式

宏程序格式与子程序一样,结尾用M99返回主程序。

O1;主程序O8000;宏程序

┇┇

G65P8000(自变量赋值);[变量]

┇[运算指令]宏程序体

┇[控制指令]

┇┇

M30;M99;

2)选择程序号

程序在存储器中的位置决定了该程序一些权限,根据程序的重要程度和使用频率,用户可选择合适的程序号(适用于任何程序),具体如表6所示。

表6程序的存储区间

O0001~O7999

程序能自由存储、删除和编辑

O8000~O8999

不经设定,该程序就不能进行存储、删除和编辑

O9000~O9019

用于特殊调用的宏程序

O9020~O9899

如果有设定参数就不能进行存储、删除和编辑

O9900~O9999

用于机器人操作程序

3)宏程序调用方法

①非模态调用(单纯调用):

指一次性调用宏主体,即宏程序只在一个程序段内有效,叫非模态调用。

其格式为:

G65P(宏程序号)L(重复次数)〈自变量赋值〉;

一个自变量是一个字母,对应于宏程序中变量的地址,自变量后边的数值赋给宏程序中与自变量对应的变量。

同一语句中可以有多个自变量。

②模态调用:

模态调用功能近似固定循环的续效作用,在调用宏程序的语句后,机床在指定的多个位置循环执行宏程序。

宏程序工的模态调用要用G67取消,其格式为:

G66P(宏程序号)L(重复次数)〈自变量赋值〉;

G67;

 

七、常用数学公式

(1)

椭圆的标准方程:

椭圆的参数方程:

(2)

旋转公式:

八、编程举例

例1、利用G73和参数方程编程

参数方程:

O0001;

N1G99S500M3T0101;

G0X100.0Z100.0;

X26.0Z2.0;

G73U16.0R10;

G73P10Q20U0.5W0.2F0.2;

N10G0X0;

G1Z0F0.1;

#1=1.0;(起始角的每次增量)

#2=0.0;(θ角的起始值)

#9=90.0;(θ角的终止值)

#3=10.0;(椭圆的短半轴b,X向)

#4=20.0;(椭圆的长半轴a,Z向)

WHILE[#2LE#9]DO1;(#2值≤#9值时,循环执行)

#5=2*#3*SIN[#2];(X=2*b*sinθ,X为直径值)

#6=#4*COS[#2];(Z=a*cosθ)

G1X#5Z[#6-#4]F0.1;(直线插补,用许多很短直线来拟合椭圆)

#2=#2+#1;(θ角递增)

END1;(循环结束)

G1W-5.0F0.1;

N20X26.0;

G0X100.0Z100.0;

M00;

N2G99S600M3T0101;

G0X26.0Z2.0;

G70P10Q20F0.1;

G0X100.0Z100.0;

M5;

M30;

例2、利用宏程序调用方法编程

参数方程:

 

O0001;

N1G99S500M3T0101;

G0X100.0Z100.0;

X56.0Z2.0;

G73U16.0R10;

G73P10Q20U0.5W0.2F0.2;

N10G0X50.0;

G1Z-5.0F0.1;

G65P0002;(宏程序调用)

G1W-5.0F0.1;

N20X56.0;

G0X100.0Z100.0;

M00;

N2G99S600M3T0101;

G0X56.0Z2.0;

G70P10Q20F0.1;

G0X100.0Z100.0;

M5;

M30;

O0002;

#1=1.0;(起始角的每次增量)

#2=0.0;(θ角的起始值)

#3=10.0;(椭圆的短半轴b,X向)

#4=20.0;(椭圆的长半轴a,Z向)

WHILE[#2LE90.]DO1;(#2值≤90时,循环执行)

#5=2*#3*SIN[#2];(X=2*b*sinθ,X为直径值)

#6=#4*COS[#2];(Z=a*cosθ)

G1X#5Z[#6-#4]F0.1;(直线插补,用许多很短直线来拟合椭圆)

#2=#2+#1;(θ角递增)

END1;(循环结束)

M99;(宏程序调用返回)

 

例3、

利用标准方程编程

 

标准方程:

 

注1:

注2:

注1和注2由标准方程

推导而来!

O0001;

N1G99S500M3T0101;

G0X100.0Z100.0;

X26.0Z2.0;

G73U16.0R10;

G73P10Q20U0.5W0.2F0.2;

N10G0X0.0;

G1Z0.0F0.1;

G65P0002A0B0.1C20.0I10.0J10.0;(宏程序调用同时对自变量赋值)

G1W-5.0F0.1;

N20X26.0;

G0X100.0Z100.0;

M00;

N2G99S600M3T0101;

G0X26.0Z2.0;

G70P10Q20F0.1;

G0X100.0Z100.0;

M5;

M30;

自变量赋值(详见表2)

A0为#1=0.0(X向的起始值)

B0.1为#2=0.1(X值的每次增量)

C20.0为#3=20.0(椭圆的长半轴a,Z向)

I10.0为#4=10.0(椭圆的短半轴b,X向)

J10.0为#5=10.0(X向的终止值,注:

#5值要≤#4值)

 

O0002;

WHILE[#1LE#5]DO1;(#1值≤#5值时,循环执行)

#7=[1-[#1*#1]/[#4*#4]]*[#3*#3];(见注1)

#9=SQRT[#7];(z值)(见注2)

G1X[2*#1]Z[#9-#3]F0.1;(直线插补,用许多很短直线来拟合椭圆)

#1=#1+#2;(X值递增)

END1;(循环结束)

M99;

例4、数车椭圆旋转

O0001;(以a为旋转半径,以椭圆的圆心为原点,旋转α角。

G99M3S800T0101;

G0X100.Z100.;

G0X62.Z5.;

#1=0;(x初值)

#2=10;(x终值)

#11=0.05;(步距)

#3=20;(椭圆的长半轴a)

#4=10;(椭圆的短半轴b)

#12=45;(旋转角α)

#15=0;(椭圆的圆心在x方向上的位置)

WHILE[#1LE#2]DO1;(#1值≤#2值时,循环执行)

#6=#1;(x值)

#9=[#3*#3]*[1-[#6*#6]/[#4*#4]];(见注1)

#5=SQRT[#9];(z值)(见注2)

#7=#5*COS[#12]-#6*SIN[#12];(z向旋转)

#8=#5*SIN[#12]+#6*COS[#12];(x向旋转)

G1X[#15+2*#8]Z[#7-#3]F0.1;(直线插补,用许多很短直线来拟合椭圆)

#1=#1+#11;(X值递增)

END1;(循环结束)

G0X100.Z100.;

M30;

未旋转旋转α角,图中虚线为未旋转

O0001;(以a为旋转半径,以椭圆的圆心为原点,旋转α角。

G99M3S800T0101;

G0X100.Z100.0;

G0X62.Z5.0;

#1=-10;(x初值)

#2=0;(x终值)

#11=0.05;(步距)

#3=20;(椭圆的长半轴a)

#4=10;(椭圆的短半轴b)

#12=30;(旋转角α)

#15=45;(椭圆的圆心在x方向上的位置)

WHILE[#1LE#2]DO1;(#1值≤#2值时,循环执行)

#6=#1;(x值)

#9=[#3*#3]*[1-[#6*#6]/[#4*#4]];(见注1)

#5=SQRT[#9];(z值)(见注2)

#7=#5*COS[#12]-#6*SIN[#12];(z向旋转)

#8=#5*SIN[#12]+#6*COS[#12];(x向旋转)

G1X[#15+2*#8]Z[#7-#3]F0.1;(直线插补,用许多很短直线来拟合椭圆)

#1=#1+#11;(X值递增)

END1;(循环结束)

G0X100.Z100.0;

M30;

未旋转旋转α角,图中虚线为未旋转

九、结束语

本文中的程序都经过FANUC0iMate系统数控机床的验证。

宏程序是程序编制的高级形式,程序编制的质量与编程人员的素质息息相关,宏程序里应用了大量的编程技巧,如数学模型的建立、数学关系的表达、加工刀具的选择、走刀方式的取舍等,使得宏程序的精度很高。

特别是对于中等难度的零件,使用宏程序进行编程加工要比自动编程加工快,可以简化我们的编程。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1