宏程序

宏程序
宏程序

宏程序讲义

4.2用户宏程序及其基本编程方法

在生产过程中存在大量的零件是系列化的。它们的形状相似,但是尺寸不同。为了满足对这类零件的编程需要,数控系统提供了一些固定循环。如FANUC 中的钻孔循环,车加工中的粗加工循环等,SIEMENS 系统中的孔加工循环和腔、槽加工循环等等。除此以外,还为用户提供了根据自己的需要编写固定循环的功能,以满足不同用户的特殊需要。这种功能在不同的系统中有不同的提法,例如,在FANUC 系统中称作用户宏程序,在SIEMENS 系统中称作用户循环。无论其名称如何不同,但其实质都是利用变量和程序控制功能,编制具有一定通用性的程序,如果这个程序作为子程序,可以通过变量和简单指令被其他程序调用。 变量用一个名称表示一个数,通过程序或操作面板对其赋值,也可以参与运算。 程序控制语句使得程序运行可以不再单一按自然排列顺序执行,而可以由控制语句控制其执行顺序。

4.2.1 FANUC 系统 4.2.1.1变量

变量用变量符号“#”和后面跟随变量号表示。变量号可以是整数,例如:#10,#20等。变量号也可以是一个表达式,例如:

#[#1+#2+#3],如果,#1=1,#2=4,#3=7,那么 #[#1+#2+#3] 等价于 #12。

变量的类型: FANUC 系统规定变量的类型由变量号区分,共分为四类:

变量的范围:

局部变量和公共变量的值可以是0或者47

10

-~ 29

10

-- 或者 29

10

- ~ 47

10

在程序中定义变量时,小数点可以省略。例如定义#1=123;#1的实际值是123.000。 空变量处理:

1. 空变量被引用:

当引用一个空变量时,这个引用无效。 例如 #1 = 〈空〉,

G90 X100 Y#1 等同 G90 X100

2.赋值与运算:

一个空变量被赋予另一个变量时,被赋值的变量也成为空变量。

例如#1=〈空〉,#2=100,执行#2=#1 以后,#2 = 〈空〉。

在运算中空变量等于0.

例如#1=〈空〉,#2=100,#3=50 执行#3=#1+#2 以后,#3 = 100;

3.比较:

在等于和不等于的比较中,空变量与0是不相同的。

变量使用中的限制:

程序号、顺序号和任选程序段跳转号不能使用变量。

例如:O#1;

/#1G00X100.0;

N#3Y200;

系统变量:

#1000以上的变量是系统变量,可以读、写某些数控系统的内部数据。例如刀具偏置和当前位置数据;但是某些系统数据只能读而不能写。具体规定需查阅数控系统的操作手册。表4-2 刀具补偿值的系统变量:

以下例子利用系统变量实现程序运行中自动改变刀具半径补偿:

#1=1;刀补号赋初值

#11001 = 14;设置刀补半径值

#11002 = 12;设置刀补半径值

#11003 = 10;设置刀补半径值

N30 G41 D#1;建立刀具半径补偿,当#1=1时,补偿值=14;#1=2,补偿值等于12,#1=3,

补偿值等于10。

G40 …;撤销刀补

#1=#1+1;改变刀补号。

