宏程序能直接调用数控系统的圆弧插补、螺旋插补等指令,能有效地控制刀具路径,具有运算速度快、加工效率高、加工精度高、应用灵活,形式自由等特点,且加工程序简练易懂,可以实现普通编程难以实现的功能。因此,合理有效地利用传统数控机床的特性,编制简洁合理的小容量数控程序,有着非常现实的意义。
1 宏程序简介
宏程序(Macro Program)是以变量的组合,通过各种算术和逻辑运算、转移和循环等命令,而编制的一种可以灵活运用的程序,只要改变变量的值,即可以完成不同的加工和操作。宏程序可以简化程序的编制,提高工作效率;宏程序可以像子程序一样,用一个简单的指令调用。
宏程序与普通程序相比较,普通程序的程序字为常量,一个程序只能描述一个几何形状,缺乏灵活性和适用性;用户宏程序由于允许使用变量、算术和逻辑运算及条件转移等,使用户能编制各种复杂零件(如含非圆曲线轮廓的零件)的加工程序,同时对于不同零件或同一零件的不同部分但具有相似形状的轮廓,也可以通过宏程序来编程。
2 用户宏程序的编写格式
宏一般分为A类宏和B类宏,A类宏是以G65H××P#x×Q#×x R#×x的格式输入的,而B类宏程序,则是以直接的公式和语言输入的,能进行算术运算和逻辑运算,其与计算机高级语言c语言很相似,在FANUC 0i系统中应用比较广。B类宏程序主要用公用变量来进行运算操作。本文以FANUC0i数控系统B类宏程序来讲解。
2.1 数控系统的变量种类
宏程序是加工编程的重要补充。FANUC 0i数控系统变量表示形式为#后跟1~4位数字,变量种类有3种:
(1)局部变量。#l一#33是宏程序中局部使用的变量,只能在宏程序中存储数据,例如:运算结果。当断电时,局部变量被初始化为空。调用宏程序时,自变量对局部变量赋值。
(2)公用变量。用户可自由使用,其对于由主程序调用的各子程序及各宏程序来说,是可以公用的。#100-#149在关掉电源后,变量值全部被清除,而#00-#509在关掉电源后,变量值则可以保存。
(3)系统变量。由#后跟4位数字来定义,其能获取包含在机床处理器或NC内存中的只读或读,写信息,包括与机床处理器有关的交换参数、机床状态获取参数、加工参数等系统信息。
2.2 变量的表示和使用
(1)变量的表示。一个变量由梓符号和变量号组成,如:#I(I=1,2,3,...),也可用表达式来表示变量,如:#[<表达式>]。
2.3变量的赋值
(1)直接赋值。变量可在操作面板上用MDI直接赋值,也可在程序中以等式的方式赋值,但等号左边不能用表达式。
如:#100=100.0;#100=30.0+20.0
(2)引数赋值。宏程序体以子程序方式出现时,所用的变量可在宏调用时赋值。
如:G65 P1000 X100.0 Y30.0 Z20.0 F100.0;
2.4运算指令
编程中变量的用途有4个:
(1)运算;
(2)递增量或递减量;
(3)与一个表达式比较之后,决定是否实现跳转功能的条件分支;
(4)将变量值传送到零件程序中去。
其中运算又包括:算术运算(赋值、加、减、乘、除、绝对值、四舍五人整数化、舍去小数点以下部分);函数运算(正弦、余弦、正切、反正切、平方根);逻辑操作(与、或);比较操作(等于、大于、小于、大于或等于、小于或等于、不等于)。
2.5控制指令
控制指令起到控制程序流向的作用。
(1)无条件转移。转移到有顺序号N的程序段。
格式:GOTO n;N——程序段号
例:GOTO 1;转移至第一行
GOTO#10;转移至变量#10所决定的行
(2)条件转移。
格式:IF[<条件式>】GOTO n
例:IF【#l GT 10】GOTO 100;
1N100 G00 X10 Z15;
若条件表达式为满足时,则程序转到标有顺序号为N100的程序段,若条件不满足就继续执行下一个程序段。
(3)循环指令。
格式:WHILE[<条件式>】D0 m;(m=1,2,3)
ENDm
若条件满足时,执行DOm到ENDm之间的程序段;若条件不满足时,执行ENDm之后的程序段,省略WHILE语句只有DOm......ENDm,则从DOm到ENDm之问形成死循环。