FANUC用户宏程序学习教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用户宏程序
宏程序是指含有变量的子程序,在程序中调用用户宏程序的那条指令叫做用户宏指令(这里用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表示。
三、用户宏程序的应用
下面就以椭圆为例,介绍宏程序间接赋值法的应用。
1、椭圆的中心偏离工件原点一个Z向距离
如下图是一个椭圆,椭圆的中心偏离工件原点一个Z向距离W=40,欲车削1/4椭圆(图中粗线部分)的回转轮廓线,要求在数控程序中用任意一点D的Z值(用#3号变量指定)来表达该点的X值(用#5号变量指定),由此可知,这里是以Z作为自变量,以X作为应变量。根据椭圆的方程即可以写出自变量Z与应变量X之间的关系表达式。那么,如果我们在Z向分段,以0.5mm为一个步距给Z赋值,就可以得到相应的一个X值。然后把所得各个点的坐标值用直线插补方式来逼近,就可以得到椭圆的近似轨迹。步距取的越小,所得的轨迹就越接近椭圆。
如下图所示椭圆方程为:(式中X为半径值)
x
z
o
A
B
根据公式可得:(式中X值为直径值)
用宏参数间接赋值情况为:
#1=40(长半轴);#2=24(短半轴);#3=40(起点A的Z坐标);
#6=8(终点B的Z坐标);#7=0.5(Z变量步距);#5=X(应变量)则演算式为:#5=[#2+#2]* SQRT [1—[#3*#3]/[#1*#1]]
2、编制数控加工程序
分析编程时存在的问题
(1)由于工件坐标系和椭圆的坐标系不重合,Z向偏离的距离为
W=40,所以在编程时,直线插补中点的Z坐标需要进行相应的坐标变换。变换公式为:Z=#3-40;
(2)假定毛坯直径为Ф50。则可得该椭圆加工的最大切削余量为50(用#100全局变量指定),选定粗车循环时每刀切削双边余量2mm,留精加工余量1mm。
(3)由于椭圆上最高点的直径为48,而粗车循环时,可能存在空走刀情况,所以可用宏程序条件转向语句限制空走刀,即:如果计算得到X 值大于等于48,则不加工椭圆,返回重新判断计算。
编程如下:(FANUC-0i系统)
O0001;(主程序)
N10 G97 G99;(设定主轴转速为r/min,进给量为mm/r)
N20 T0101 S800 M03;(选1号粗车外圆刀,主轴800r/min,正转)
N30 G00 X100 Z100;(快速进刀到换刀点)
N40 G00 X52 Z2;(快速进刀到循环加工起点)
N50 #100=50;(设置最大切削余量为50)
N60 G65 P0002 A40 B24 C40 D8 K0.5;(调用椭圆加工宏程序)
N70 #100=#100-2;(每次切削深度双边2mm)
N80 IF [ #100 GE 1 ] GOTO 60;(判断毛坯余量是否大于等于1)
N90 IF [ #100 GE 0 ] GOTO 100;(判断毛坯余量是否大于等于0)
N100 G00 X100;(快速退刀到换刀点)
N110 Z100;
N120 T0202;(选2号精车外圆刀,及调用其刀具补偿值)
N130 G96 S120 M03;(改用恒线速切削,主轴120m/min,正转)
N140 G00 X52 Z2;(快速进刀到循环加工起点)
N150 #100=0;(设置切削余量为0)
N160 G65 P0002 A40 B24 C40 D8 K0.5;(调用椭圆加工宏程序)
N170 G00 X100;(快速退刀到换刀点)
N180 Z100;
N190 M30;(程序结束)
O0002;(宏程序)
N10 #5=[#2+#2]* SQRT [1—[#3*#3]/[#1*#1]];(X轴应变量计算式)N20 IF [#5+#100 GE 48 ] GOTO 60;(如果X直径大于等于48,
转向执行N60程序段)
N30 G01 X [#5+#100] Z[#3-40] F0.06 ;(椭圆插补)
N40 #3=#3-#6;(Z向步距,每次0.5mm)N50 IF [#3 GE #7 ] GOTO 10;(判断Z向是否走到终点)N60 G01 W-1;(Z负向直线插补1mm)
N70 G00 U5;(X向退刀5mm)
N80 Z2;(Z向退刀到离开端面2mm 处)