宏程序入门基础知识
文件格式
1、程序第一行需使用'%’宣告为标题行,并加入关键词'@MACRO’,否则将按ISO格式文档处理,从而导致部分功能无法使用。
2、每一行结束需加分号';’。
变量
宏程序使用的变量可分为三种
局部变量(Local variable, #1~#400)
系统变量(System variable, #1000~#31986)
公用变量(Global variable, @1~@165535)
不同型态的变量有不同的生命周期,以及读写规则。
在入门阶段我们只使用局部变量#1—#26,在宏程序中使用的局部变量,其生命周期只在当前宏程序执行时有效,当执行完毕离开时,相应局部变量将自动恢复成空白状态。
变量可以进行赋值
#3=15.;
#5=10.;
可以进行运算(支持+、-、*、/、()、[ ] 等)
#5=#5+1.;
#6=#3+#5;
#6的值等于26.
函数
GOTO
语法:GOTO n
说明:跳转到指定的N行号执行,如果程序中同时存在两个相同的N行号,则以该程序中第一个N行号为准。
% @MACRO
#2 = 10; //#2初始赋值为10.
GOTO 2; //跳转到行号2,注意GOTO后面的行号不需要写N。
#2=15; //#2第二次赋值为15.
N2 //行号2所在位置
.....
M30;
#2的最终值是10.,因为第二次赋值被跳过了,没有被执行。
IF
语法:
IF <条件> THEN
<陈述列表>
ELSEIF <条件> THEN
<陈述列表>
ELSE
<陈述列表>
END_IF;
说明:IF条件判断,可通过结合比较运算(> 大于、< 小于、= 等于、<> 不等于、<=小于等于、>=大于等于)、布尔运算(AND且、XOR互斥、OR或)判断条件是否成立,从而决定是否执行相应内容。
范例:
% @MACRO
#1 = 3.0; //#1赋值为3.
G01 G90 X0. Y0. F1000;
IF #1 = 1 THEN //如果#1等于1,则执行N1,否则不执行。
N1 X(1.0*#1) Y(1.0*#1);
ELSEIF #1 = 2 THEN //再如果#1等于2,则执行N2,否则不执行。
N2 X(2.0*#1) Y(2.0*#1);
ELSEIF #1 = 3 THEN //再如果#1等于3,则执行N3,否则不执行。
N3 X(3.0*#1) Y(3.0*#1);
ELSE //如果以上条件都不成立,则执行N4
N4 X(4.0*#1) Y(4.0*#1);
END_IF; //结束IF语句。
M30;
以上范例是多重条件判断,由于#1=3.,最终被执行的只有行号3的内容。
注释
语法:
(* <陈述列表> *)
// <陈述列表>
说明:'(* ’,' *)’需要成对出现,可注释多行;'//’仅能注释位于其后的内容,作用于单行。程序注释内容不会被系统执行,程序注释主要是为了让宏程序易于阅读。
范例一:单行注释
% @MACRO
G00 G90 X0. Y0.; // 移动回原点
M30;
范例二:区块注释
% @MACRO
(*
此区块为注释区,
不管内容为何并不会影响以下程序执行。
*)
G00 G90 X0. Y0.;
G00 G90 X10. Y0.;
G00 G90 X10. Y10.;
G00 G90 X0. Y10.;
G00 G90 X0. Y0.;
M30;
自增自减
% @MACRO
G71
#3=5.
IF #3>0 THEN
G0 G91 X10.;
#3=#3-1.
END_IF;
M30;
以上程序#3被初始赋值为5.,再使用判断语句判断#3是否大于0,显而易见,条件是满足的,所以IF和END_IF之间的内容会被执行,X轴向正向移动10mm,#3-1.=4.,再次判断#3是否大于0,若条件成立则会再次执行IF和END_IF之间的内容,如次往复循环,直到#3<=0为止,所以X轴总共会向正向移动50mm。在以上程序中,#3=#3-1.,每被执行一次,#3自身减1,这就是变量的自减;如#5=#5+2.5,这是变量的自增。
实例
原程序:
%
O0001
G90 G00 G40 G49 G80 G69
G91 G28 Z0
G90 G71 G00 G17
T1 M6
( Taper flat end [锥度平底]A10-0.20 )
G90 G00 G54 X0.0 Y-15.315 B-104.481 C-90.0 S25000 M03 M08
G43 H1 Z33.
G01 Z30.219 F600
Y-15.265 Z30.263 B-104.315 C-89.906 F1000
//此处为程序主体,由CAM软件生成,在此省略。
G00 Z35.219
G40 G49
M05 M09
G91 G28 Z0.
G28 X0 Y0 B0 C0
M30
%
*原程序只会在手镯表面加工一个心形图案。
修改后的程序:
%
O0001
G90 G00 G40 G49 G80 G69
G91 G28 Z0
G90 G71 G00 G17
T1 M6
#2=0.;
N2
( Taper flat end [锥度平底]A10-0.20 )
G90 G00 G54 X0.0 Y-15.315 B-104.481 C-90.0 S25000 M03 M08
G43 H1 Z33.
G01 Z30.219 F600
Y-15.265 Z30.263 B-104.315 C-89.906 F1000
//此处为程序主体,由CAM软件生成,在此省略。
G00 Z33.
#2=#2+18.;
G52 C#2;
IF #2<360 THEN
GOTO 2;
END_IF;
G40 G49
M05 M09
G91 G28 Z0.
G28 X0 Y0 B0 C0
M30
%
*通过使用宏程序将心形图案在手镯圆周陈列了19个,共20个图形,每18度一个。
以上是一个宏程序的简单实例,虽然实现同样的功能还有其它简便的方法,在这里我们也只是通过这样的方式去学习宏程序的用法。