IF [ #1 LT 4 ] GOTO 30 ;# 1小于4,循环次数未到,转到N30继续执行。

表4-3

在宏程序中要改变某些模态信息,可以先保存进入时的模态信息,在结束再恢复原状。这样可以使数控系统保持该宏程序运行前后模态信息一致。这样的宏程序具有很好的安全性,即使不是该宏程序的编写者也可以放心地使用。

其它系统变量的介绍查阅数控系统的操作手册。

4.2.1.2变量的常用算术和逻辑运算

函数名可以用该函数的前两位字母指定,例如:

ROUND →RO

FIX →FI

算术和逻辑运算的其他使用规则和限制查阅数控系统的使用手册。

运算次序:

1.括号

2.函数

3.乘和除运算

4.加和减运算

括号可以使用5级,包括函数使用的括号。

4.2.1.3程序流向控制语句

无条件转移:

GOTO n;n 顺序号

条件转移:

IF [条件表达式] GOTO n

如果指定的表达式满足,转移到有顺序号n的程序段。如果指定的条件表达式不满足,执行下一个程序段。

条件执行:

IF [条件表达式] THEN 宏程序语句

如果指定的条件表达式满足,执行后面跟随的宏程序语句,否则直接执行下一个程序段。条件表达式:

条件表达式必须包括运算符,运算符插在两个变量或者一个变量和一个常数之间。整个条件表达用一对方括号“[ ]”封闭。变量也可以用一个表达式替代。

循环语句:

WHILE [条件表达式] DO m;(m=1,2,3)

END m;

在WHILE后面指定一个条件表达式,当指定条件得到满足,执行从DO到END之间的程序。否则,转而执行END后面的程序。m是循环标号,只能使用1,2,3。

循环标号可以反复使用:

WHILE […]DO 1

END 1

WHILE […]DO1

END 1

循环可以嵌套3级:

WHILE […] DO 1

WHILE […] DO 2

WHILE […] DO 3

END 3

END 2

END 1

但是,不可以存在交叉循环:

转向语句可以从循环体内(DO-END)转到循环体外:

不允许从从循环体外转到循环体内。

如果仅写了DO – END,而没有WHILE,将造成无限循环。

运算误差:

运算误差来自变量值的有效精度。变量的有效精度约为8位十进制数。

数值太大形成的误差:

当#1=9876543210123.456

#2=9876543277777.777

实际#1=9876543200000.000

#2=9876543300000.000

当计算#3 = #2 -#1时,结果#3=100000.000

计算误差的影响:

使用条件表达式时,误差可能会影响判断结果;

例如:IF [#1 EQ #2],可能会受到精度的影响,造成错误的判断,而用

IF [ABS [ #1 -#2 ] LT 0.0001 ] 替代EQ,可以避免精度造成错误的判断。

4.2.1.4宏程序调用

在FANUC系统中,包含变量、转向、比较判别等功能的指令称为宏指令,包含有宏指令的子程序称为宏程序。

宏程序调用和子程序调用之间的差别:

主要差别在于宏程序调用可以在调用语句中传递数据到宏程序内部,而子程序调用(M98)则没有这个功能。其次,M98程序段可以与另一个数控指令共处同一条指令。例如,G01X100M98 P1000;在执行时,先执行G01X100;然后,在运行子程序O100。而宏程序调用语句是独立自成一行。

宏程序调用的有以下方法:

非模态调用G65;

G65 P p L l 〈自变量〉

模态调用G66,G67;

G66 P p L l〈自变量〉

G67 取消模态调用

用自定义G代码调用;

Gnn 〈自变量〉L l

该语句等同于G65 P p L l〈自变量〉;nn为数字(1~9999),存放在参数No.6050到No.6059 中。宏程序号p 与参数的对应关系见表:

例如:No.6050 = 801;

执行程序段:G801〈自变量〉;将调用宏程序O9010,并把自变量传入O9010。

用自定义M代码调用,M代码(1~99999999)。使用方法与使用自定义G代码调用相同。

宏程序号p 与参数的对应关系见表:

用自定义T代码调用。T代码调用宏程序O9000,需要设置参数No.6001的第5位=1,并在公共变量#149输入代码。例如,用T256调用宏程序O9000,需要输入256到#149。4.2.1.5 主程序向宏程序传递数据

主程序通过自变量向宏程序传递数据。

自变量说明形式:地址字数值。例如A23.1。每个地址字对应一个固定的局部变量。

自变量的地址字有两套:

地址字G,L,N,Q和不能作为自变量地址。

地址字不需要按字母顺序排列,但是I,J,需要按字母顺序排列。不需要的地址字可以省略。

在调用时,每个地址字使用一次。

例:

B_ A_ D_ I_ K_ ;排列正确

B_ A_ D_ K_ J_ ;排列错误

G65 P8001 L2 A12.32 D-100. K0.;非模态调用宏程序O8001两次,通过调用语句,数值12.32,-100.0和0分别被传递给宏程序内部的局部变量#1,#7,#6。

I,J,K的下标不必输入,用于表示使用次序。

第二套自变量地址字适合于传递三维坐标值。

两套自变量地址字可以混合使用,当出现两个自变量指向同一个局部变量时,后指定的自变量有效。

例如:

O1000

N10 …

M99

G65 A1.0 B2.0 I-3.0 I4.0 I5.0 D6.0 P1000;

执行以上宏程序调用,程序准备执行O1000中的N10这一条指令时,局部变量中的值如下:

#1=1.0;#2=2.0,#4=-3.0,#7=6.0,#10=5.0;

在传递过程中,首先传给#7的是第四个自变量I 的数值4.0,而后被自变量D的数值6.0所替代。

自变量中小数点使用:

自变量数值不是用小数点,其的单位为各地址字的最小设定单位。因此传递没有小数点的自变量的将会因机床的系统设置不同发生变化。在宏程序调用中使用小数点可以提高程序的兼容性。例如有以下程序:

G65 A10 B20 P1000

O1000

N10 G01 X [#1] Y [#2]

O1000中N10 行相当于X10 Y20;根据系统对小数点处理不同,刀具移动终点坐标在(10,20)或者(0.01,0.02)。

4.2.2 SIEMENS 系统

4.2.2.1变量

变量名由R和数字变量号组成。不同型号的数控系统对数字编号的范围有不同的规定。一般为0~249,其中0~99供操作者直接使用,而100~249主要供各种加工循环使用。根据这个规定,在用户循环中应该使用变量的范围是100~249。而在主程序中使用变量应该仅可能选择使用0~99,以避免与系统提供的固定循环、自编的用户循环中使用的变量冲突。

例如,R10 , R100 都是合法的变量名。

变量的取值范围:±(0.0000001—99999999)以及0。

对于整数,小数点可以省略。

变量可以被分配给除了N,G,L以外的所有地址字。分配时在地址字和变量之间需要一个“=”

例如:

R1=1;

D=R1;

等同于:

D1

变量分配给轴地址时需要在一个独立的程序段中进行。分配也可以是一个表达式。

例如:

R1=30 R2=50 R3 =55 R5=100 R6=40;

G01 X=R1 Y=-R3 ;

G00 X=R2*COS(R1)+R5 Y=R2*SIN(R1)+R6

括号;

乘除;

加减。

角度的值为度。

4.2.2.3程序流向控制语句

无条件转移:

GOTOB 标号;向程序开头方向转而执行带有“标号”的程序段

GOTOF 标号;向程序结束方向转而执行带有“标号”的程序段

无条件转移语句必须是一个独立的程序段。

例如:

N10 …

N20 GOTOF MARKE_0;转到N50执行

N30 …

N40 …

N50 MARKE_0:G00 X100;

N60 …

N70 MARK_1:G01 Y20.;

N80 …

N200 GOTOB MARKE_1;

N210 …

条件转移:

IF <条件表达式> GOTOB 标号;条件满足,向程序开头方向转而执行带有“标号”的程序段

IF <条件表达式> GOTOF 标号;条件满足,向程序结束方向转而执行带有“标号”的程序段

比较运算符的两边可以是表达式。

4.2.4 宏程序编写中的要点

1.确定使用条件和调用格式;

2.确定变量及其意义;

3. 分析各种可能出现的情况,设计出判别和处理的方法。

4.3数控车床程序编制

4.3.1变量,宏程序和循环语句的应用

例:编一个宏程序(FANUC系统),实现形状如图4-3,规格不同的轴的加工。毛坯为段件。

图4-3

1.调用格式、参数和使用条件:

G65 P8000 L n A a Bb Cc Dd Ee Ff Ii Jj Kk Mm Qq Rr Ss Tt Uu Vv Ww

变量和参数表:

2

使用粗加工、精加工外圆刀,3mm宽割槽刀,螺纹刀。刀具位置分别是01,02,03,04。刀具偏移长度和刀尖圆角补偿参数分别设置在对应的参数中。换刀位置在刀具参考点。3.分析:

在这个宏程序中,根据毛坯余量和精加工余量计算出粗加工的循环次数。总循环次数等于粗加工循环次数加1,存放在局部变量#30中。根据#30的变化判断粗加工是否结束。4.程序:

O8001

N10 #25=#1+#13

N30 #30 = FUP[[#13 - #19] / #18/2];扣除精加工余量,根据吃刀深度计算粗加工刀数;

N40 #31=[#13 - #19] / #30;计算径向粗加工每次切削深度(直径值);

N50 #32=#17 / #30;Z方向粗加工每次切削深度;

N50 #30=#30+2;计算总的循环次数;

N70 T0101;取外圆粗加工刀具;

N75 G00X#25 Z#17

N80 WHILE [#30 GT –0.1] DO 1;#30<=0 结束加工;

N90 IF [#30 GE 1.5 ] GOTO 155;判别粗加工和精加工,#30>1为粗加工,否则为精加工。N100 T0100;

N110 G28 U0W0;粗加工结束,换精加工刀具。

N120 T0202

N125 F#22

N130 #25=#1

N140 #17=0

N145 #20=#21

N150 G42

N153 G01 X[#1-6] Z-1.5

N154 S#20 M03

N155 G01 X#25 Z#17 F#23

N160 W-16.5

N170 U[#2-#1]

N180 W-[#4+1.5]

N190 U[#7-#3]W[#5-#4-18]

N200 U[#8-#7]

N210 W-37.0

N220 U[#9-#8]

N230 W[#6-#5-37]

N240 G02U20.0W-10.0R10.0

N250 G01U30.0

N260 G00Z#17

N270 #30=#30-1

N280 #25=#25-#31

N290 #17=#17- #32

N300 END 1

N310 G40

N320 T0200

N330 G28 U0W0

N340 T0303;换割槽刀

N350 G00 X[#1+3.0] Z-18 F0.15 N360 G01 X[[#2-4]

N370 G04 P1000

N380 G00 X[#3+4]

N390 Z-[L1+18]

N400 G01 X[#2-4]

N410 G04 P1000

N420 G00 X[#9+4]

N430 Z-[L2+37]

N440 G01 X[#8-2]

N450 G04 P1000

N460 G00 X[#9+4]

N470 T0300

N480 G28U0W0

N490 T0401;换螺纹刀

N500 G00 X[#1+2] Z2.0

N510 G92 X[#1-0.5] Z-16.F1.5

N520 X[#1-1]

N530 X[#1-1.5]

N540 G28 U0W0

N545 T0400

N550 M05

N560 M99

4.3.2车床刀尖圆弧半径补偿

车床刀尖圆弧半径补偿的方法与刀位点选

择相关。

4.3.2.1车刀的假想刀尖作为刀位点

把刀位点放在车刀的假想刀尖,则认为刀尖

不存在圆弧。但是,客观上圆弧是存在的。这样,

根据假想刀尖作为刀位点编制的程序所加工的

零件必定存在误差。通过分析车刀的对刀方法可

以知道在加工圆弧和斜度时将出现误差。

在X方向对刀时,对刀基准是回转体上与图4-4

图4-5

X轴平行的一条母线,刀具与对刀基准的接触点和假想刀尖正处于同一水平线上。当车刀保持X位置不变沿Z轴水平切削,假想刀尖点和刀具上影响X方向尺寸的切削点同处于一个水平位置上。因此在水平切削时,X方向不会由于刀尖圆弧出现尺寸误差。在Z方向对刀时,对刀基准是与主轴轴线垂直的端面,与Z轴平行,刀具与对刀基准的接触点和假想刀尖正处于同一垂直线上。当车刀保持Z位置不变沿X轴移动切削,假想刀尖点和刀具上影响Z方向尺寸的切削点同处于一条垂直线上。因此,在Z方向不会出现误差。然而,从图4-5中看出,当刀尖沿斜线和圆弧移动时,假想刀尖与刀具上实际的切削位置并不重合,加工误差由此产生。

补偿方法:车床数控系统中为了消除这个误差,在程序中需要用G代码(G41/G42)指定半径偏移方向以及用T和D代码通过刀具参数号取得圆弧半径和用户设置的刀具方位号。方位号是数控系统开发者为了帮助数控系统计算半径补偿而要求操作者设置的参数。操作者必须记住这个规定。方位号设置错误将导致加工错误。

这个方法与数控铣床的刀具半径补偿方法形成了两种不同的补偿方法,增加了操作者在理解和掌握上的困难。

方位号的规定见图4-6

图4-6

图4-7~ 4-10,4-15,4-16外圆加工的方位角:

图4-7 方位号3 图4-8 方位号4 图4-9 方位号1 图4-10 方位号2 图4-11~4-14 内孔加工的方位角。

图4-11 方位号3 图4-12 方位号2 图4-13 方位号4 图4-14 方位号1 图4- 17端面加工的方位角

图4-15 方位号6 图4-16 方位号8 图4-17 方位号7

4.3.2.2车刀刀尖圆弧的圆心点作为刀位点

图4-18 图4-19

从图4-19中可以看到,当刀位点在车刀刀尖圆弧的圆心,在没有刀具半径补偿的情况下,加工后零件的轮廓线正好是车刀刀尖圆弧移动的包络线。如果刀位点沿零件的理论轮廓的等距外推线(Offset)移动,而且外推距离等于刀尖圆弧半径,那么,刀具的切削点将始终紧贴零件的理论轮廓。

实现刀尖圆弧半径补偿,在编程中用G41/G42指定外推方向,通过T 或D代码取得补偿参数,刀位点按等距外推线移动。

使用这种补偿功能与对刀方法有关。由于无法直接测量刀尖圆心的位置,对刀时还是将刀尖分别在X方向和Z方向与基准接触,通过接触点的位置换算出圆心的位置。对工件坐标系或长度补偿值进行修正。

使用G54~G59工件坐标系,修正方法如下:

原工件坐标系的X原点坐标±刀尖半径;加工外圆取“-”,加工内孔取“+”。

原工件坐标系的Z原点坐标±刀尖半径;圆心在接触点正方向使用“+”,否则使用“-”。

使用刀具长度偏移值:

使用长度偏移方式对刀时,把刀具参考位置到圆弧中心的距离作为刀具偏移值(图4-20)。修正方法:在原数据上减去刀尖半径。

图4-20

参数设置:相关参数有两个,一个是刀尖半径,另一个是刀尖方位号。

车刀刀尖圆弧半径补偿编程:

实现刀尖圆弧半径补偿,除了指定刀具号和参数号外,还要在程序中按偏移方向指令G41/G42。

例如:

T0101 ;换刀

G0 X100. Z20. ;长度补偿生效

G42 G1 X80. ;刀尖半径补偿生效

….

在PA8000系统中,代码T表示刀具,用M6实现换刀。刀尖半径放在用D取得的刀具半径补偿数据表中。刀尖圆弧半径补偿用指定G41/G42以及D代码实现。

自动换刀编程:

车床自动换刀时,没有必要一定先返回刀具参考点,但是必须考虑换刀时刀塔转动过程中刀具是否会碰到工件或机床的其它部位。

4.4 数控铣床程序编制

4.4.1 编写用户宏程序

实例1:图4-21

编写一个宏程序(FANUC系统)。加工分布在圆周上的孔。圆周半径为I,起始角为A,两孔之间间隔角度为B,钻孔数为H,圆心坐标X,Y,角度值顺时针为负值。保持本宏程序执行前后模态信息一致。

调用格式:

G65 P9100 Xx Yy Zz Rr Ii Aa Bb Hh Ff;

变量和参数表:

宏程序:

O9100

N10 #3=#4003;在程序中将要设置增量方式,保存03组的原始状态

N20 #5=#4001;在程序中将要改编插补功能,保存01组的原始状态

N30 G81 Z#26 R#18 F#9 K0;K:执行次数,省略K相当于K=1。K=0仅设置钻孔循环的参数,不执行钻孔动作。

N40 IF [#3 EQ 90]GOTO 70 ;如果圆心位置采用绝对方式,转到N70

N50 #24 = #5001+#24;如果圆心位置采用增量方式,取得当前位置坐标,计算出圆心置

N60 #25 = #5002+#25;的绝对坐标。#5001,#5002分别是当前工件坐标系中当前位置的坐标位置(X,,Y)

N70 WHILE [#11 GT 0] DO 1;未加工孔数大于等于0,执行循环体内的程序,否则转去执行END 1后面的程序。

N80 #6 = #24 +#4 * COS[#1];计算孔位的X坐标

N90 #7 = #25 +#4 * SIN [#1];计算孔位的Y坐标

N100 G90 X#6 Y#7;按绝对方式移动到孔位,执行G81循环。在这行程序中模态指令G81有效。

N110 #1 = #1 +#2;计算下一个孔位的角度。

N120 #11 = #11 -1;计算未加工孔数

N130 END 1

N140 G#3 G80 G#5;恢复03组和01组的原始状态

N150 M99

实例2:编写用户循环(SIEMENS系统)。用于加工带圆角的方形型腔,采用由里向外环切的方法加工,每次切削宽度为刀具直径的1/3。操作者设置的参数见图4-22 和变量与参数表。

图4-22

调用方法:N10 R101= R102= …R108= ;

N20 RECPOCKET;

变量和参数表:

图4-23

程序中需要判别和处理以下内容:

新代数控车床宏程序说明

一.用户宏程序的基本概念 用一组指令构成某功能,并且象子程序一样存储在存储器中,再把这些存储的功能由一个指令来代表,执行时只需写出这个代表指令,就可以执行其相应的功能。 在这里,所存储的一组指令叫做宏程序体(或用户宏程序),简称为用户宏。其代表指令称为用户宏命令,也称作宏程序调用指令。 用户宏有以下四个主要特征: 1)在用户用户宏程序中可以使用变量,即宏程序体中能含有复杂的表达式; 2)能够进行变量之间的各种运算; 3)可以用用户宏指令对变量进行赋值,就象许多高级语言中的带参函数或过程,实参能赋值给形参; 4)容易实现程序流程的控制。 使用用户宏时的主要方便之处在于由于可以用变量代替具体数值,因而在加工同一类的工件时.只得将实际的值赋予变量既可,而不需要对每个不同的零件都编一个程序。 二.基本书写格式 数控程序文档中,一般以“%”字符作为第一行的起头,该行将被视为标题行。当标题行含有关键字“@MACRO”时整个文档就会以系统所定义的MACRO语法处理。如果该行无“@MACRO”关键词此档案就会被视为一般ISO程序文档格式处理,此时将不能编写用户宏和使用其MACRO语法。而当书写ISO程序文档时标题行一般可以省略,直接书写数控程序。“@MACRO”关键词必须是大写字母。 对于程序的注释可以采用“//……”的形式,这和高级语言C++一样。 例一:MACRO格式文档 % @MACRO //用户宏程序文档,必须包含“@MACRO”关键词 IF @1 = 1 THEN G00 X100.; ELSE G00 Z100.; END_IF; M99; 例二:ISO格式文档 % 这是标题行,可当作档案用途说明,此行可有可无 G00 X100.; G00 Z100.; G00 X0; G00 Z0; M99;

宏程序入门基础学习资料

宏程序入门基础学习资料 其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用..宏一般分为A类宏和B类宏.A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是 以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广.由于现在B类宏程序的大量使 用很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如法兰克OTD系统中由于它的MDI键盘上没有公式符号,连最简单的等于号都没有,为此如果应用B类宏程序的话就只能在计算机上编好再通过RSN-32接口传输的数控系统中,可是如果我们没有PC机和RSN-32电缆的话怎么办呢,那么只有通过A类宏程序来进行宏程序编制了,下面我介绍一下A类宏的引用;

A类宏是用G65 Hxx P#xx Q#xx R#xx或G65 Hxx P#xx Qxx Rxx 格式输入的xx的意思就是数值,是以um级的量输入的,比如你输入100那就是0.1MM~~~~~.#xx就是变量号,关于变量号是什么意思再不知道的的话我也就没治了,不过还是教一下吧,变量号就是把数值代入到一个固定的地址中,固定的地址就是变量,一般OTD系统中有#0~~~#100~#149~~~#500~#531关闭电源时变量#100~#149被初始化成“空”,而变量#500~#531保持数据.我们如果说#100=30那么现在#100地址内的数据就是30了,就是这么简单.好现在我来说一下H代码,大家可以看到A类宏的标准格式中#xx和xx都是数值,而G65表示使用A类宏,那么这个H 就是要表示各个数值和变量号内的数值或者各个变量号内的数值与其他变量号内的数值之间要进行一个什么运算,可以说你了解了H代码A类宏程序你基本就可以应用了,好,现在说一下H代码的各个含义: 以下都以#100和#101和#102,及数值10和20做为例子,应用的时候别把他们当格式就行, 基本指令: H01赋值;格式:G65H01P#101Q#102:把#102内的数值赋予到

数控车床由浅入深的宏程序实例

宏程序 裳华职业技术中专鲍新涛 宏程序概述 其实说起来宏就是用公式来加工零件的,比如说,如果没有宏的话,我们要逐点算出上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用。.宏一般分为A类宏和B类宏。 A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序 则是以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广。 宏程序的作用 数控系统为用户配备了强有力的类似于高级语言的宏程序功能,用户可以使用变量进行算术运算、逻辑运算和函数的混合运算,此外宏程序还提供了循环语句、分支语句和子程序调用语句,利于编制各种复杂的零件加工程序,减少乃至免除手工编程时进行繁琐的数值计算,以及精简程序量。 宏程序指令适合抛物线、椭圆、双曲线等没有插补指令的曲线编程;适合图形一样,只是尺寸不同的系列零件的编程;适合工艺路径一样,只是位置参数不同的系列零件的编程。较大地简化编程;扩展应用范围。 宏的分类 B类宏 由于现在B类宏程序的大量使用,很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如(FANUC)OTD系统中由于它的MDI键盘上没有公式符号,连最简单的等于号都没有,为此如果应用B类宏程序的话就只能在计算机上编好

再通过RSN-32接口传输的数控系统中,可是如果我们没有PC机和RSN-32电缆的话怎么办呢,那么只有通过A类宏程序来进行宏程序编制了,下面我介绍一下A 类宏的引用; A类宏 A类宏是用G65 Hxx P#xx Q#xx R#xx或G65 Hxx P#xx Qxx Rxx格式输入的,xx 的意思就是数值,是以um级的量输入的,比如你输入100那就是0.1MM.#xx就是号,变量号就是把数值代入到一个固定的地址中,固定的地址就是变量,一般OTD 系统中有#0~#100~#149~#500~#531.关闭电源时变量#100~#149被初始化成“空”,而变量#500~#531保持数据.我们如果说#100=30那么现在#100地址内的数据就是30了,就是这么简单.好现在我来说一下H代码,大家可以看到A类宏的标准格式中#xx和xx都是数值,而G65表示使用A类宏,那么这个H就是要表示各个数值和变量号内的数值或者各个变量号内的数值与其他变量号内的数值之间要进行一个什么运算,可以说你了解了H代码A类宏程序你基本就可以应用了,好,现在说一下H代码的各个含义: 应用 以下都以#100和#101和#102,及数值10和20做为例子,应用的时候别把他们当格式就行, 基本指令 H01赋值;格式:G65H01P#101Q#102:把#102内的数值赋予到#101中 G65H01P#101Q#10:把#10赋予到#101中 H02加指令;格式G65 H02 P#101 Q#102 R#103,把#102的数值加上#103的数值赋予#101

数控车床上加工蜗杆的通用宏程序 广数980TD

数控车床上加工蜗杆的通用宏程序 摘要很多中小型企业会遇到要在数控车床上加工大螺距梯形螺纹和蜗杆,由于这些企业条件限制,往往不能编制好加工 程序,本文以实例探讨了数控车床中加工蜗杆和梯形螺纹通用宏 程序的设计和编程,让中小企业也能轻松地应用宏程序加工蜗杆 和梯形螺纹。 关键词宏程序梯形螺纹蜗杆 一、前言 今年本人应某中小型企业邀请,去帮他们处理数控车床加工中遇到的一些问题。经交流得知,他们要加工一批蜗杆,并从宜昌纺织机械厂请了位师傅编了个很长的程序,但加工时还是很快损坏了刀具。我查阅了相关说明书,并无这方面内容,上网搜索,也没有找到免费的可以直接使用的相关文章,因此本人参考部分资料,给他们编制了一个通用的加工蜗杆和梯形螺纹的程序,告诉他们使用方法后,遇到蜗杆和梯形螺纹就可以直接套用该程序,这样即使对宏程序不太熟悉的工人也可以加工蜗杆和梯形螺纹了。 二、加工螺纹的一般方法 在数控车床加工螺纹一般有四种方法:直进法、斜进法、左右切削法和切槽刀粗切槽法四种。 1、直进法:如图1所示,螺纹刀间歇性进给到牙深处,采用此种方法加工梯形螺纹时,螺纹车刀的三面都参与切削,导致加工排屑困难,切削力和切削热增加,刀尖磨损严重,进刀量过大时,还可能产生扎刀现象。很显然,加工大螺距梯形螺纹和蜗杆是不可取的。 2、斜进法:如图2所示,螺纹车刀沿牙型角方向斜向间歇进给到牙深处,采用此种方法加工梯形螺纹时,螺纹车刀始终只有一侧刀刃参加切削,从而排屑比较顺利,刀尖的受力和受热情况有所改善,在车削中不易引起扎刀现象。

3、左右切削法:如图3所示,螺纹车刀沿牙型角方向交错间隙进给至牙深,该方法同于斜进法,在数控车床上采用宏程序编程来实现。 3、切槽刀粗切槽法:如图4所示,该方法先用切槽刀粗切槽,再用梯形螺纹车刀加工螺纹两侧面,这种方法在数控车中较难实现。 三、蜗杆和大螺距梯形螺纹特点和加工方法 车削加工蜗杆和大导程螺纹,无论用斜进法还是左右切削法,切削抗力非常大,以前只能用高速钢车刀低速车削加工,生产效率非常低。为了用硬质合金刀具也能加工,就得设法降低刀刃的切削深度,因此我采用了“分层切削”的方法来加工。 把螺纹或蜗杆的牙槽分成若干层,转化成若干个较浅的梯形槽来进行切削,每一层的切削都采用先直进后向左的车削方法。由于左切削时槽深不变,刀具只需做向左的方向(沿导轨方向)进给,这样就把左右切削法和斜进法有机地结合了起来,由于只有一个切削刃进行切削,还可以有效地控制切除余量,这样可以很好地保证表面质量和刀具的使用寿命。如图五所示。 四、加工蜗杆和梯形螺纹的宏程序 1、刀具的选择:由于中小企业多买经济型数控车床,常见国产机是广

B类宏程序

二、教学过程 1.变量 B类宏程序的变量与A类宏程序的变量基本相似,但也略有不同,主要区别有以下几个方面。 (1)变量的表示:B类宏程序除可采用A类宏程序的变量表示方法外,还可以用表达式表示,但表达式必须封闭在方括号“[ ]”中。程序的圆括号“()”用于注释。 例# [#1+#2+10] 当#1=10,#2=100时,该变量表示#120。 (2)变量的引用:引用变量也可以用表达式表示 例G01 X [#100-30.0] Y- #101 F [#101+#103] ; 当#100=100时、#101=50、#103=80时,上式即表示为G01 X70.0 Y-50.0 F130; (3)变量的种类:B类与A类宏程序的变量种类相同 2.变量的赋值 (1)直接赋值变量可以在操作面板上用MID方式直接赋值,也可在程序中以等式方式赋值,在等号左边不能用表达式。 例#100 =100.0;#100 =30.0+20.0 (2)引数赋值宏程序以子程序方式出现,所用的变量可在宏调用时赋值。如下所示: 例G65 P1000 X100.0 Y30.0 Z20.0 F100.0; 此处的X、Y、Z不代表坐标字,F也不代表进给字,而是对应与宏程序中的变量号,变量的具体数值由引数后的数值决定。引用宏程序体中的变量对应关系有两种,见表2—4—2及表2—4—3。此两种方法可以混用,其中G、L、N、O、P不能作为引数替变量赋值。 例变量赋值方法1 G65P0030 A50.0 I40.0 J100.0 K0 I20 J10.0 K40.0; 经赋值后#1=50.0,#4=40.0,#5=100.0,#6=0,#7=20.0,#8=10.0,#9=40.0。 变量赋值方法2 G65 P0020 A50.0 X40.0 F100 经赋值后#1=50.0,#24=40.0,#9=100.0。 变量的赋值方法1、2混合 G65 P0030 A50.0 D40.0 I100.0 K0 I20.0 经赋值后,I20.0与D40.0同时分配给变量# 7,则后一个# 7有效,所以变量# 7=20.0,其余同上。 采用赋值后前面A类宏程序例题精加工程序可改写成如下形式: O010;(主程序) … G65 P0210 X28.0 Z-20.0 A20.0 B0 R20.0;(赋值后,#24=28.0,#26=-20.0,#1=20.0,#2=0,#18=20.0)… O210;(精加工宏程序) N1000 G01Z#26;

广数GSK980TDA车削蜗杆的通用宏程序

李正泽 (福建省宁德技师学院,福建 宁德 352100) 摘 要:在广数 G S K 980T D A 数控系统上加工蜗杆不仅要求正确的刀具几何形状和加工工艺,而且要用安全可靠的加工方法,以 下介绍一种蜗杆车削加工用宏程序的编制方法,对提高数控机床的使用性能有很大的帮助,对其它非标螺纹的编程也具有一定的 借鉴意义,该程序应用宏程序调用螺纹加工命令 G33 已达到分层斜进法加工蜗杆的目的,利用本程序加工蜗杆时只需输入相关 的参数即可加工不同参数的各种型号的蜗杆。更重要的是在蜗杆加工时既能够保证零件的加工精度,又可以减少刀具重磨和重 定位次数,缩短辅助时间,提高生产效率。 关键词:蜗杆;宏程序;数控车削;分层切削;数控编程 1 选择合理的蜗杆加工方法 在数控车床上加工蜗杆时,在三爪卡盘上采用一夹一顶装夹。为 了方便对刀和编制程序,将程序原点设定在工件的右侧端面中心上。 车削蜗杆时,为防止“扎刀”和“崩刃”,要求在加工蜗杆时,切削力不 能太大,刀具不能同时三面切削,故不能直接使用螺纹切削指令 G33 进行直进法车削蜗杆,在广数 G S K 980T D A 通过宏程序以达到分层斜 进加工蜗杆。蜗杆加工过程示意图如下 分头车螺纹槽, 从第一条螺纹槽到最后 计算分头度数 对每条螺纹槽分层车削 /W H I L E #20L E #2D O 1 /#23=360000×#20/#2 /W H I L E #21L E #13D O 2 分 层 车 削 /W H I L E #22×#6L E #11-#4-#21×2×T A N20×#5D O 3 时从右到左车车削 X 方向进刀量(相对坐标,直径值) /#24=-#21×2×#5 Z 方向进刀量(相对坐标) /#25=-#21×T A N15×#5-#6×#22 /G0 X#14 Z#7 /G0 X#3 /G1 U#24 W#25 F200 /G32 Z#8 J0 K0 F#10 Q#23 /G0 X#18 /Z#7 /#22=#22+1 /END3 X 方向进刀量(相对坐标,直径值) /#24=-#21×2×#5 Z 方向进刀量(相对坐 /#26=-#11+#4+#21×T A N20×#5-#9 2 刀具参数的确定 选用高速钢或者硬质合金刀具,根据车削蜗杆的条件,首先计算 出螺旋角以便能正确刃磨刀具的几何角度。所以选择左侧后角为> (15°~20°)-r ,右侧后角约为(3°-5°)+r °据长期的实践经验只使用一把 刀具不会发生“乱扣”现象,故粗精车共用一把刀。 3 编程原理 标) /G0 X#3 Z#7 /G1 U#24 W#26 F200 /G32 Z#8 J0 K0 F#10 Q#23 /G0 X#18 /Z#7 /#22=0 /#21=#21+1 /END2 /#21=1 /#22=0 /#20=#20+1 /END1 /G0X100 4 G S K 980T D A 车削蜗杆的通用宏程序 主轴停,测量蜗杆加工余量 完成蜗杆的粗车,并测量两齿侧的精车余量,并修 /M5 /M30 蜗杆法向模数 MX(>0) 蜗杆头数(>0) 蜗杆大径(>0) 蜗杆车刀刀尖宽度(>0) 分层切削时设定 X 方向的背吃刀量 (半径值 >0), #1= #2= #3= #4= #5= 改 #9 参数,重新执行程序并跳段精车两侧面。 蜗杆头数变量,=1~#3 #20=1 分头车螺纹槽,从第一条螺纹槽到最后 计算分头度数 X 方向进刀量(相对坐标,直径值) W H I L E #20L E #2D O 1 #23=360000×#20/#2 #24=-#13×2×#5 该值的设定需能保证 #13 参数为整数 分层切削时设定 Z 方向的进刀量 #25=-#13×T A N15×#5+0.1 Z 方向进刀量(相对坐标) G0 X#3 Z#7 G1 U#24 W#25 F200 #6= #7= #8= #9= 轴余量 (>0) 蜗杆 Z 轴起始坐标,须加上导入空程量,有正负号 蜗杆 Z 轴终点坐标,须加上导出空程量,有正负号 蜗杆精车余量(>0),即粗车后用三针测量所得的 Z 精车右边牙面 G32 Z#8 J0 K0 F#10 Q#23 G0 X#18 Z#7 蜗杆导程,=3.14159×M X 蜗杆牙槽顶部宽度,即 2.2986×M X 蜗杆牙型高度 计算 X 方向车削次数(整数) 起刀点直径 蜗杆头数变量,=1~#3 蜗杆 X 方向切削次数变量,=1~#25 蜗杆 Z 方向切削次数变量,=1~经过计 #10=3.1416×#1 #11=2.2986×#1 #12=2.2×#1 #13=#12/#5 #14=#3+2 #20=1 #21=1 #22=0 算,每层都不同 G97 M3 S 300 T0101 X 方向进刀量(相对坐标,直径值) #24=-#13×2×#5 #25=-#11+#13×T A N15×#5+#4-#9-0.1 Z 方向进刀量 (相对坐 标) G0 X#3 Z#7 G1 U#24 W#25 F200 G32 Z#8 J0 K0 F#10 Q#23 G0 X#18 Z#7 #20=#20+1 END1 精车左边牙面 依照不同参数的蜗杆设定主轴转速 蜗杆车刀(车刀角度=40) - - 2

数控铣宏程序实例

第四章数控铣宏程序实例 §4、1 椭圆加工(编程思路:以一小段直线代替曲线) 例1 整椭圆轨迹线加工(假定加工深度为2mm) 方法一:已知椭圆的参数方X=acosθ Y=bsinθ 变量数学表达式 设定θ= #1(0°~ 360° ) 那么 X= #2 = acos[#1] Y= #3= bsin[#1] 程序 O0001; S1000 M03; G90 G54 G00 Z100; G00 Xa Y0; G00 Z3; G01 Z-2 F100; #1=0; N99 #2=a*cos[#1]; #3=b*sin[#1]; G01 X#2 Y#3 F300; #1=#1+1; IF[#1LE360]GOTO99; GOO Z50; M30;

例2 斜椭圆且椭心不在原点的轨迹线加工(假设加工深度为2mm) 椭圆心不在原点的参数方程 X=a*COS[#1]+ M Y=b*SIN[#1]+ N 变量数学表达式 设定θ=#1; (0°~360°) 那么X=#2=a*COS[#1]+ M Y=#3=b*SIN[#1]+ N 因为此椭圆绕(M ,N)旋转角度为A 可运用坐标旋转指令G68 格式 G68 X - Y - R - X,Y:旋转中心坐标; R: 旋转角度 程序 O0002; S1000 M03; G90 G54 G00 Z100; GOO X0 Y0; GOO Z3; G68 XM YN R45; #1=0; N99 #2=a*COS[#1]+M; #3=b*SIN[#1]+N;

GO1 X#2 Y#3 F300; G01 Z-2 F100; #1=#1+1; IF[#1LE360]GOTO99; G69 GOO Z100; M30; 例3:椭圆轮廓加工(深度2mm) 采用椭圆的等距加工方法使椭圆的长半轴与短半轴同时减少一个行距的方法直到短半轴小于刀具的半径R 根据椭圆的参数方程可设 变量表达式θ=#1(0°~360°) a=#2 b=#3(b-R~R) X=#2*COS[#1]=#4 Y=#3*SIN[#1]=#5 程序 O0003; S1000 M03; G90 G54 G00 Z100;

宏程序编程

用户宏程序 虽然子程序对编制相同加工操作的程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制相同加工操作的程序更方便,更容易。可将相同加工操作编为通用程序,如型腔加工宏程序和固定加工循环宏程序。使用时,加工程序可用一条简单指 令调出用户宏程序,和调用子程序完全一样。 一、变量 普通加工程序直接用数值指定G代码和移动距离;例如,G01和X100。 使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的操作改变。 #1=#2+100; G01 X#1 F300; 说明: 1、变量的表示 计算机允许使用变量名,用户宏程序不行。变量用变量符号(#)和后面的变量号指定。 例如:#1 表达式可以用于指定变量号。此时,表达式必须封闭在括号中。 例如:#[#1+#2-12] 2、变量的类型 变量根据变量号可以分成四种类型。 3、变量值的表示范围 局部变量和公共变量可以有0值或下面范围中的值: -1047至-10-29或10-29到1047 如果计算结果超出有效范围,则发出P/S报警No.111。 4、小数点的省略 当在程序中定义变量值时,小数点可以省略。 例:当定义#1=123;变量#1的实际值是123.000; 5、变量的引用 为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变 量时,要把表达式放在括号中。 例如:G01X[#1+#2]F#3; 被引用变量的值根据地址的最小设定单位自动地舍入。 例如:

当G00X#1;以1/1000mm的单位执行时,CNC把12.3456赋值给 变量#1,实际指令值为G00X12.346; 改变引用变量的值的符号,要把负号(一)放在#的前面。 例如:GOOX-#1; 当引用未定义的变量时,变量及地址字都被忽略。 例如: 当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0;。 6、未定义的变量 当变量值未定义时,这样的变量成为“空”变量。变量#0总是空变量。 它不能写,只能读。 (a)引用

宏程序基础知识资料教学文案

第一章宏程序基础知识 第一节常量与变量的含义 常量与变量的含义及编程案例 数控程序中含有变量的程序称为宏程序。虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。 常量 普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。 变量 使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的操作改变。 #1=#2+100 G01 X#1 F300 变量用变量符号(#)和后面的变量号指定。例如:#1 表达式可以用于指定变量号。此时,表达式必须封闭在括号中。例如:#[#1+#2-12] 变量根据变量号可以分成四种类型:1.空变量2.局部变量3.公共变量4.系统变量 1.空变量: #0 该变量总是空,没有值能赋给该变量. 2.局部变量: #1-#33 局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空. 调用宏程序时,自变量对局部变量赋值. 3.公共变量 #100-#199 #500-#999 公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失. 4.系统变量:#1000以上的变量 系统变量用于读和写CNC的各种数据,例如刀具补偿,当前位置信息, 变量的引用 为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放在

括号中。例如:G01X[#1+#2]F#3; 被引用变量的值根据地址的最小设定单位自动地舍入。 例如:当G00X#1;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346. 改变引用变量的值的符号,要把负号(-)放在#的前面。例如:G00X-#1 当引用未定义的变量时,变量及地址都被忽略。例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0 未定义的变量当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。 当#1= (空)时 G90 X100 Y#1实际与 G90 X100运行结果一样 当#1=0 时 G90 X100 Y#1实际与 G90 X100 Y0 运行结果一样 运算 除了用<空>赋值以外,其余情况下<空>与0 相同。

宏程序的变量

宏程序的变量 宏程序的变量分为两大类 一。一般变量。又分为3种。1;#1~#33普通变量。是可以程序中引如的,可以在程序中用字母对其赋值。赋值的方法两种,字母对应的方式和ABCIJKIJKIJK方式。程序执行结束后,此变量中的值会自动消去。2;#100~#149中间变量。一般用于中间计算。程序执行结束后,此变量中的值不会自动消去,但关机再开时,不被保存。3。#500~#531保持变量。一般用于功能程序的常量指定。可以保存。关机再开不会消去。 二。系统变量 系统变量是对应系统功能的变量值。他们的位址是固定对应的,FANUC基本上所有系统都可以通用。系统变量可以与PMC读入,输出部分信号,可以读取系统时间日期,可以输出报警,可以记忆所执行过的代码状态,可以设定系统的一些基本设置,可以设定坐标系,刀补,磨耗值,可以自行设定固定循环中的执行状态。 #1000~#1136等变量是对应PMC进行信号的读入输出,如果要进行功能性的控制的话,当然PMC要对应这些信号。 #3000是报警输出。例:#3000=15(data error),执行的话,如果是O系统,会显示515 DA T A ERROR的报警,在16 18以及I系列,则显示3015 DATA ERROR ,括号中最多25个字符。 #3006是信息的输出。 #2001~#2099对应加工中心,即M系列系统的刀具长度补正,可以读出和输入。在16 18等高版本系统中,既可以使用#2001~#2099,也可以用#10001~#10999。这是在使用刀长补正A 的时候的情况。 如果是刀长补正B的话,则#2201~#2400或#11001~#11200是形状补正号码,#2001~#2200或#10001~#10200是磨耗补正号码。 这是加工中心即M系列系统的情况,如果是车床,又有不同 如果是刀具补正C的话,#2201~#2400是刀长补正的形状值,#2001~#2200是刀长补正的磨耗值,#13001~#13999是刀半径补正的形状值,#12001~#12999是刀具半径补正的磨耗值。对于车床来说,#2001~2064对应x轴磨耗补正,#2701~2749对应x轴形状补正,#2101~#2164对应z轴磨耗,#2801~#2849对应z轴形状,#2201~#2264对应刀尖r磨耗,#2901~2949对应r形状。刀尖号对应#2301~2364。工件坐标偏置,就是WORK SHIFT,x轴对应#2501,z轴对应#2601。 如果是车床补正c的话又有不同,过一段我会将宏程序所用的变量列表上传。大家可以对应查找。 对于车床来说,#2001~2064对应x轴磨耗补正,#2701~2749对应x轴形状补正,#2101~#2164对应z轴磨耗,#2801~#2849对应z轴形状,#2201~#2264对应刀尖r磨耗,#2901~2949对应r形状。刀尖号对应#2301~2364。工件坐标偏置,就是WORK SHIFT,x轴对应#2501,z轴对应#2601。 如果是车床补正c的话又有不同,过一段我会将宏程序所用的变量列表上传。大家可以对应查找。 #3011是系统的日期,年、月、日。例如:#100=#3011 然后你到MARCO中去看,就会看到#100=20040201。 #3012是系统的时间。这两个变量只能读出,不能赋值进去。 #3003是设定宏程序执行时是否可以单节执行。#3003=0时,可以单节执行。#3003=1时,则不进行单节执行。即使是单节执行的开关被打开。3003=2时,可以单节执行。但不会等待同时正在进行的辅助功能,#3003=3的时候,则不进行单节执行。即使是单节执行的开关被打开。

新代宏程序实例

新代宏程序实例文件编码(GHTU-UITID-GGBKT-POIU-WUUI-8968)

1、R E P E A T直到型循环REPEAT <循环体> UNTIL <条件表达式> END_REPEAT; 说明:REPEAT直到型循环控制,先执行循环体,后判断条件表达式,当条件满足时退出循环。 例如: % @MACRO ,为了;?倾向于;?关于;?当作; conj.因为,由于;? FOR <循环变量> := <表达式1> TO <表达式2> [ BY <表达式3>] DO <循环体> END_FOR; 说明:FOR循环控制,式中各参数意义如下 循环变量——控制循环次数的变量; 表达式1——循环计数的起始值,可为整数或表达式; 表达式2——循环计数的终止值,可为整数或表达式; 表达式3——循环计数每次的累加值,可为整数或表达式; 循环体——循环每次执行内容; FOR循环执行过程为:先给循环变量赋起始值,然后判断循环变量是否为终止值,当循环变量已为终止值时退出循环,否则执行循环体,再对循环变量加上每次累加值, 4、无条件转移

GOTO转移语句 语法: GOTO n; 说明:无条件地跳到指定的n行号执行,其中n可为整数或表达式。GOTO常和IF语句搭配使用,那就是说当程序检查到某个条件满足时用GOTO语句去进一步处理,但应尽量少用该语句以提高程序可读性。 范例: % @MACRO Z10.; … N100 G01 X30. Z30.; … M02; EXIT循环中断语句 语法:EXIT; 说明:循环中断,跳离循环控制;用在循环控制中,通常EXIT都和IF 语句搭配使用,当某个条件满足后就跳离循环。请参考WHILE范例。

广州数控车床与FANUC数控车床宏程序编制比较

广州数控车床与FANUC数控车床宏程序 编制比较

-----------------------作者:-----------------------日期:

浅谈广州数控车床与FANUC数控车床宏程序编制 的不同点 对于FANUC系统数控车床的宏B程序编制,大家并不陌生,所有的教材都有例子,但对于广州数控系统车床来说,宏A程序几乎查不到实例资料,厂家说明书只介绍几个G65格式,对于广大数控人员来说,只是凤毛麟角,无实际例子,往往无从下手,下面本人举一些程序例子,供大家参考。 宏程序是用户把实现某种功能的一组指令像子程序一样预先存入存储器中,用一个指令代表这个存储的功能,在程序中只要指定该指令就能实现这个功能。通常我们把这一组指令称为用户宏程序本体,简称宏程序,把代表指令称为用户宏程序调用指令,简称宏指令。用户宏程序允许使用变量,可以给变量赋值,变量间可以进行算术和逻辑运算,这样用户可以扩展数控系统的功能。用户宏程序有A、B两种功能,广州数控系统GSK980TD使用宏A程序,FANUC-0i系统数控使用宏B较多。 FANUC数控系统车床的宏程序指令可参考其它有关数控的书。FANUC数控系统车床例子如下: 图1椭圆的长轴a=20,短轴b=15 椭圆标准方程公式是:1 /2 / 2= Z a X +b

X=a a b2 Z 2- O0001 G99 M3 S400 T0101 G0 X32 Z2 图1 G73 U15 R16 G73 P10 Q20 U0.3 W0 F0.2 N10 G0 X0 G01 Z0 #1=20 赋值#1=20 #2=15 赋值#2=15 #3=20 赋值#3=20,#3为起点到圆心的距离WHILE [#3 GE 0] DO 1 当#3大于等于0,执行1 语句,否 则执行END 1以下语句 #4=#2*SQRT[#1*#1-#3*#3]/#1 #4=#2×2 23# 1#-/#1 G1 X[2*#4]Z[#3-20] 车椭圆 #3=#3-0.5 步距0.5 END 1 语句 1 结束 N20 X32 G0 X100 Z100 M00 M3 S100 T0101 G0X 34 Z2 G70 P10 Q20 F0.08 G0 X100 Z100 M30 从以上例子看出,宏B程序比较直观易懂,符合语言的逻辑规律。而广州数控系统宏A程序相对来说比较呆板,下面详细说明。

FANUC用户宏程序学习教程

用户宏程序 宏程序是指含有变量的子程序,在程序中调用用户宏程序的那条指令叫做用户宏指令(这里用G65) 1、变量 用一个可赋值的代号代替具体的坐标值,这个代号称为变量。变量分为系统变量、全局变量和局部变量三类,它们的性质和用途个不相同。(1)系统变量是固定用途的变量,它的值决定了系统的状态。FANUC 中的系统变量为#1000~#1005、#1032、#3000等。 (2)全局变量是指在主程序内和由主程序调用的各用户宏程序内公用的变量。FANUC中的全局变量有60个,它们分两组,一组是#100~#149;另一组是#500~#509。 (3)局部变量是仅局限于在用户宏程序内使用的变量。同一个局部变量在不同的宏程序内的值是不通用的。FANUC中的局部变量有33个,分别为#1~#33。 表1 FANUC系统中局部变量赋值(部分)对照表

2、变量的演算 (1)加减型运算加减型运算包括加、减、逻辑加和排它的逻辑加。分别用以下四个形式表达: #i = #j +#k #i = #j -#k #i = #j OR #k #i = #j XOR #k 式中,i、j、k为变量;+、-、OR、XOR称为为演算子。 (2)乘除型运算乘除型运算包括乘、除和逻辑乘。分别用以下形式表达: #i = #j * #k #i = #j / #k #i = #j AND #k 4.变量的赋值 由于系统变量的赋值情况比较复杂,这里只介绍公共变量和局部变量的赋值。变量的赋值方式可分为直接和间接两种。

(1)直接赋值 例:#1=115(表示将变量115赋值于#1变量) #100=#2(表示将变量#2的即时值赋于变量#100) (2)间接赋值间接赋值就是用演算式赋值,即把演算式内演算的结果赋给某个变量。在演算式中有自变量代号,自变量每得到一个即时值,相应就得到一个演算结果,该结果就赋值给变量,该变量也叫应变量。5.转向语句 转向语句分为无条件转向语句和条件转向语句两种。 (1)无条件转向语句 程序段格式:GOTO N ;其中N后面的数值为程序段号。 例如:GOTO 55;表示无条件转向执行N55程序段,而不论N55程序段在转向语句之前还是之后。 (2)条件转向语句条件转向语句一般由判断条件式和转向目标两部分构成。 程序段格式:IF [a GT b ] GOTO c;表示为“如果a>b,那么转向执行第Nc句程序段”。a和b可以是数值、变量或含有数值及变量的算式,c 是转向目标的程序段。 大于、等于、大于等于、小于等于分别用GT、EQ、GE、LE表示。

数控宏程序实例

第7章宏程序 7.3 宏程序调用 7.3.1 宏程序调用指令(G65) 在主程序中可以用G65调用宏程序。指令格式如下: G65 P L 〈自变量赋值〉; 其中:P指定宏程序号:L为重复调用次数(1—9999);自变量赋值是由地址和数值构成的,用以对宏程序中的局部变量赋值。 例如: 主程序: O7002 ... G65 P7100 L2 A1.0 B2.0 ... M30 宏程序: #3=#1+#2; IF [#3 GT 360] GOTO 9; G00 G91 X#3 N9 M99

7.3.2 自变量赋值 自变量赋值有两种类型。自变量I使用除去G,L,N,O,P以外的其他字母作为地址,自变量II可以使用A,B,C每个字母一次,I,J,K每个字母可使用十次作为地址。表7—3和7—4分别为两种类型自变量赋值的地址和变量号码之间的对应关系: 表7—3 自变量赋值的地址和变量号码之间的对应关系 表7—4 自变量II的地址与变量号码之间的对应关系

上表中的I,J,K的下标只表示顺序,并不写在实际命令中。在G65的程序段中,可以同时使用表4—1及表4—2中的两组自变量赋予值。系统可以根据使用的字母自动判断自变量赋值的类型。 7.4 变量的控制和运算指令 7.4.1 算术运算和逻辑运算 在变量之间,变量和常量之间,可以进行各种运算,常用的见表7—5。

表7—5 算术和逻辑运算 运算的优先顺序如下: 1)函数。 2)乘除,逻辑与。 3)加减,逻辑或,逻辑异或。 可以用[ ]来改变顺序

7.4.2 控制指令 1.无条件转移(GOTO语句) 语句格式为: GOTO n 其中n为顺序号(1—9999),可用变量表示。例如: GOTO 1; GOTO #10; 2. 条件转移(IF 语句) 语句格式为: IF [条件式] GOTO n 条件式成立时,从顺序号为n的程序段开始执行;条件式不成立时,执行下一个程序段。 条件式有以下几类: # j EQ # K # j NE # K # j GT # K # j LT # K # j GE # K # j LE # K 条件式中变量#J或#K可以是常量也可以是表达式,条件式必须用括弧括起来。下面的程序可以得到1到10的和: O7100

数控机床宏程序例题

由浅入深宏程序10-车床旋转正弦函数宏程序 正弦函数曲线旋转宏程序 坐标点旋转1 s = x cos(b) – y sin(b) t = x sin(b) + y cos(b) 根据下图,原来的点(#1,#2),旋转后的点(#4,#5),则公式: #4=#1*COS[b]- #2*SIN[b] #5=#1*SIN[b]+ #2*COS[b] 公式中角度b,逆时针为正,顺时针为负。 下图中正弦曲线如果以其左边的端点为参考原点,则此条正弦曲线顺时针旋转了16度,即b=-16

正弦函数旋转图纸1 此正弦曲线周期为24,对应直角坐标系的360 对应关系【0,360】 y=sin(x) 【0,24】 y=sin(360*x/24) 可理解为: 360/24是单位数值对应的角度 360*x/24是当变量在【0,24】范围取值为x时对应的角度 sin(360*x/24)是当角度为360*x/24时的正弦函数值 旋转正弦函数曲线粗精加工程序如下: T0101 M3S800 G0X52Z5 #6=26 工件毛坯假设为50mm,#6为每层切削时向+X的偏移量。N5 G0X[#6+] 0F

#1=48 N10 #2=sin【360*#1/24】 #4=#1*COS[-16]- #2*SIN[-16] 旋转30度之后对应的坐标值 #5=#1*SIN[-16]+ #2*COS[-16] #7=#4-【】坐标平移后的坐标。 #8=45+2*#5+#6 G1X[#8]Z[#7] 沿小段直线插补加工 #1=# 递减,此值越小,工件表面越光滑。 IF [#1 GE 0] GOTO 10 条件判断是否到达终点。 Z-50 G1X52 直线插补切到工件外圆之外 G0Z5 #6=#6-2 IF [#6 GE 0] GOTO 5 G0X150Z150 M5 M30 镂空立方体宏程序范例 镂空立方体图纸及宏程序范例 此零件六个面加工内容相同,在加工时,调面装夹时要注意考虑夹紧力。 对于每个面的加工,可以用一个宏程序进行编制。宏程序编程时,即有深度方向的变化,也有半径的变化,是一种典型的宏程序。可以先用自己的思路编制一下,图后附有参考程序。

EXCEL宏编程实例.doc

Excel 宏编程举例说明 学习宏编程,需要VB基础,如果一点VB基础和面向对象的概念,建议先去补补VB,不然即使自认为学好了也只能拿着高射炮打蚊子! 一)、宏学习 首先需要明确的是,本文不可能教会您关于宏的所有内容。您需要学会利用"录制宏"的方法来学习宏:点击Excel"工具"下拉菜单中"宏"下?quot;录制新宏",此后可象平时一样进行有关操作,待完成后停止录制。然后再点击"工具"下拉菜单中"宏"下"宏"的"编辑"选项即可打开刚才所录制的宏的Visual Basic源程序,并且可以在此时的"帮助"下拉菜单中获得有关的编程帮助。对录制宏进行修改不仅可以学习宏的使用,还能大大简化宏的编写。 二)、基本概念 为了学习Excel中的宏,我们需要先了解以下一些基本概念。 1、工作簿:Workbooks、Workbook、ActiveWorkbook、ThisWorkbook Workbooks集合包含Excel中所有当前打开的Excel工作簿,亦即所有打开的Excel文件;Workbook对应Workbooks中的成员,即其中的Excel文件;ActiveWorkbook代表当前处于活动状态的工作簿,即当前显示的Excel文件;ThisWorkbook代表其中有Visual Basic代码正在运行的工作簿。 在具体使用中可用Workbooks(index)来引用Workbook对象,其中index为工作簿名称或编号;如Workbooks(1)、Workbooks("年度报表.xls")。而编号按照创建或打开工作簿的顺序来确定,第一个打开的工作簿编号为1,第二个打开的工作簿为2……。 2、工作表:Worksheets、Worksheet、ActiveSheet Worksheets集合包含工作簿中所有的工作表,即一个Excel文件中的所有数据表页;而Worksheet则代表其中的一个工作表;ActiveSheet代表当前处于的活动状态工作表,即当前显示的一个工作表。 可用Worksheets(index)来引用Worksheet对象,其中index为工作表名称或索引号;如Worksheets(1)、Worksheets("第一季度数据")。工作表索引号表明该工作表在工作表标签中的位置:第一个(最左边的)工作表的索引号为1,最后一个(最右边的)为Worksheets.Count。需要注意的是:在使用过程中Excel会自动重排工作表索引号,保持按照其在工作表标签中的从左至右排列,工作表的索引号递增。因此,由于可能进行的工作表添加或删除,工作表索引号不一定始终保持不变。3、图表:Chart 、Charts、ChartObject、ChartObjects、ActiveChart Chart代表工作簿中的图表。该图表既可为嵌入式图表(包含在ChartObject中),也可为一个分开的(单独的)图表工作表。 Charts代表指定工作簿或活动工作簿中所有图表工作表的集合,但不包括嵌入式在工作表或对话框编辑表中的图表。使用Charts(index) 可引用单个Chart图表,其中index是该图表工作表的索引号或名称;如Charts(1)、Charts("销售图表")。图表工作表的索引号表示图表工作表在工作簿的工作表标签栏上的位置。Charts(1)是工作簿中第一个(最左边的)图表工作表;Charts(Charts.Count)为最后一个(最右边的)图表工作表。 ChartObject代表工作表中的嵌入式图表,其作用是作为Chart对象的容器。利用ChartObject 可以控制工作表上嵌入式图表的外观和尺寸。 ChartObjects代表指定的图表工作表、对话框编辑表或工作表上所有嵌入式图表的集合。可由ChartObjects(index)引用单个ChartObject,其中index为嵌入式图表的编号或名称。如

相关文档
最新文档