子程序调用与宏定义的异同_新代系统:宏编程的基本概念和基本书写格式
用一组指令构成某功能,并且象子程序一样存储在存储器中,再把这些存储的功能由一个指令来代表,执行时只需写出这个代表指令,就可以执行其相应的功能。
在这里,所存储的一组指令叫做宏程序体(或用户宏程序),简称为用户宏。其代表指令称为用户宏命令,也称作宏程序调用指令。
使用时,编程人员只需会使用用户宏指令即可,而不必去关心宏程序体中的指令内容。
例如,在下述程序流程中,可以这样使用用户宏:
主程序
用户宏
……
O9011
G65 P9011 A10 I5;
……
……
X#1Y#4;
在这个程序的主程序中,用 G65 P9011调用用户宏程序 O9011,并且对用户宏中的变量赋值:#1=10、#4=5(A代表#1、I代表#4)。而在用户宏中未知量用变量#1及#4来代表。
用户宏有以下四个主要特征:
1)在用户用户宏程序中可以使用变量,即宏程序体中能含有复杂的表达式;
2)能够进行变量之间的各种运算;
3)可以用用户宏指令对变量进行赋值,就象许多高级语言中的带参函数或过程,实参能赋值给形参;
4)容易实现程序流程的控制。
使用用户宏时的主要方便之处在于由于可以用变量代替具体数值,因而在加工同一类的工件时.只得将实际的值赋予变量既可,而不需要对每个不同的零件都编一个程序。
下面再以一个示意性的例子来说明用户宏的概念。
当图 1-1中 A、B、U、V的尺寸分别为 A=20、B=10、U=40、V=20时,
其程序为:
O1;
G9l G00 X20.0 Y10.0;
G01 Y10.0;
X40.0;
Y-20.0;
X-40.0;
G00 X-20.0 Y-10.0;;
但是当图中 A、B、U、V尺寸变化时则又需要编一个类似的程序。
实际上,我们可以将程序写为:
O1;
G91 G00 XA YB;
G01Y V;
XU;
Y-V;
X-U;
G00 X-A Y-B;
此时可以将其中变量,用用户宏中的变量#i代替,而字母与#i的对应关
系为:
A——#1
B—— #2
U—— #21
V—— #22
则用户宏程序即可写成如下形式
09801;
G9l G00 X#l Y#2;
G01 Y#22;
X#21
Y-#22;
X-#21;
G00 X-#1 Y-#2;
M99;
使用时就可以用下述用户宏指令来调用:
G65 P9801 A20.0 B10.0 U40.0 V20.0;
由于地址码 A、B、U、V分别与变量#1、#2、#21、#22有着一定的对应关系,执行以上用户宏调用程序段时,实际数值就会将被赋予给对应的变量,其对应结果为#1=20.0,#2=10.0,#21=40.0,#22=20.0;然后被调用的用户宏程序再按所得到的变量值在宏程序中进行运算或执行指令,结束后返回主程序。
实际使用时,一般还需要在这一指令前再加上 F、S、T指令及进行坐标系设定等。
如上述所示,当加工同一类,但只是尺寸不同的工件时,只需改变用户宏命令的数值即可,而没有必要针对每一个零件都编一个程序。