宏程序使用说明

宏程序使用说明
宏程序使用说明

第五章用户宏程序

变量

普通加工程序直接用数值指定G代码和移动距离;例如,GO1和。使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的操作改变。

#1=#2+100

G01 X#1 F300

说明:

●变量的表示

计算机允许使用变量名,用户宏程序不行。变量用变量符号(#)和后面的变量号指定。

例如:#1

表达式可以用于指定变量号。此时,表达式必须封闭在括号中。

例如:#[#1+#2-12]

●变量的类型

变量根据变量号可以分成四种类型

变量号变量类型功能

#0空变量该变量总是空,没有值能赋给该变量.

#1-#33局部变量局部变量只能用在宏程序中存储数据,

例如,运算结果.当断电时,局部变量被

初始化为空.调用宏程序时,自变量对

局部变量赋值,

#100-#199 #500-#999公共变量公共变量在不同的宏程序中的意义相

同.当断电时,变量#100-#199初始化为

空.变量#500-#999的数据保存,即使断

电也不丢失.

#1000---系统变量系统变量用于读和写CNC运行时各种数

据的变化,例如,刀具的当前位置和补

偿值.

●变量值的范围

局部变量和公共变量可以有0值或下面范围中的值:

-1047到-10-29或-10-2到-1047

如果计算结果超出有效范围,则发出P/S报警.

●小数点的省略

当在程序中定义变量值时,小数点可以省略。

例:当定义#1=123;变量#1的实际值是。

●变量的引用

为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放在括号中。

例如:G01X[#1+#2]F#3;

被引用变量的值根据地址的最小设定单位自动地舍入。

例如:

当G00X#/;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346.

改变引用变量的值的符号,要把负号(-)放在#的前面。

例如:G00X-#1

当引用未定义的变量时,变量及地址都被忽略。

例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0。

●双轨迹(双轨迹控制)的公共变量

对双轨迹控制,系统为每一轨迹都提供了单独的宏变量,但是,根据参数和6037的设定,某些公共变量可同时用于两个轨迹。

●未定义的变量

当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。

(a)引用

当引用一个未定义的变量时,地址本身也被忽略。

当#1=<空>当#1=0

G90 X100 Y#1

G90 X100G90 X100 Y#1

G90 X100 Y0

(b) 运算

除了用<空>赋值以外,其余情况下<空>与0相同。

当#1=<空>时当#1=0时

#2=#1

#2=<空>#2=#1

#2=0

#2=#*5

#2=0#2=#*5

#2=0

#2=#1+#1

#2=0#2=#1+#1

#2=0

(c)条件表达式

EQ和NE中的<空>不同于0。

当#1=<空>时当#1=0时

#1EQ#0

成立#1EQ#0

不成立

#1 NE #0

成立#1 NE #0

不成立

#1 GE #0

成立#1 GE #0

不成立

#1 GT #0

不成立#1 GT #0

不成立

●限制

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

例:下面情况不能使用变量:

0#1;

/#2G;

N#;

算术和逻辑运算

下面表中列出的运算可以在变量中执行。运算符右边的表达式可包含常量和或由函数或运算符组成的变量。表达式中的变量#j和#k可以用常数赋值。左边的变量也可以用表达式赋值。

功能格式备注

定义#i=#j

加法减法乘法除法#i-#j+#k; #i-#j-#k; #i-#j*#k; #i-#j/#k;

正弦反正弦余弦反余弦正切反正切#i=SIN[#j];

#i=ASIN[#j];

#i=COS[#j];

#i=ACOS[#j];

#i=TAN[#j];

#i=ATAN[#j];

角度以度数指定,90°

30’表示为度。

平方根绝对值舍入

上取整下取整自然对数指数函数#i=SQRT[#j]; #i=ABS[#j];

#i=ROUNND[#j]; #i=FIX[#j];

#i=FUP[#j];

#i=LN[#j];

#i=EXP[#j];

或异或与#i-#jOR#k;

#i-#jXOR#k;

#i-#jAND#k;

逻辑运算一位一位地

按二进制数执行。

从BCD转为BIN 从BIN转为BCD #i=BIN[#j];

#i=BCD[#j];

用于与PMC的信号交

换。

说明:

●角度单位

函数SIN ,COS,ASIN,ACOS,TAN和ATAN的角度单位是度。如90°30’表示为度。

● ARCSIN # i= ASIN[#j]

(1)取值范围如下:

当参数(#0)NAT位设为0时,270°~90°

当参数(#0)NAT位设为1时,-90°~90°

(2)当#j超出-1到1的范围时,发出P/S报警.

(3)常数可替代变量#j

●ARCCOS #i=ACOS[#j]

(1)取值范围从180°~0°

(2)当#j超出-1到1的范围时,发出P/S报警.

(3)常数可替代变量#j

●ARCTAN #i= ATAN[#j]/ [#k]

(1)指定两个边的长度,并用斜杠(/)分开

(2)取值范围如下:

当NAT位(参数,#0)设为0时;0°到360°

当NAT位(参数,#0)设为1时;-180°到180°

(3) 常数可替代变量#j

●自然对数 #i=LN[#j];

(1) 注意,相对误差可能大于10-8.

(2) 当反对数(#j)为0或小于0时,发出P/S报警.

(3) 常数可替代变量#j。

●指数函数 #i=EXP[#j]

(1) 注意,相对误差可能大于10-8。

(2) 当运算结果超过(j大约是110)时,出现溢出并发出P/S报警.。

(3) 常数可替代变量#j。

● ROUND(舍入)函数

(1) 当算术运算或逻辑运算指令IF或WHILE中包含ROUND函数时,则ROUND函数在第一

个小数位置四舍五入. 当执行#1= ROUND[#2];此处#2=,变量1的值是。

(2) 当在NC语句地址中使用ROUND函数时,ROUND函数根据地址的最小设定单位将指定

值四舍五入

●上取整下取整

CNC处理数值运算时,若操作后产生的整数绝对值大于原数的绝对值时为上取整;若小于原数的绝对值为下整数.对于负数的处理应小心.

●算术与逻辑运算指令的缩写

程序中指令函数时,函数名的前两个字符可以用于指定该函数.

ROUND→RO

FLX→FI

●运算次序

(1)函数

(2)乘和除运算

(3)加和减运算

●括号嵌套

括号用于改变运算次序,括号可以使用5级,包括函数内部使用的括号.当超过5级时,出现P/S报警.

限制

●括号 ([,])用于封闭表达式.注意,圆括号用于注释.

●运算误差运算时,可能出现误差.

注: 1.相对误差取决于运算结果.

2.使用两类误差的较小者.

3.绝对误差是常数,而不管运算结果.

4.函数TAN执行SIN/COS.

5.如果SIN/COS或TAN函数的运算结果小于10X10-8或由于运算精度的限制不为

0的话,设定参数#1为1,则运算结果可以规算为0.

(1) 变量值的精度约为8位十进制数.当在加/减速中处理非常大的数时,将得不到期

望的结果.

(2) 还应该意识到,使用条件表达式EQ,NE,GE,和LT时可能造成误差.

(3) 使用下取整指令时应小心.

●除数当在除法或TAN[90]中指定为0的除数时,出现P/S报警

宏程序语句和NC语句

下面的程序段为宏程序语句:

◆包含算术或逻辑运算(=)的程序段.

◆包含控制语句的程序段

◆包含宏程序调用指令的程序段

除了宏程序以外的任何程序段都为NC语句.

说明:

●与NC语句的不同

(1)即使置于单程序段运行方式,机床也不停止.但是,当参数#5SBM设定为1时,在单程

序段方式中,机床停止.

(2)在刀具半径补偿方式中宏程序语句段不做为不移动程序段处理.

●与宏程序语句有相同性质的NC 语句

(1)含有子程序调用指令,但没有除O,N或L地址之外的其它地址指令的NC语句其性质

与宏程序相同.

(2)不包含除ONP或L以外的指令地址的程序段其性质与宏程序语句相同.

转移和循环

在程序中,使用GOTO 语句和IF语句可以改变控制的流向.有三种转移和循环操作可供使用;

转移和循环----------GOTO语句(无条件转移)

↓→IF语句(条件转移)

WHILE语句(当…时循环)

5.4.1无条件转移(GOTO语句)

转移到标有顺序号n的程序段.当指定1到99999以外的顺序号时,出现P/S报警.可用表达方式指定顺序号.

GOTOn;n:顺序号(1到99999)

5.4.2条件转移(IF)语句

IF之后指定条件表达式.

IF[<条件表达式>]GOTOn 如果指定的条件表达式满足时,转移到标有顺序号n的程序段.如果指定的条件表达式不满足,执行下个程序段.

IF[<条件表达式>]THEN 如果条件表达式满足,执行预先决定的宏程序语句.只执行一个宏程序语句.

说明:

●条件表达式

条件表达式必须包括算符.算符插在两个变量中间或变量和常数中间,并且用括号([,])封闭.表达式可以替代变量.

●运算符

运算符由2个字母组成,用于两个值的比较,以决定它们是相等还是一个值小于或大于另一个值.注意,不能使用不符号.

运算符含义

EQ等于

NE不等于

GT大于

GE小于或等于

LT小于

LE小于或等于

典型程序:

下面的程序计算数值1-10的总和

5.4.3循环(WHILE语句)

在 WHILE后指定一个条件表达式.当指定条件满足时,执行从D0到END之间的程序.否则,转到END后的程序段.

说明:

当指定的条件满足时,执行 WHILE从D0到END之间的程序.否则,转而执行END之后的程序段,这种指令格式适用于IF语句.D0后的号和END后的号是指定程序执行范围的标号,标号值为1,2,3.若用1,2,3以外的值会产生P/S报警.

●嵌套

在DO-END循环中的标号可根据需要多次使用.但是,当程序有交叉重复循环(DO范围的重叠)时,出现P/S报警.

说明:

◆无限循环当指定DO而没有指定WHILE语句时,产生从DO到END的无限循环.

◆处理时间当在GOTO语句中有标号转移的语句时,进行顺序号检索.反向检索的时

间要比正向检索长.用WHILE语句实现循环可减少处理时间.

◆未定义的变量在使用EQ或NE的条件表达式中,<空>和零有不同的效果,在其它形

式的条件表达式中,<空>被当作零.

◆典型程序下面的程序计算数值1到10的总和.

00001;

#1=0;

#2=1;

WHILE[#2LE10]DO 1;

#1=#1+#2;

#2=#2+1;

END 1;

M30;

宏程序调用

用下面的方法调用宏程序:

宏程序调用------------非模态调用(G65)

-----------模态调用(G66,G67)

------------用G代码调用宏程序

------------用M代码调用宏程序

------------用M代码调用子程序

------------用T代码调用子程序

限制

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

宏程序调用用(G65)不同于子程序用(G68),如下所述:

(1)用(G65),可以指定自变量(数据传送到宏程序).M98没有该功能.

(2)当M98程序段包含另一个NC指令时,在指令执行之后调用子程序.相反,G65无条件

地调用宏程序.

(3)M98程序段包含另一个NC指令时,在单程序段方式中,机床停止.相反,G65机床不停

止.

(4)用G65,改变局部变量的级别.用M98,不改变局部变量的级别.

5.5.1 非模态调用(G65)

当指定G65时,以地址P指定的用户宏程序被调用.数据能传递到用户宏程序体中.

说明:

呼调:(1) 在G65之后,用地址P指定用户宏程序的程序号.

(2) 当要求重复时,在地址L后指定从1到9999的重复次数.省略L值时,认为L

等于1.

(3) 使用自变量指定,其值被赋值到相应的局部变量.

●自变量指定

可用两种形式的自变量指定,自变量指定I使用除了G,L,O,N和P以外的字母,每个字母指定一次.自变量指定II使用A,B,C和I,J和K(i为1-10).根据使用的字母,自动地改变自变量指定的类型.

自变量指定I

地址变量号地址变量号地址变量号

A B C #1

#2

#3

I

J

K

#4

#5

#6

T

U

V

#20

#21

#22

D E F H #7

#8

#9

#11

M

Q

R

S

#13

#17

#18

#19

W

X

Y

Z

#23

#24

#25

#26

(1)地址G,L,N,Q和P不能在自变量中使用.

(2)不需要指定的地址可以省略,对应于省略地址的局部变量设为空.

(3)地址不需要按字母顺序指定,但应符合字地址的格式.但是I,J和K需要按字母顺序

指定.

自变量地址II

自变量指定II使用A,B,和C各一次,I,J,K10次.自变量指定II用于传递诸如三维坐标值的变量.

地址变量号地址变量号地址变量号

A B C I1 J1 K1 I2 J2 K2 L3 J3#1

#2

#3

#4

#5

#6

#7

#8

#9

#10

#11

K3

I4

J4

K4

I5

J5

K5

I6

J6

K6

I7

#12

#13

#14

#15

#16

#17

#18

#19

#20

#21

#22

J7

K7

I8

J8

K8

I9

J9

K9

I10

J10

K10

#23

#24

#25

#26

#27

#28

#29

#30

#31

#32

#33

I,J,K的下标用于确定自变量指定的顺序,在实际编程中不写.

限制:

◆格式: 任何自变量前必须指定G65

◆自变量指定I,II的混合 CNC内部自动识别自变量指定I&自变量指定II.如

果自变量指定I和自变量指定II混合指定的话,后指定的自变量类型有效.

◆小数点的位置没有小数点的自变量数据的单位为各地址的最小设定单位.传

递的没有小数点的自变量的值根据机床实际的系统配置变化.在宏程序调用中使用小数点可使程序兼容性好.

◆调用嵌套:调用可以嵌套4级,包括非模态调用(G95)和模态调用(G66).但不

包括子程序调用(M98).

◆局部变量的级别 :

1.局部变量嵌套从0到4级.

2.主程序是0级.

3.宏程序每调用1次,局部变量级别加1.前1级的局部变量值保存在CNC中.

4.当宏程序中执行M99时,控制返回到调用的程序.此时,局部变量级别减1;并恢

复宏程序调用时保存的局部变量值.

◆典型程序: 编制一个宏程序加工轮圆上的孔.圆周的半径为I.起始角为A,间隔

为B,钻孔数为H,圆的中心是(X,Y)指令可以用绝对值或增加量指定.顺时针方向钻孔时B应指定负值.

◆调用格式:G95 P9100 Xx Yy Zz Rr Li Aa Bb Hh ;

X:圆心的X坐标(绝对值或增量值的指定)(#24)

Y:圆心的Y坐标(绝对值或增量值的指定)(#25)

Z:孔深(#26)

R:快速趋近点坐标(#18)

F:切削进给速度(#9)

I:圆半径(#4)

A:第一孔的角度(#1)

B:增量角(指定负值时为顺时针)(#2)

H:孔数(#11)

◆宏程序调用程序:

O0002;

G90 G92 X0 Y0 Z100,0;

G65 p9100 X100 500 I100.0 A0 H5;

M30;

◆宏程序

09100;

#3=#4003;存储03组G代码

G81 Z#26 R#18 F#9 K0;(注)钻孔循环

注:也可以使用L0

IF[#3 EQ 90] GOTO 1;在G90方式转移到N1

#24=#5001+#24;计算圆心的X坐标

#25=#5001+#25;计算圆心的Y坐标

N1 WHILE[#11 GT O] DO 1;直到剩余孔数为0

#5=#24+#4*COS[#1];计算X轴上的孔位

#6=#25+#4*SIN[+1]; 计算X轴上的孔位

G90 X#5 Y#6 ;移动到目标位置之后执行钻孔

#1=#1+#2;更新角度

#11=#11-1;孔数-1

END 1;

G#3 G80 ;返回原始状态的G代码

M99

5.5.2 模态调用(G66)

一旦发出G66则指定模态调用,即指定沿移动轴移动的程序段后调用宏程序.G97取消模态调用.

说明:

●调用

1.在G66之后,用地址P指定模态调用的程序号.

2.当要求重复时,地址L后指定从1到9999的重复次数.

3.与非模态调用(G65)相同,自变量指定的数据传递到宏程序体中.

●取消指定G97代码时,其后面的程序段不再执行模态宏程序调用.

●调用嵌套调用可以嵌套4级.包括非模态调用(G65)和模态调用(G66).但不包括

子程序调用(M98)

限制: 1.在G66程序段中,不能调用多个宏程序.

必须在自变量之前指定.

3.在只有诸如辅助功能但无移动指令的程序段中不能调用宏程序.

4.局部变量(自变量)只能在G66程序段中指定.注意,每次执行模态调用时,

不再设定局部变量.

●典型程序用宏程序编制G81固定循环的操作.加工程序使用模态调用,为了简化程

序,使用绝对值指定全部的钻孔数据.

●调用格式 G65 P9110 Xx Yy Zz Rr Ff Ll;

X:孔的X坐标(由绝对值指定)(#24)

Y:孔的Y坐标(由绝对值指定)(#25)

Z: Z 点坐标(由绝对值指定) (#26)

R: R点坐标(由绝对值指定) (#18)

F:切削进给速度(#9)

L:重复次数

●调用宏程序的程序 00001;

G28 G91 X0 Y0 ZO;

G92 X0 Y0 ;

G00 G90 ;

G66 P9110 R.0 F500;

G90 ;

;

;

G67;

M30;

●宏程序(被调用的程序) 09110;

#1=#4001;贮存G00/G01

#2=#4003; 贮存G90/G91

#3=#4109; 贮存切削进给速度

#5=#5003; 贮存钻孔开始的Z坐标

G00 G90 Z#18; 定位在R点

G01 Z#26 F#9 ; 切削进给到Z点

IF[#4010 EQ 98]GOTO1;返回到1点

G00 Z#18 ;定位在R点

GOTO 2;

N1 G00 Z#5 ;定位在1点

N2 G#1 G#3 F#4; 恢复模态信息.

M99;

5.5.3 用G代码调用宏程序

在参数中设置调用宏程序的G代码,与非模态调用(G65)同样的方法用该代码调用宏程序.

说明:在参数到中设置调用用户宏程序(09010到09019)的G代码号(从1到9999),调用户宏程序的方法与G65相同.例如,设置参数,使宏程序09010由G81调用,不用修改加工程序,就可以调用由用户宏程序编制的加工循环.

●参数号和程序号之间的对应关系

程序号参数号

09010 09011 09012 09013 09014 09015 09016 09017 09018 090196050 6051 6052 6053 6054 6055 6056 6057 6058 6059

●重复与非模态调用一样,地址L可以指定从1到9999的重复次数.

●自变量指定与非模态调用一样,两种自变量指定是有效的;自变量指定I和自变

量指定II.根据使用的地址自动地决定自变量的指定类型.

●使用G代码的宏调用的嵌套在G代码调用的程序中,不能用一个G代码调用多个

宏程序.这种程序中的G代码被处理为普通G代码.在用M或T代码作为子程序调用的程序中,不能用一个G代码调用多个宏程序.这种程序中的G代码也处理为普通G 代码.

5.5.4 用M代码调用宏程序

在参数中设置调用宏程序的M代码,与非模态调用(G65)的方法一样用该代码调用宏程序.

说明: 在参数到中设置调用用户宏程序(09021到09029)的M代码(从1到),用户宏程序能与G65同样的方法调用.

●参数号和程序号之间的对应关系

程序号参数号

09020 0902 09022 0902 09024 09025 09026 09027 09028 090296080 6081 6082 6083 6084 6085 6086 6087 6088 6089

●重复与非模态调用一样,地址L可以指定从1到9999的重复次数.

●自变量指定与非模态调用一样,两种自变量指定是有效的;自变量指定I和自

变量指定II.根据使用的地址自动地决定自变量的指定类型.

●限制: 1.调用宏程序的M代码必须在程序段的开头指定.

代码调用的宏程序或用M代码或T代码作为子程序调用的程序中,不能用

一个M代码调用多个宏程序.这种宏程序或程序中的M代码被处理为普通M

代码.

5.5.5 用M代码调用子程序

在参数中设置调用子程序(宏程序)的M代码号,可与子程序调用(M98)相同的方法用该代码调用宏程序.

说明:在参数到中设置调用子程序的M代码(从1到),相应的用户宏程序(09001到09009)可与M98同样的方法用该代码调用.

●参数号&程序号之间的对应关系

程序号参数号

09001 09002 09003 09004 09005 09006 09007 09008 090096071 6072 6073 6074 6075 6076 6077 6078 6079

●重复与非模态调用一样,地址L可以指定从1到9999的重复次数.

●自变量指定不允许自变量指定.

●M代码在宏程序中调用的M代码被处理为普通的M代码.

●限制: 用G代码调用的宏程序,或用M或T代码调用的程序中,使用一个M代码不

能调用几个子程序.这种宏程序或程序中的M代码被处理为普通的M代码.

5.5.6 用T代码调用子程序

在参数中设置调用的子程序(宏程序)的T代码,每当在加工程序中指定该T代码时,即调用宏程序.

说明:

●调用: 设置参数的5位TCS=1,当在加工程序中指定T代码时,可以调用宏程序

09000.在加工程序中指定的T代码赋值到公共变量#149.

●限制:用G代码调用的宏程序中或用M或T代码调用的程序中,一个M代码不能调用

多个子程序.这种宏程序或程序中的T代码被处理为普通T代码.

5.5.7 典型程序

用M代码调用子程序的功能,调用测量每把刀具的累积使用时间的宏程序.

条件: 1.测量T01到T05各把刀具的累积使用时间.刀号大于T05的刀具不进行测量.

2.下面的变量用于贮存刀号和测量的时间.

#501刀号1的累积使用时间

#502刀号2累积使用时间

#503刀号3累积使用时间

#504刀号4累积使用时间

#505刀号5累积使用时间

3.当指定M03时,开始计算使用时间,当指定M05时,停止计算.在循环起

动灯亮期间,用系统变量#3002测量该时间.进给暂停&单段停止期间,时间不

计算,但要计算换刀和交换工作台的时间.

进行检查

◆参数设置参数中设置3,参数中设置05.

◆变量值的设置变量#501到#505中设置0.

◆调用宏程序的程序

00001;

T01 M06;

M03;

M05;改变#501

T02 M06;

M03;

M05; 改变#503

T05 M06;

M03;

M05;改变#504

T05 M06;

M03;

M05;改变#505

M30;

◆宏程序(被调用的程序) 09001 (M03);启动计算的宏程序

N01;

IF[#4120 EQ 0]GOTO9;没有指定刀具

IF[#4120 GT 5]GOTO9;超出刀号范围

#3002=0;计算器清0

N9 M03;以正向旋转主轴

M99;

09002(M05);结束计算的宏程序

M01;

IF[#4120 EQ 0]GOTO9;没有指定刀具

IF[#4120 GT 5]GOTO9;超出刀号范围

#[500+#120]=#3002+#[500+4120];计算累积时间 N9 M05;停止主轴

M99;

宏程序语句的处理

为了平滑加工,CNC预读下一个要执行的NC语句.这种运行称为缓冲.在刀具半径补偿方式(G41,G42)中,NC为了找到交点提前预读2或3个程序段的NC后语

句,算术表达式和条件转移的宏程序语句在它们被读进缓冲寄存器后立即被处理.

包含M00,M01,M02或M30的程序段,包含由参数到设置的禁止缓冲的M代码的程序

段,以及包含G31的程序段不预读.

说明:

●当下个程序段不缓冲时(不缓冲的M代码,G31等)

●在除了刀具半径补偿方式(G41,G42)以外的方式中,缓冲下个程序段(正常预读一个

程序段)

当执行N1时,下个NC语句(N4)被读入缓冲器.N1和N4之间的宏语句(N2,N3)在N1执行期间被处理.

●在刀具半径补偿方式(G41,G42)中缓冲下个程序段

当N1正在执行时,在下2个程序段(直到N5)中的NC语句被读进缓冲寄存器.在N1和N5之间的宏语句(N2,N4)在N1的执行期间被处理.

●在刀具半径补偿方式C(G41,G42)中,当下个程序段包含没有移动的程序段时

当NC1程序段正在执行时,下两个程序段(直到N5)中的NC语句被读进缓冲寄存器.由于N5是不移动的程序段,不能计算交点.此时,下面三个程序段(直到N7)中的NC语句被读入.在N1和N7之间的宏语句(N2,N4和N6)在执行N1时被处理.

用户宏程序的存储

用户宏程序与子程序相似,可用与子程序同样的方法进行存储和编程,存储容量由子程序和宏程序的总容量确定.

限制

● MDI运行在MDI方式中可以指定宏程序调用指令.但是,在自动运行期间,宏程序调用不能切换到MDI方式.

●顺序号检索用户宏程序正在执行,在单程序段方式,程序段也能停止.

包含宏程序调用指令(G65,G66或G67)的程序段中,即使在单程序段

方式时也不能停止.当设定SBM()参数的5位)为1时,包含算术运算

指令和控制指令的程序段可以停止.

单程序段运行用于调试用户宏程序.注意,在刀具半径补偿C方式中,

当宏程序语句中出现单程序段停止时,该语句被认为不包含移动的程

序段,并且,在某些情况下,不能执行正确的补偿.

●任选程序段跳过在<表达式>中间出现的符号被认为时除法运算符;不作为任选程

序段跳过代码.

●在EDIT方式中的运行设定参数NE8和NEP为1,可对程序号8000到8999和9000

到9999的用户宏程序和子程序进行保护.当存储器全清时,存

储器的全部内容包括宏程序都被清除.

●复位

当复位时,局部变量和#100到#149的公共变量被清除为空值.设定CLV和

CCV,它们可以不被清除.系统变量#1000到#1333不被清除.

复位操作清除任何用户宏程序和子程序的调用状态及DO状态并返回到主

程序.

●程序再起动的显示和M98一样,子程序调用使用的M,T代码不显示.

●进给暂停在宏程序语句的执行期间,进给暂停有效时,当宏语句执行之后机床停止.

当复位或出现报警时,机床也停止.

● <表达式>中可以使用的常数值 +到+

-到

有效数值是8位(十进制),如果超过这个范围,出现

P/S报警.

宏程序的使用

大家都在问宏程序~其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出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内的数值赋予到#101中 G65H01P#101Q#10:把10赋予到#101中 H02加指令;格式G65 H02 P#101 Q#102 R#103,把#102的数值加上#103的数值赋予#101 G65 H02 P#101 Q#102 R10 G65 H02 P#101 Q10 R#103 G65 H02 P#101 Q10 R20 上面4个都是加指令的格式都是把Q后面的数值或变量号内的数值加上R后面的数 值或变量号内的数值然后等于到P后面的变量号中. H03减指令;格式G65 H03 P#101 Q#102 R#103,把#102的数值减去#103的数值赋予#101 G65 H03 P#101 Q#102 R10 G65 H03 P#101 Q10 R#103 G65 H03 P#101 Q20 R10 上面4个都是减指令的格式都是把Q后面的数值或变量号内的数值减去R后面的数 值或变量号内的数值然后等于到P后面的变量号中. H04乘指令;格式G65 H04 P#101 Q#102 R#103,把#102的数值乘上#103的数值赋予#101 G65 H04 P#101 Q#102 R10 G65 H04 P#101 Q10 R#103 G65 H04 P#101 Q20 R10 上面4个都是乘指令的格式都是把Q后面的数值或变量号内的数值乘上R后面的数

新代数控车床宏程序说明

一.用户宏程序的基本概念 用一组指令构成某功能,并且象子程序一样存储在存储器中,再把这些存储的功能由一个指令来代表,执行时只需写出这个代表指令,就可以执行其相应的功能。 在这里,所存储的一组指令叫做宏程序体(或用户宏程序),简称为用户宏。其代表指令称为用户宏命令,也称作宏程序调用指令。 用户宏有以下四个主要特征: 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;

宏程序变量

1.变量:正如计算机程序设计中的变量一样,数控程序中也需要使用变量。要进行程序流程控制,变量是必不可少的。数控编程中的变量用符号#跟一个整数表示。例如#1就是一个变量。给变量赋值的方法和计算机编程一样,如#1=5。(相当于basic或C语言的a=5,pasc al的a:=5。) 数控编程中的变量按作用域可分为三类:局部变量、全局变量、系统变量。#1~#33是局部变量,局部变量只在本程序内起作用;#100~#199、#500~#599(现在很多系统都不止599了)是全局变量,在所有程序中起作用;#1000以上的是系统变量,控制着机床运行的各种状态,不要轻易修改。局部变量不能在程序运行时再加以修改,只能由程序控制。在使用局部变量时,必须在程序中赋初值。全局变量可以程序运行时人为地加以修改。在使用全局变量时,可以不在程序中赋初值,而在加工时打入所需值。补偿量的本质是变量。 #0是空变量(相当于pascal的nil,C的NULL),不能给#0赋值。注意:空变量和0是不同的。正像在pascal里定义一个指针型变量p,则如下两句程序是不同的:p:=nil、p^:=0。(或者C语言里的p=NULL、*p=0)当#1为0时,G1X100Y#1相当于G1X100Y0,而当#1为空时,G1X100Y#1相当于G1X100。当#1为0时,G#1X100相当于G0X100,而当#1为空时,G#1X100相当于X100。 表示变量的#号后面的数也可以是表达式或变量。例如,已知#1=5,#2=30,#3=25,#4=0,#5=80则#6=#[#1]相当于#6=80;#[3+4]=128相当于#7=128;#8=#[#4]相当于#8为空;#9=#[#2-#3]相当于#9=80;G#4X#2*#1Y#[#4]相当于G0X150。 变量可以自增或自减,变量经过运算后的值可以赋给自身。例如,当前#1=3;则执行#1=#1 +1后#1的值是4。(相当于汇编语言里的INC AL;basic里的i=i+1;pascal里的inc(i);C 语言里的i++。)再如,当前#1=3,则执行#1=#1EQ3后,#1的值是1。 2.算术运算和逻辑运算:①算术运算就是加减乘除(+-*/)。计算四则混合运算式时,先算乘除后算加减,如果有括号则先算括号里的。例如1+2*(7-4)=7。通常计算机程序设计里的括号用圆括号表示,但数控编程里用方括号表示。数控编程里的圆括号表示注释(相当于汇编语言的分号、basic里的rem、pascal里的{}或(*…*)、C语言里的/*…*/。)②逻辑运算常见的有以下4种:与(and)、或(or)、非(not)、异或(xor)。与、或、非是基本逻辑运算,异或不是基本逻辑运算。A和B相异或的结果是AB+AB。“与”的运算规则是全1出1,有0出0,如1 and 1=1; 0 and 1=0;“或”的运算规则是全0出0,有1出1,如1 or 1=1; 0 or 1=1;“非”是单目运算符,即0变1,1变0。程序设计中的逻辑值(也叫布尔值,即“真”和“假”)在计算机中用1和0表示,通常1表示“真”,0表示“假”。如果是两个整数进行逻辑运算,则是这两个数的二进制的各位进行运算,例如5 and 6=4; 5 or 6=7。具体用法你可以回忆一下计算机程序设计中的用法,数控编程中也同样使用。and、or、not、xor四种运算符分别相当于汇编、basic或pascal里的and、or、not、xor;C语言里的&、|、!、^。③数控编程中也可以使用取余运算(mod),例如10 mod 3=1。mod相当于汇编、basic或pascal里的mo d、C语言的%。④数控编程中的比较运算符和汇编语言(指Intel80x86汇编语言)里的相同,即EQ(等于)、NE(不等于)、LT(小于)、LE(小于等于)、GT(大于)、GE(大于等于)。相当于b asic或pascal里的=、<>、<、<=、>、>=,C语言里的==、!=、<、<=、>、>=。 3.常用数学函数:数控编程中用到的函数主要是数学函数。一般数控系统均提供下列函数:

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

宏程序 裳华职业技术中专鲍新涛 宏程序概述 其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出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的数值赋

新代宏程序实例

新代宏程序实例(总2页) -CAL-FENGHAI.-(YICAI)-Company One1 -CAL-本页仅作为文档封面,使用请直接删除

1、REPEAT直到型循环 REPEAT <循环体> UNTIL <条件表达式> END_REPEAT; 说明:REPEAT直到型循环控制,先执行循环体,后判断条件表达式,当条件满足时退出循环。 例如: % @MACRO // 启动MACRO语法% @MACRO (宏指令开始) #1=-0.2 REPEAT REPEAT(重复)G01Z#1F80; G1X-20.F700; #2=#1-0.2; G1Z#2F80; G1X-53.F700; #1=#1-0.4; UNTIL (#1<-2.6) END_REPEAT; UNTIL(到…为止,在…以前)END(结束,终止) M30; 2、WHILE当型循环 WHILE <条件表达式> DO→<循环体>→END_WHILE; 说明:WHILE当型循环控制,先判断条件表达式,当条件满足时执行循环体,否则退出循环。 例如: % @MACRO; #1=-0.2; WHILE (#14>-2.6) DO WHILE(虽然; 在…期间; 与…同时) IF #1<-2.6THEN EXIT; EXIT(退出; 退场; 离开; 去世) END_IF; G01Z#1F80; G1X-20.F700; #2=#1-0.2; G1Z#2F80; G1X-53.F700; #1=#1-0.4; END_WHILE; M30 3、FOR循环 FOR 翻译:p rep.为,为了; 倾向于; 关于; 当作;

数控铣宏程序实例

第四章数控铣宏程序实例 §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;

数控宏程序的使用方法

数控宏程序的使用方法 Document serial number【KK89K-LLS98YT-SS8CB-SSUT-SST108】

数控宏程序的使用方法一、A类宏程序 1)变量的定义和替换 #i=#j 编程格式 G65 H01 P#i Q#j 例 G65 H01 P#101 Q1005; (#101=1005) G65 H01 P#101 Q-#112;(#101=-#112) 2)加法 #i=#j+#k 编程格式 G65 H02 P#i Q#j R#k 例 G65 H02 P#101 Q#102 R#103;(#101=#102+#103) 3)减法 #i=#j-#k 编程格式 G65 H03 P#i Q#j R#k 例 G65 H03 P#101 Q#102 R#103;(#101=#102-#103) 4)乘法#i=#j×#k 编程格式 G65 H04 P#i Q#j R#k 例 G65 H04 P#101 Q#102 R#103;(#101=#102×#103) 5)除法 #i=#j / #k 编程格式 G65 H05 P#i Q#j R#k 例 G65 H05 P#101 Q#102 R#103;(#101=#102/#103) 6)平方根 #i= 编程格式 G65 H21 P#i Q#j 例 G65 H21 P#101 Q#102;(#101= ) 7)#i=│#j│ 编程格式 G65 H22 P#i Q#j 例 G65 H22 P#101 Q#102;(#101=│#102│) 8)复合平方根1 #i= 编程格式 G65 H27 P#i Q#j R#k 例 G65 H27 P#101 Q#102 R#103;( #101= 9)复合平方根2 #i= 编程格式 G65 H28 P#i Q#j R#k 例 G65 H28 P#101 Q#102 R#103 1)逻辑或 #i=#j OR #k 编程格式 G65 H11 P#i Q#j R#k 例 G65 H11 P#101 Q#102 R#103;(#101=#102 OR #103) 2)逻辑与 #i=#j AND #k

新代宏程序实例

新代宏程序实例文件编码(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范例。

数控机床宏程序编程技巧实例

论文: 数控机床宏程序编程的技巧和实例 西北工业集团有限公司 白锋刚 2018年8月11日 前言 随着工业技术的飞速发展,产品形状越来越复杂,精度要求越来越高,产品更新换代越来越快,传统的设备已不能适应新要求。现在我国的制造业中已广泛地应用了数控车床、数控铣床、加工中心机床、数控磨床等数控机床。这些先进设备的加工过程都需要由程序来控制,需要由拥有高技能的人来操作。要发挥数控机床的高精度、高效率和高柔性,就要求操作人员具有优秀的编程能力。 常用的编程方法有手工编程和计算机编程。计算机编程的应用已非常广泛。与手工编程比较,在复杂曲面和型腔零件编程时效率高、 质量好。因此,许多人认为手工编程已不再重要,特别是比较难的宏程序编程也不再需要。只须了解一些基本的编程规则就可以了。这样的想法并不能全面。因为,计算机编程也有许多不足:1、程序数据量大,传输费时。2、修改或调整刀具补偿需要重新后置输出。 3、打刀或其他原因造成的断点时,很难及时复位。 手工编程是基础能力,是数控机床操作编程人员必须掌握的一种编程方法。手工编程能力是计算机编程的基础,是刀具轨迹设计

,轨迹修改,以及进行后置处理设计的依据。实践证明,手工编程能力强的人在计算机编程中才能速度快,程序质量高。 在程序中使用变量,通过对变量进行赋值及处理使程序具有特殊功能,这种有变量的程序叫宏程序。宏程序是数控系统厂家面向客户提供的的二次开发工具,是数控机床编程的最高级手工方式。合理有效的利用这个工具将极大地提升机床的加工能力。 作为一名从事数控车床、数控铣床、加工中心机床操作编程二十多年的技师,在平时的工作中,常常用宏程序来解决生产中的难题,因此对宏程序的编程使用积累了一些经验。在传授指导徒弟和与同事探讨中,总结了许多学习编制宏程序应注意的要点。有关宏编程的基础知识在许多书籍中讲过,我们在这里主要通过实例从编制技巧、要点上和大家讨论。 一、非圆曲面类的宏程序的编程技巧 1、非圆曲面可以分为两类; <1)、方程曲面,是可以用方程描述其零件轮廓的曲面的。如 抛物线、椭圆、双曲线、渐开线、摆线等。这种曲线可以用先求节点,再用线段或圆弧逼近的方式。以足够的轮廓精度加工出零件。选取的节点数目越多,轮廓的精度越高。然而节点的增多,用普通手工编程则计算量就会增加的非常大,数控程序也非常大,程序复杂也容易出错。不易调试。即使用计算机辅助编程,其数据传输量也非常大。而且调整尺寸补偿也很不方便。这时就显出宏程序的优势了,常常只须二、三十句就可以编好程序。而且理论上还可以根

宏程序变量说明

用户宏程序变量说明 变量普通加工程序直接用数值指定G代码和移动距离;例如,G01 和 X100.0。 使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI 面板操作改变。 #1=#2+100; G01 X#1 F300; 说明 变量的表示一般编程方法允许对变量命名,但用户宏程序不行。变量用变量符号(#) 和后面的变量号指定。 例如:#1 表达式可以用于指定变量号。此时,表达式必须封闭在括号中。 例如:#[#1+#2-12] 变量的类型变量根据变量号可以分成四种类型。 变量号变量类型功能 #0 空变量该变量总是空,没有值能赋给该变量。 #1—#33 局部变量 局部变量只能用在宏程序中存储数据,例如,运算结果。 当断电时,局部变量被初始化为空。调用宏程序时,自变 量对局部变量赋值。 #100—#199 公共变量 #500—#999 公共变量在不同的宏程序中的意义相同。当断电时,变量

初始化为空。变量#500——#999 的数据保存,即使断电 也不丢失。 #1000—系统变量 系统变量用于读和写CNC 的各种数据,例如,刀具的当前 位置和补偿值。 注意 小数点的省略当在程序中定义变量值时,小数点可以省略。 例:当定义#1=123;变量#1 的实际值是123.000。 变量的引用在地址后指定变量号即可引用其变量值。当用表达式指定变量时,要把表达式放在括号中。 例如:G01X[#1+#2]F#3; 被引用变量的值根据地址的最小设定单位自动地舍入。 例如: 当系统的最小输入增量为1/1000mm 单位,指令G00X#1,并将 12.3456 赋值给变量#1,实际指令值为G00X12.346;。 改变引用变量的值的符号,要把负号(—)放在#的前面。 例如:G00X—#1; (a)引用 当引用一个未定义的变量时,地址本身也被忽略。 例如: 当变量#1 的值是0,并且变量#2 的值是空时,G00X#1 Y#2 的执行结果为G00X0; (b)运算 除了用<空>赋值以外,其余情况下<空>与0 相同。

SIEMENS系统宏程序(精校版本)

SIEMENS系统宏程序应用 一、计算参数 SIEMENS系统宏程序应用的计算参数如下: R0~R99----可自由使用; R100~R249----加工循环传递参数(如程序中没有使用加工循环,这部分参数可自由使用); R250~R299----加工循环内部计算参数(如程序中没有使用加工循环,这部分参数可自由使用)。 二、赋值方式 为程序的地址字赋值时,在地址字之后应使用“=”,N、G、L除外。 例:G00 X=R2 三、控制指令 控制指令主要有: IF 条件 GOTOF 标号 IF 条件 GOTOB 标号 说明: IF----如果满足条件,跳转到标号处;如果不满足条件,执行下一条指令; GOTOF----向前跳转; GOTOB----向后跳转; 标号----目标程序段的标记符,必须要由2~8个字母或数字组成,其中开始两个符号必须是字母或下划线。标记符必须位于程序段首;如果程序段有顺序号字,标记符必须紧跟顺序号字;标记符后面必须为冒号。 条件----计算表达式,通常用比较运算表达式,比较运算符见表6.6。 表6.6 比较运算符

比较运算符意义 == 等于 <> 不等于 > 大于 < 小于 >= 大于或等于 <= 小于或等于 例: …… N10 IF R1<10 GOTOF LAB1 …… N100 LAB1: G0 Z80 四、应用举例 例6-5:用镗孔循环 LCYC85加工图6.6所示矩阵排列孔,无孔底停留时间,安全间隙2mm。 N10 G0 G17 G90 F1000 T2 D2 S500 M3 N20 X10 Y10 Z105 N30 R1=0 N40 R101=105 R102=2 R103=102 R104=77 R105=0 R107=200 R108=100 N50 R115=85 R116=30 R117=20 R118=10 R119=5 R120=0 R121=10 N60 MARKE1:LCYC60 N70 R1=R1+1 R117=R117+10 N80 IF R1<5 GOTOB MARKE1 N90 G0 G90 X10 Y10 Z105 N100 M2

宏程序自变量的两种赋值方法

自变量的两种赋值方法 注意:I J K 有先后顺序。 宏程序的调用格式,自变量的赋值不能出现G L N O P 非模态指令:G65P××××L××××; 模态指令: G66 P××××L××××;

用户宏程序本体 1,格式O××××(O9000~O9999) #24=#41 #18COS[#1] G0X#24 . . . IF[#20G[#6]G0]709 M9M99 用9开头便于长期保存,在用户宏程序本体 中可以使用普通的NL语句采用变量的NL指令,运算指令和控制指令。2,变量的表示与引用(用#表示变量数据) A.[#]和后面的数据#1 #2 #3 ………… 用公式表示#[#1+ #2 +#3] B.引用<地址>#i--<地址>#i #1等于空和等于零的区别 所以除取代外<空>与零相同。 1,所以O N 后面禁止用变量,变量号不得直接用变量号代替。 例如#30=5 #5=#30 #[#30]=#5 不得用##30 2,变量值不得超过各变量的最大允许值 3,小数点用于末位(默认) 4,未赋值变量用<空>#0表示空不等于0 5,引用未赋值的变量地址被忽略。 变量的类型按变量符合分为三种:局部变量公共变量系统变量。 局部变量(#1-#33)用于自变量空(复位开关机时) 分为5级,每级之间互不相同。 0级和1级的#1是两个不同的值。 每级A值不同用完保存用下一级变量。

公共变量:(#100~#149 #500~#531)#100~#149不保留与局部变量 相同 断电后#500~#531数值保留。 系统变量:(>#1000)特定 运算符号 1)变量的定义和置换#i=#j #1=2 #2=#1 2)加法运算#i=#1+#k #i=#j-#k #i=#jor#k 3)乘法运算#i=#j-#k #i=#j/#k #i=#jAnd#k 4)函数#i=Sin[#j]A Sin[#j] #i=Cos[#j]A Cos [#j] #i=tan[#j]A tan [#j] #i=BIN[#j] 十进制转二进制 #i=BCD[#j] 二进制转十进制 #i=Round[#j] 四舍五入 #i=FIX[#j] 上取整 #i=FUP[#j] 下取整 #i=LN[#j] 自然对数 #i=EXP[#j] 指数对数 混合运算时先函数在乘除再加减,运算顺序的改变用[]先运算[] 最多有5重(包括函数中的括号) 控制命令

宏程序使用的优点

宏程序使用的优点 随着数控加工设备技术的进步与发展,数控机床已成为模具加工技术中不可缺少的关键设备。然而,模具产品的小批量,多品种,短周期等特点,为数控机床的编程带来很大不便,既增加了编程的工作量,又影响着加工的进度。实际工作中应用宏程序,较好地解决了规则对称几何形状的零件加工,简化了程序编制,赢得了时间,为模具生产中数控机床的编程提供了一种简捷的方式方法 1用户宏程序分为宏A和宏B 1)变量 变量分为四类:空变量(#0);局部变量(#1-#33);公共变量(#100-#199),(#500-#999), 系统变量(#1000- ) 2)宏程序语句使用 转移和循环:在程序中,使用GOTO语句和IF语句可以改变控制的流向。 有三种转移和循环可供使用 (1)GOTO语句(无条件转移) (2)IF语句(条件转移:IF…THEN…)或IF[〈条件表达式〉]GOTO N (3)WHILE语句(当…时循环) 2用户宏程序的特点及应用 1)高效快捷:数控加工中常常会遇到数量少,品种繁多,有规则几何形状的工件,找出它们的之间共同点,把这些共同点设定为局部变量(局部变量只能用在宏程序中存储数据)应用到程序中,就能达到举一反三,事半功倍的效果 2)经济:在实际生产中常常有各式各样带斜面型腔零件,此类零件结构相似,但品种多数量少,斜面角度变化不定,按常规加工方法,往往采用成形刀加工。但零件品种多,所以成形刀需要量很大,订做一把成形铣刀要比普通铣刀费用高出2~3倍,为了降低加工成本减化管理程序,应用宏程序加工,此类问题即可解决。减少内存,使程序更加简化 3)应用范围广:宏程序还可以应用到数控加工的其它环节。如它可对刀具长度补偿(H),刀具半径补偿(D),进给量(F),主轴转速(S),G代码,M代码等进行设置,也能有效提高加工效率。用宏程序中系统变量编制加工零件孔系,则十分简捷方便 4)程序简便:占用内存少 要灵活恰当应用宏程序,有以下几点必须清楚。首先要对所加工的工件有一个整体认识。其次要熟练掌握机床的各种基本功能(如:镜象,旋转,极坐标等)。最后要掌握宏程序的编程原理,编程格式及变量应用,就能解决实际加工中各种有规则几何形状的工件(如:铣大平面,斜面,深型腔,放射槽轮廓,曲线,钻排孔,镗孔等重复性的加工程序)。在实际加工中应用宏程序,使程序编制简单化,且通用性强,也使刀具品种,费用显著降低,取得了良好的生产效益和加工成果

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为嵌入式图表的编号或名称。如

浅谈数控编程中的宏程序

浅谈数控编程中的宏程序 江苏经贸技师学院王军歌 [摘要] 随着现代制造技术的发展和数控机床的日益普及,数控加工在我国得到广泛的应用,数控加工中很重要的一部分就是编程,从CAD/CAM软件出现以后,人们过分依赖CAD/CAM软件,使得无论程序大小,加工难易编程人员习惯使用各种CAD/CAM软件,而把手工编程遗忘了,尤其是博大精深的宏程序。宏程序在数控编程中不应该被遗忘,而是应该很好的使用,它有着自动编程软件不可取代的优势。 [关键词] 数控编程宏程序CAD/CAM 数控加工 一.引言 在CAD/CAM软件普遍存在的今天,手工编程的应用空间日趋减小,数控世界有一种说法很流行“宏程序已经没有什么用”,其实任何数控系统都有很多指令在一般情况下用不着,那他们是否也没有用呢?这显然不对,对宏程序也是如此,原因只是大家对宏程序不熟悉,往往误以为宏程序深不可测而已,在实际工作中,宏程序确实也有广泛的应用空间,并且能够方便手工编程,锻炼操作者的编程能力,帮助操作者更加深入的了解自动编程的本质。 二.认识宏程序 在一般的程序编制中程序字为常量,一个程序只能描述一个几何形状,当工件形状没有发生改变但是尺寸发生改变时,就没有办法了,只能重新进行编程,缺乏灵活性和适用性。当我们所要加工的零件如果形状没有发生变化只是尺寸发生了一定的变化的情况时,我们只需要在程序中给要发生变化的尺寸加上几个变量再加上必要的计算公式就可以了,当尺寸发生变化时只要改变这几个变量的赋值参数就可以了。 它是利用对变量的赋值和表达式来进行对程序的编辑的,这种有变量的程序叫宏程序。 三.宏程序与自动编程的比较 自动编程有自动编程的好处,但是自动编程也有其不利于加工方面的问题,在加工不规律的曲面时利用自动编程确实是很好,但是在加工有规律的曲面时就不见得了,加工有规律的工件的时候用宏程序加工要比用自动编程软件要强的

新代宏程序实例

1、REPEAT直到型循环 REPEAT <循环体> UNTIL <条件表达式> END_REPEAT; 说明:REPEAT直到型循环控制,先执行循环体,后判断条件表达式,当条件满足时退出循环。 例如: % @MACRO // 启动MACRO语法% @MACRO (宏指令开始) #1=-0.2 REPEAT REPEAT(重复) G01Z#1F80; G1X-20.F700; #2=#1-0.2; G1Z#2F80; G1X-53.F700; #1=#1-0.4; UNTIL (#1<-2.6) END_REPEAT; UNTIL(到…为止,在…以前)END(结束,终止)M30; 2、WHILE当型循环 WHILE <条件表达式> DO→<循环体>→END_WHILE; 说明:WHILE当型循环控制,先判断条件表达式,当条件满足时执行循环体,否则退出循环。例如: % @MACRO; #1=-0.2; WHILE (#14>-2.6) DO WHILE(虽然; 在…期间; 与…同时) IF #1<-2.6THEN EXIT; EXIT(退出; 退场; 离开; 去世) END_IF; G01Z#1F80; G1X-20.F700; #2=#1-0.2; G1Z#2F80; G1X-53.F700; #1=#1-0.4; END_WHILE; M30 3、FOR循环 FOR 翻译:p rep.为,为了; 倾向于; 关于; 当作; conj.因为,由于; FOR <循环变量> := <表达式1> TO <表达式2> [ BY <表达式3>] DO <循环体> END_FOR;

宏程序应用指令

宏程序应用指令

————————————————————————————————作者: ————————————————————————————————日期: ?

宏程序跳转及重复指令 GOTOS:跳回到程序开始 GOTOB:以程序开始方向的带跳转目标的跳转指令。 GOTOF:以程序末尾方向的带跳转目标的跳转指令。 GOTO: 带跳转目标查找的跳转指令。查找先向程序末尾方向进行, 然后再从程序开始处进行查找。 GOTOC:与GOTO 有区别的是,报警14080“跳转目标未找到”被抑制。这表示,在跳转目标查找没有结果情况下不中断程序加工,而以指令GOTOC下面的程序行继续进行。? 跳转条件允许使用所有的比较运算和逻辑运算(结果:TRUE 或者FALSE)。如果这种运算的结果为TRUE,则执行程序跳转。TRUE(真实、准确) FALSE(错误) 特殊情况一般情况 IF <跳转条件>=TRUE GOTOB<跳转目标> IF<跳转条件>= GOTOB <跳转目标> IF <跳转条件>=TRUEGOTOF <跳转目 标> IF <跳转条件>= GOTOF <跳转目标> IF<跳转条件>=TRUE GOTO<跳转目 标> IF <跳转条件>= GOTO<跳转目标> IF <跳转条件>=TRUE GOTOC <跳转目标>IF <跳转条件>= GOTOC <跳转目标>

程序分支(CASE ... OF ... DEFAULT ...) CASE 功能可以检测一个变量或者一个计算函数当前值 (类型:INT), 根据结果跳转到程序中的不同位置。 句法:CASE(<表达式>)OF <常量_1> GOTOF <跳转目标_1> <常量_2> GOTOF < 跳转目标_2> ...DEFAULT GOTOF <跳转目标_n> 常量:变量或者计算函数首先规定的恒定值 DEFAULT:对于变量或者计算函数没有采用规定值的情况,可以用DEFAULT 指令确定跳转目标。 N20 DEF INT VAR1VAR2 VAR3 N30 CASE(VAR1+VAR2-VAR3) OF 7 GOTOF Label_1 9 GOTOF Label_2 DEFAU LTGOTOF Label_3 N40 Label_1: G0 X1 Y1 N50 Label_2: G0X2 Y2 N60 Label_3: G0 X3 Y3 CASE 指令由N30 定义下列程序分支可行性: 1. 如果计算函数值 VAR1+VAR2-VAR3 = 7,则跳转到带有跳转标记定义的程序段"Label_1" (→N40)。 2. 如果计算函数值VAR1+VAR2-VAR3 = 9,则跳转到带有跳转标记定义的程序段"Label_2" (→ N50)。

数控宏程序实例

第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 自变量赋值的地址和变量号码之间的对应关系

时使用表4—1及表4—2中的两组自变量赋予值。系统可以根据使用的字母自动判断自变量赋值的类型。 7.4 变量的控制和运算指令 7.4.1 算术运算和逻辑运算 在变量之间,变量和常量之间,可以进行各种运算,常用的见表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 #1=0 #2=1 N1 IF [#2 GT 10] GOTO 2 #1=#1+#2 #2=#2+1 GOTO 1 N2 M30 3循环语句(WHILE 语句) 语句格式为: WHILE [条件式] DO m (m=1,2,3) … END m 当条件语句成立时,程序执行从DO m到END m之间的程序段;如果条件不成立,则执行

相关文档
最新文档