宏程序资料

合集下载

宏程序.doc122

宏程序.doc122

椭圆球宏程序:(以X²/60²+Y²/40²+Z²/30²=1为例)在XY平面60为长半轴,40为短半轴角度分层在XZ平面60为长半轴,40为短半轴O0001; 在YZ平面40为长半轴,30为短半轴G40G80;G90G54G0X0Y0M3S1000;G0Z5.;G1Z0.F100;#1=90.; (а90°-0°)N20#2=O.; (β0°-360°)#6=30*sin[#1]-30; (#6表示Z向变量)#7=40*cos[#1]; (#7表示短半轴变量)#4=60*cos[#1]; (#4表示长半轴变量)G1X#4Y0.F200; (每层下刀点)G1Z[#6]F200; (下刀)N10WHILE[#2LE360.]DO1; (#2判断语句)#5=#4*COS[#2]+刀半径; (#5表示X方向变量)#8=#7*SIN[#2]; (#6表示Y方向变量)G1X#5Y#8F200; (每层下刀点)#2=#2+0.5; (#2变量)END10; (结束)#1=#1-1.; (#2变量)IF[#1GE0.]GOTO20; (#1变量)GOZ100.;M30;Z方向分层O0001;G40G80;G90G54G0X100.Y40.M3S1000;G0Z30.;#1=-30.; (控制Z方向)#2=0.; (Z方向变量)N10#3=360.; (#3表示每层角度变量)G1Z[#1]F200; (#1表示Z方向下刀)#4=60*SQRT[1-#2*#2/900]+刀半径;(#4表示长半轴变量)#5=40*SQRT[1-#2*#2/900]; (#5示短半轴变量)N2#6=#4*COS[#3]; (#6表示每层X方向变量)#7=#5*SIN[#3]; (#7示每层Y方向变量)G1X#6Y#7F200; (每层下刀点)#3=#3-1; (#3变量)IF[#3GE0]GOTO2; (#3判断语句)#1=#1+2; (#1变量)#2=#2+2; (#2变量)IF[#2LE30.]GOTO1; (#2判断语句)G0Z100.;M30;半球宏程序:(以R20半球为例)角度分层O0001;G40G80;G90G54G0X0Y0M3S1000;G0X5.;Z5.;G1Z0.F200;#3=0; (角度变量)N10#1=20*SIN[#3]+刀半径;(#1=X方向变量)#2=20*COS[#3]-20.; (Z方向变量)G1X#1Y0.F100; (每层下刀点)Z#2; (下刀)G2I[-#1]; (圆弧切削)#3=#3+1; (#3变量)IF[#3LE90.]GOTO10; (#3判断语句)G0Z100.;M30;XY向变量O0001;G40G80;G90G54G0X0Y0M3S1000;G0X5.;Z5.;G1Z0.F100;#2=0; (Z方向变量)N10#1=SQRT[400-[20+#2]*[20+#2]]+刀半径;(X方向变量)G1X#1Y0.F100; (每层下刀点)Z#2; (下刀)G2I[-#1]; (圆弧切削)#2=#2-0.5; (Z方向变量)IF[#2GE-20.]GOTO10; (#2判断语句)G0Z100.;M30;天圆地方宏程序:(以上方Φ30,下方40*40,高20为例,用Φ12立铣刀为例)主程序:本题基本思路为以顶层圆的O0001; 四个节点和下方四个角点为G90G54G0X100.Y100.M3S1000; 贯穿,一个节点与两个角点G0Z50.; 为一部分,一个角点与四分之M98P0002; 一圆弧为一部分,两部分组成G68X0Y0R90.; 一个子程序,用旋转加工整图M98P0002; 型。

有关宏程序的总结归纳

有关宏程序的总结归纳

有关宏程序的总结归纳正弦曲线:-180…-90…0…90…180…270…360 -π…-2π...0 (2)π…π…32π…π2-50...-25...0...25...50...75 (100)#1=0#2=360 #3=1#4=50/180 (等同于180π即角度与弧度的转换) #5=10WHILE[#1LE#2] DO1 #10=#4*#1#11=SIN[#1]*[#5]G01 X[#10] Y[#11] F1000 #1=#1+#3 END1余弦曲线:(图同上) #1=-90 #2=270 #3=1#4=50/180 (等同于180π即角度与弧度的转换) #5=10WHILE[#1LE#2] DO1 #10=#4*#1+25 #11=COS[#1]*[#5]G01 X[#10] Y[#11] F1000 #1=#1+#3 END1例题:(具体尺寸同上)#1=0#2=360#3=1#4=50/180 (等同于即角度与弧度的转换)#5=10#24=50#25=50WHILE[#1LE#2] DO1#10=#4*#2-#24#11=SIN[#2]*[-#5]-#25G01 X[#10] Y[#11] F1000#2=#2-#3END1WHILE[#1LE#2] DO2#10=#4*#1-#24#11=SIN[#1]*[#5]+#25G01 X[#10] Y[#11] F1000#1=#1+#3END2注:如加刀具补偿可以把上面改为#1=-10、#2=370,两端都增大了10°以防撞到工件。

正多边形:#1=0#2=360#3=6 (正多边形的边数)#4=#2/#3 (每条边所对应的圆心角度)#5=100 (外接圆的半径)WHILE[#1LE#2]DO1#10=#5*COS[#1]#11=#5*SIN[#1]G01X[#10] Y[#11] F1000#1=#1+#4END1铣工篇专题一环切1.方法一:直接在G41/G42程序段修改刀具补偿号O1000 ; 子程序G54 G90 G00 X0 Y0 Z50; O0010;M03 S1000; G90 G01 Y60;G00 Z5; G01 X-30;M08; G01 Y0;G01 Z-10 F60; G03 X30 R30;G41 X30 D01 F100; G40 G01 X0;M98 P0010; M99;G41 X30 D02 F100; 补偿号刀具补偿半径M98 P0010; 1 25G41 X30 D03 F100; 2 15M98 P0010; 3 6.5G41 X30 D04 F100; 4 6M98 P0010;M05M09;M30;方法二:用宏变量表示刀具补偿号,利用循环修改刀具补偿号O0100G54 G90 G00 X0 Y0 Z50;M03 S1000;G00 Z5;M08;G01 Z-10 F60;#1=1;#2=4;WHILE[#1LE#2] DO1;G41 G01 X30 D#1 F100;G01 Y60;G01 X-30;G01 Y0;G03 X30 R30;G40 G01 X0;#1=#1+1;END1;G00 Z50;M05M09;M30;方法三:使用G10和子程序完成环切O0100;G54 G90 G00 X0 Y0 Z50;M03 S1000;G00 Z5;M08;G01 Z-10 F60;G10 L12P1 R25;M98 P0010;G10 L12 P1 R15;M98 P0010;G10 L12 P1 R6.5;M98 P0010;G10L12 P1 R6;M98 P0010;M05G00 Z50;M30;子程序:O0010;G90 G41G01 X30 D01 F100;G01Y60;G01 X-30;G01 Y0;G03 X30 R30;G40 G01 X0;M99;方法四:使用G10和循环完成环切O0011;G54 G90 G00 X0 Y0 Z50;M03 S1000;G00 Z5;M08;G01 Z-10 F60;#1=25.#2=6#3=9.25#5=1;WHILE[#5LE2] DO1;WHILE[#1GE#2]DO2;G10 L12 P1 R#1;G41 G01 X-30 D01;G03 X30 R30;G01Y60;G01 X-30;G01 Y0;G40 G01 X0;#1 =#1-#3;END2;#1=#4;#5=#5+1;END1;G00 Z50M05M30方法五:不使用刀具半径补偿,只使用宏变量编程G54 G90 G00 X0 Y0 Z50;M03 S1000;G00 Z5;M08;G01 Z-10 F60;#1=30;#2=60#3=25#4=9.25#5=6#6=1WHILE[#6LE2]DO1;WHILE[#5LE#3]DO2;#10=#1-#3#11=#2-#3G01X[-#10];G03 X[#10] R[#10];G01 Y[#11];G01 X[-#10];G01 G01 Y0;#3=#3-#4;END2;#3=#5;#6=#6+1;END1;G00Z50M05M30专题二简单立体曲面加工1.铣凸半球(只考虑轮廓没有刀具)方法一:使用角度为参数变量(原点在球心)O0001;G54 G90 G00 X0 Y0 Z50;S1000M03;#1=0;#2=90;#3=1;#4=15WHILE[#1LE#2]DO1;#5=COS[#1]* #4;#6=SIN[#1]* #4;G01X[#5]Y0F100;G01Z[#6];G02I[-#5];#1=#1+#3;END1;G00Z50M05;M30;方法二:使用函数进行编程O0002;G54 G90 G00 X0 Y0 Z50;S1000M03;#1=15;#2=15#3=0.3;#4=0G00X[#1]WHILE[#1GE#4]DO1;#5=SQRT[#2*#2-#1*#1];G01X[#1]Z[#5]F100;G02I[-#1];#1=#1-#3;END1;G00Z50;M05;M30;2.使用立铣刀铣凸半球(立铣刀半径为5)方法一:使用角度为参数编程铣凸半球O0003;G54 G90 G00 X0 Y0 Z50;S1000M03;#1=0;#2=90;#3=1;#6=15;#7=5;WHILE[#1LE#2]DO1;#4=COS[#1]*[#6]+[#7];#5=SIN[#1]*[#6];G00X[#4]Y0;G01X[#4]Z[#5]F100;G02I[-#4];#1=#1+#3;END1;G00Z50;M05;M30;方法二:使用函数方法编程铣外形O0004;G54 G90 G00 X0 Y0 Z50;S1000M03;#1=15;#3=0.5;#6=5;G00X[#1+#6];WHILE[#1GE0]DO1;#2=SQRT[15*15-#1*#1];G01X[#1+#6]Z[#2]F100;G02I[-#1-#6];#1=#1-#3;END1;G00Z50;M05;M30;3.使用球头刀铣内凹球(刀具半径为5,球的半径为5)O0005;G54 G90 G00 X0 Y0 Z50;S1000M03;#1=0;#2=5;#3=90;#4=1;#5=10#6=#5-#2WHILE[#1LE#3]DO1;#10=[#6]*SIN[#1];#11=-[#6]*COS[#1];G01X[#10]Z[#11]F100;G03I[-#10];#1=[#1]+[#4];END1;G00Z50;M05;M30;4.使用立铣刀铣内凹球(刀具半径为5,球的半径为10)O0006;G54 G90 G00 X0 Y0 Z50;S1000M03;#1=30;#2=10;#3=90;#4=1;#5=5;WHILE[#1LE#3]DO1;#10=[#2]*SIN[#1]-[#5];#11=-[#2]*COS[#1];G01X[#10]Z[#11]F100;G03I[-#10];#1=[#1]+[#4];END1;G00Z50;M05;M30;5.其他知识总结①G16 X R Y a ;极坐标编程G15;取消极坐标编程O0001;G92 X0 Y0Z100;G90 G00 Z5;M03 S1000;G16 G00 X33 Y90;G01 Z-10 F100;G41 G01 G91X5 Y-90 D01; G03 X7.07 Y135R5;G90 G03 X38 Y121 R38; G03 X28 Y121 R5;G02 X28 Y59 R28;G03 X38 Y59 R5;G03 X38 Y90 R38;G91 G03 X7.07 Y135 R5; G40 G01 X5 Y135;G90 G00 Z100;G15;M05;M30;O0002;G92 X0 Y0 Z100;G90 G00 Z5;M03 S1000;G16G00X34 Y90;G91 G41 G01 X4 Y-180 D01 F1000; G03 X8 Y180 R4;G90 G03 X38 Y121 R38;G03 X28 Y121 R5;G02 X28 Y59 R28;G03 X38 Y59 R5;G03 X38 Y90 R38;G91 G03 X8 Y-180 R4;G40 G01 X4 Y-180;G90 G00 Z50;G15;M05;M30;②螺旋下刀G02/G03G17X Y RG18Z X RG19Y Z R#1=1;WHILE[#1LE5]DO1G90 G02 I J Z[-#1]R ;#1=#1+#1;END1③倒角G01 X Y ,C ;倒直角G01X Y ,R ;倒圆角G02/G03X Y R ,R ;倒圆角。

宏程序基础知识

宏程序基础知识

瑞鹄汽车模具有限公司内部教材第一章宏程序基础知识第一节常量与变量的含义常量与变量的含义及编程案例数控程序中含有变量的程序称为宏程序。

虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。

常量普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。

变量使用用户宏程序时,数值可以直接指定或用变量指定。

当用变量时,变量值可用程序或用MDI面板上的操作改变。

#1=#2+100G01 X#1 F300变量用变量符号(#)和后面的变量号指定。

例如:#1表达式可以用于指定变量号。

此时,表达式必须封闭在括号中。

例如:#[#1+#2-12]变量根据变量号可以分成四种类型:1.空变量2.局部变量3.公共变量4.系统变量1.空变量:#0 该变量总是空,没有值能赋给该变量.2.局部变量:#1-#33局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空. 调用宏程序时,自变量对局部变量赋值.3.公共变量#100-#199 #500-#999公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失.4.系统变量:#1000以上的变量系统变量用于读和写CNC的各种数据,例如刀具补偿,当前位置信息,变量的引用为在程序中使用变量值,指定后跟变量号的地址。

当用表达式指定变量时,要把表达式放在括号中。

例如:G01X[#1+#2]F#3;被引用变量的值根据地址的最小设定单位自动地舍入。

例如:当G00X#1;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346.改变引用变量的值的符号,要把负号(-)放在#的前面。

例如:G00X-#1当引用未定义的变量时,变量及地址都被忽略。

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

A类宏程序

A类宏程序

A类宏程序二、教学过程1、宏程序的定义:其实质与子程序相似,是把一组实现某种功能的指令,以子程序的形式事先存储在系统存储器中,通过宏程序调用指令执行这一功能。

一组以子程序的形式存储并带有变量的程序称为用户宏程序,简称宏程序。

2、用户宏程序与普通程序的区别在于:在用户宏程序本体中,能使用变量,可以给变量赋值,变量间可以运算,程序可以跳转;而普通程序中,只能指定常量,常量之间不能运算,程序只能顺序执行,不能跳转,因此功能是固定的,不能变化。

用户宏功能是用户提高数控机床性能的一种特殊功能,在相类似工件的加工中巧用宏程序将起到事半功倍的效果。

3、用户宏程序的分:A类和B类两种,A类宏程序编译的加工程序,程序主体比较简单,但需记忆较多的宏指令,程序的可读性差;B类宏程序编译的程序,则具有较好的可读性,且只需记忆较少的指令代码。

4、A类宏程:(1)、变量a、变量的表示:一个变量由#符号和边量号组成,形式为#I(I=1、2、3…),如#100、#200、#5等。

b、变量的引用:将跟随在地址后的数值用变量来代替,即引入变量。

例 G01 X#100 Y#101 F#102;c、变量的种类:局部变量#1~#33 公共变量#100~#149、#500~#549 系统便量指固定用途的变量(2)、用户宏程序格式与调用a、宏程序格用户宏程序本体的编写格式与子程序的格式相同。

在用户宏程序本体中,可以使用普通的NC指令,采用变量的NC 指令、运算指令和控制指令。

格式如下:O x x x x;……# 26= # 4+ # 18 x Cos[# 1〕;G90 GOOX #26;…………IF[#22 GE # 9〕GOTO 10;……N 10 M 9 9b、宏程序的调用有两种形式:一种用M98,一种用G65 如G65 P0006 L5 X100 Y100 Z-30;(3)、A类宏程序的运算和转移a、A类宏程序的运算指令:G65 Hm P#i Q#j R#k ;b、A类宏程序的转移指令:G65 H80(H81、H82、H83、H94、H85、H86)…注意:类宏程的运算和转移指令见表2-4-1。

宏程序PPT课件

宏程序PPT课件

:
400 #11400
#11400
#13400
#12001 #12002 #12003 : #12200 : #12400
当偏置组数小于等于200时,也可以用#2001—— #2400
10
刀具补偿存储器C用G10指 令进行设定
H代码的几何补偿值 G10L10P R ; D代码的几何补偿值 G10L12P R ;
变量号
变量类型 功能
#1——#33
局部变量 局部变量只能用在宏 程序中存储数据,例 如运算结果。当断电 时局部变量被初始化 为空,调用宏程序时 自变量对局部变量赋 值。
7
FANUC宏程序的变量Ⅲ
变量号
变量类型 功能
#100—#199 #500—#999
公共变量
公共变量在不同的 宏程序中的意义相同 当断电时变量#100 #199初始化为空变量
数控加工中宏程序的编制方法
1
FANUC宏程序简介
在数控编程中,宏程序编程灵活、 高效、快捷。宏程序不仅可以实现 象子程序那样,对编制相同加工操 作的程序非常有用,还可以完成子 程序无法实现的特殊功能,例如, 型腔加工宏程序、固定加工循环宏 程序、球面加工宏程序、锥面加工 宏程序等。
2
FANUC宏程序特殊用法
#500 #999 的数据 保存即使断电也不丢 失
8
FANUC宏程序的变量Ⅳ
变量号
变量类型 功能
#1000——
系统变量 系统变量用于读和 写CNC 运行时各种数 据的变化例如刀具的 当前位置和补偿值等
9
刀具补偿存储器C的系统变量
补偿 刀具长度补偿(H) 刀具半径补偿(D) 号 几何补偿 磨损补偿 几何补偿 磨损补偿

宏程序简述

宏程序简述

EQ 等于 NE 不等于GT 大于 LT 小于GE 大于等于 LE 小于等于一变量普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。

使用用户宏程序时,数值可以直接指定或用变量指定。

当用变量时,变量值可用程序或用MDI面板上的操作改变。

#1=#2+100G01 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报警NO.111.小数点的省略当在程序中定义变量值时,小数点可以省略。

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

变量的引用为在程序中使用变量值,指定后跟变量号的地址。

当用表达式指定变量时,要把表达式放在括号中。

例如:G01X[#1+#2]F#3;被引用变量的值根据地址的最小设定单位自动地舍入。

例如:当G00X#/;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346.改变引用变量的值的符号,要把负号(-)放在#的前面。

宏程序




圆的解析方程: 圆的参数方程:


G54G90 G00X0.Y0. Z100. M03S1000 Z10. G01Z-1.F50下刀 G01Z-1.F50下刀 #1=0 WHILE[ #1 LE 360 ] DO1 #2=25x COS #1 #3=25x SIN #1 G01X#2Y#3F300 #1=#1+0.5 END1 G01Z10. G00Z100. X0Y0 M05 M30 快速点定位
当条件满足时,程序就跳转到同一程序 中语句标号为n的语句上继续执行 当条件不满足时,程序执行下一条语句
条件转移语句
WHILE [ 条件表达式 ] DO m ... … END m 当条件满足时,从DO m到ENDm之间 的程序就重复执行。 当条件不满足时,程序就执行ENDm下 一条语句
宏程序嵌套
倒圆角
倒圆角
倒45°角
上圆下方
圆周均布钻孔
圆周上孔的个数为#2
程序说明
圆周均布的孔,其每一个孔的角度都是相 同的,并且距离相同。
程序
G54G90 G00X0.Y0. Z100. M03S1000 Z10. #1=(半径) #1=(半径) #2 =(孔的个数) =(孔的个数 孔的个数) #3=0 WHILE[ #3 LT 360 ] DO1 #4=#1 x sin #3 #5=#1 xcos#3 G73X#4Y#5ZG73X#4Y#5Z-10R5Q2F100 #3=360/#2+#3 END1 G80G01Z10. G00Z100. X0Y0 M05 M30
宏程序中变量的类型
变量号范围 上限 下限 变量类型 描述
#0
空变量
null变量中没有数值,定义为#0变量。它是空变量。 null变量中没有数值,定义为#0变量。它是空变量。宏程序可 变量中没有数值 #0变量 以读取该变量,但不能给它赋值,也就不能赋给他数据 以读取该变量,但不能给它赋值, local变量仅是暂时的,宏程序中用它保存某些数据。 local变量仅是暂时的,宏程序中用它保存某些数据。调用宏 变量仅是暂时的 程序时,局部变量就会被赋值。当用户完成宏程序的调用( 程序时,局部变量就会被赋值。当用户完成宏程序的调用(使 用辅助功能M99 或切断控制电源时, M99) 用辅助功能M99)或切断控制电源时,所有的局部变量又变为 空值

几种典型宏程序的编写方法

几种典型宏程序的编写方法宏程序(Macro)是一种用来简化重复性工作的程序设计技术。

它允许程序员定义一组指令序列,并在需要时通过调用宏来执行这些指令序列。

宏程序的编写方法有很多种,下面将介绍几种典型的编写方法。

1.参数化宏参数化宏是一种在宏调用时可以传入参数的宏。

通过参数化宏,程序员可以在不同的调用中使用不同的参数值,从而根据具体的需求定制相应的执行逻辑。

参数化宏可以增加宏的灵活性和通用性。

以下是一个简单的例子:```c#define SQUARE(x) ((x) * (x))int maiint num = 5;int square = SQUARE(num); // 宏调用printf("Square of %d is %d\n", num, square);return 0;```在上面的例子中,SQUARE宏接受一个参数x,并返回x的平方。

通过宏调用SQUARE(num),程序输出Square of 5 is 252.块宏块宏是一种可以包含多条语句的宏。

通过块宏,程序员可以将多个表达式封装在单个宏中,提高了代码的可读性和复用性。

块宏可以类似于函数或代码块的功能,但执行效率更高。

以下是一个示例:```c#define MAX(a, b) \({ typeof(a) _a = (a); \typeof(b) _b = (b); \_a>_b?_a:_b;})int maiint num1 = 5;int num2 = 10;int max = MAX(num1, num2); // 块宏调用printf("Max of %d and %d is %d\n", num1, num2, max);return 0;```在上面的例子中,MAX块宏比较两个数的大小,返回较大的数。

通过块宏的使用,可以减少代码中的重复,提高可读性。

3.条件编译宏条件编译宏是一种根据编译期间的宏定义情况选择性编译代码的宏。

数控高手必会的宏程序编程知识,你会吗?

数控高手必会的宏程序编程知识,你会吗?现在很多数控技术人员都不懂宏程序,他们认为有了自动编程软件,就不需要学习宏程序了。

事实上,宏程序的功能非常强大,比如编写一些批量、重复的程序,使用宏程序就只需要改动几个数据就可以了,没有必要进行大量重复的编程,可极大简化操作,大幅度提高工作效率。

宏程序可以使用变量进行算术运算、逻辑运算和函数的混合运算,还提供了循环语句、分支语句和子程序调用语句。

一般来说:宏程序适合图形一样,只是尺寸不同的系列零件的编程;适合工艺路径一样,只是位置参数不同的系列零件的编程;适合抛物线、椭圆、双曲线等没有插补指令的曲线编程。

01变量的表示和使用1. 变量表示#I(I=1,2,3,…)或#[<式子>]例:#5,#109,#501,#[#1+#2-12]2. 变量的使用1)地址字后面指定变量号或公式格式:<地址字>#I这里的“I”代表变量号例:F#103,设#103=15则为F15Z-#110,设#110=250 则为Z-250X[#24+#18*COS[#1]]2)变量号可用变量代替例:#[#30],设#30=3 则为#33)变量不能使用地址O,N,I例:下述方法下允许O#1;I#2 6.00×100.0;N#3Z200.0;4)变量号所对应的变量,对每个地址来说,都有具体数值范围例:#30=1100时,则M#30是不允许的5)#0为空变量,没有定义变量值的变量也是空变量6)变量值定义:程序定义时可省略小数点,例:#123=14902变量的种类1. 局部变量#1~#33一个在宏程序中局部使用的变量,其运算结果其他程序不可使用。

例:A宏程序B宏程序……#10=20X#10 不表示X20……断电后清空,调用宏程序时代入变量值2. 公共变量#100~#199,#500~#999各用户宏程序内公用的变量,其运算结果任何程序调用都相同。

例:上例中#10改用#100时,B宏程序中的X#100表示X20#100~#149 断电后清空#500~#531保持型变量(断电后不丢失)3. 系统变量固定用途的变量,其值取决于系统的状态例:#2001值为1号刀补X轴补偿值#5221值为X轴G54工件原点偏置值入时必须输入小数点,小数点省略时单位为μm03运算指令运算式的右边可以是常数、变量、函数、式子式中#j,#k也可为常量式子右边为变量号、运算式1. 定义#I=#j2. 算术运算#I=#j+#k#I=#j-#k#I=#j*#k#I=#j/#k3. 逻辑运算#I=#JOK#k#I=#JXOK#k#I=#JAND#k4. 函数#I=SIN[#j] 正弦#I=COS[#j] 余弦#I=TAN[#j] 正切#I=ATAN[#j] 反正切#I=SQRT[#j]平方根#I=ABS[#j]绝对值#I=ROUND[#j] 四舍五入化整#I=FIX[#j] 上取整#I=FUP[#j] 下取整#I=BIN[#j] BCD→BIN(二进制)#I=BCN[#j] BIN→BCD1) 角度单位为度例:90度30分为90.5度2) ATAN函数后的两个边长要用“/ ”隔开例:#1=ATAN[1]/[-1]时,#1为了35.03) ROUND用于语句中的地址,按各地址的最小设定单位进行四舍五入例:设#1=1.2345,#2=2.3456,设定单位1μmG91X-#1;X-1.235X-#2 F300;X-2.346X[#1+#2];X3.580未返回原处,应改为X[ROUND[#1]+ROUND[#2]];4) 取整后的绝对值比原值大为上取整,反之为下取整例:设#1=1.2,#2=-1.2时若#3=FUP[#1]时,则#3=2.0若#3=FIX[#1]时,则#3=1.0若#3=FUP[#2]时,则#3=-2.0若#3=FIX[#2]时,则#3=-1.05) 指令函数时,可只写开头2个字母例:ROUND→ROFIX→FI6) 优先级函数→乘除(*,1,AND)→加减(+,-,OR,XOR)例:#1=#2+#3*SIN[#4];7) 括号为中括号,最多5重,括号用于注释语句例:#1=SIN[[[#2+#3]*#4+#5]*#6];(3重)04转移与循环指令1. 无条件的转移格式:GOTO n;无条件地转移到程序段n去n:程序段号(1-99999)n也可用变量或表达式来代替GOTO10;GOTO #10;2. 条件转移IF [<条件表达式>] GOTO n;若满足<条件表达式>,下步操作转移到程序段号为n的程序段去。

宏程序1

FANUC宏程序宏程序用户宏程序:虽然子程序对编制相同加工操作的程序非常有用,但用户宏程序由于允许使用“变量算术和逻辑运算及条件转移”使得编制相同加工操作的程序更方便更容易,可将相同加工操作编为通用程序如:型腔加工宏程序和固定加工循环宏程序,使用时加工程序可用一条简单指令调出用户宏程序和调用子程序完全一样变量说明:1,变量的表示2,变量的类型3,变量值的范围普通加工程序直接用数值指定G代码和移动距离。

例如:G01和X100.0使用用户宏程序时数值可以直接指定或用变量指定,当用变量时,变量值可用程序或用MDI面板上的操作改变。

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

例如:#1表达式可以用于指定变量号此时表达式必须封闭在括号中。

例如:#[#1+#2-12]变量根据变量号可以分成四种类型。

变量号变量类型功能。

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

#1 #33 局部变量局部变量只能用在宏程序中存储数据,例如运算结果当断电时局部变量被初始化为空,调用宏程序时自变量对局部变量赋值#100 ,#199,#500 ,#999公共变量公共变量在不同的宏程序中的意义相同,当断电时变量#100 #199初始化为空变量#500 #999 的数据保存,即使断电也不丢失。

#1000 系统变量,系统变量用于读和写CNC 运行时各种数据的变化。

例如:刀具的当前位置和补偿值。

局部变量和公共变量可以有0值或下面范围中的值:-1047到-10-29或10-29到1047如果计算结果超出有效范围则发出P/S报警No.111#1=#2+100G01 X#1 F300! 小数点的省略! 变量的引用! 双轨迹双轨迹控制的公共变量! 未定义的变量当在程序中定义变量值时小数点可以省略例当定义#1=123 变量#1的实际值是123.000为在程序中使用变量值指定后跟变量号的地址当用表达式指定变量时要把表达式放在括号中例如G01X[#1+#2]F#3被引用变量的值根据地址的最小设定单位自动地舍入例如当G00X#/ 以1/1000mm 的单位执行时CNC 把12.3456 赋值给变量#1 实际指令值为G00X12.346;改变引用变量的值的符号要把负号放在#的前面例如G00X #1当引用未定义的变量时变量及地址字都被忽略例如当变量#1的值是0 并且变量#2的值是空时G00X#1 Y#2的执行结果为G00X0对双轨迹控制系统为每一轨迹都提供了单独的宏变量但是根据参数No.6036和6037的设定某些公共变量可同时用于两个轨迹当变量值未定义时这样的变量成为空变量变量#0 总是空变量它不能写只能读a 引用当引用一个未定义的变量时地址本身也被忽略当#1=&lt;空&gt; 当#1=0G90 X100 Y#1G90 X100G90 X100 Y#1G90 X100 Y0! 变量值的显示b 运算除了用&lt;空&gt;赋值以外其余情况下&lt;空&gt;与0 相同当#1=&lt;空&gt;时当#1=0时#2=#1#2=&lt;空&gt;#2=#1#2=0#2=#1﹡5#2=0#2=#1﹡5#2=0#2=#1+#1#2=0#2=#1+#1#2=0(c)条件表达式EQ和NE中的&lt;空&gt;不同于0当#1=&lt;空&gt;时当#1=0时#1 EQ #0成立#1 EQ #0不成立#1 NE #0成立#1 NE #0不成立#1 GE #0成立#1 GE #0不成立#1 GT #0不成立#1 GT #0不成立! 当变量值是空白时变量是空! 符号********表示溢出当变量的绝对值大于99999999 时或下溢出当变量的绝对值小于0.0000001时! 限制程序号顺序号和任选程序段跳转号不能使用变量例下面情况不能使用变量#1/#2G00X100.0;N#3Y200.0;2 系统变量说明! 接口信号! 刀具补偿值系统变量用于读和写NC内部数据例如刀具偏置值和当前位置数据但是某些系统变量只能读系统变量是自动控制和通用加工程序开发的基础是可编程机床控制器PMC 和用户宏程序之间交换的信号表15.2(a) 接口信号的系统变量变量号功能#1000 #1015#1032把16位信号从PMC送到用户宏程序变量#1000到#1015 用于按位读取信号变量#1032 用于一次读取一个16位信号#1100 #1115#1132把16 位信号从用户宏程序送到PMC 变量#1100到#1115 用于按位写信号变量#1132 用于一次写一个16位信号#1133 变量#1133 用于从用户宏程序一次写一个32 位的信号到PMC注意#1133的值为从99999999到+99999999详细情况请见连接说明书B-63503C-1用系统变量可以读和写刀具补偿值表15.2(b) 刀具补偿存储器C 的系统变量刀具长度补偿H 刀具半径补偿D 补偿号几何补偿磨损补偿几何补偿磨损补偿1200400#11001 #2201#11201 #2400#11400#10001#2001#10201#2200#10400#13001#13400#12001#12400当偏置组数小于等于200时也可使用#2001 #2400! 宏程序报警! 停止和信息显示! 时间信息表15.2(c) 宏程序报警的系统变量变量号功能#3000 当变量#3000 的值为0 200 时CNC 停止运行且报警在表达式后为不超过26个字符的报警信息CRT 屏幕上显示报警号和报警信息其中报警号为变量#3000的值加上3000例#3000=1 TOOL NOT FOUND报警屏幕上显示3001 TOOL NOT FOUND 刀具未找到程序执行停止并显示信息报警号功能#3006 在宏程序中指令#3006=1 MESSAGE时程序执行前面程序段并停止当最多到26 个字符的信息由控制输入和控制输出括住在同一程序段中编程时信息被显示在外部操作信息屏幕时间信息可以读和写表15.2(d) 时间信息的系统变量变量号功能#3001 该变量为一个计时器以1 毫秒为计时单位当电源接通时该变量值复位为0 当达到2147483648毫秒时该计时器的值返回到0#3002 该变量为一个计时器当循环起动灯亮时以一小时为单位计时该计时器即使在电源断电时也保存该值当达到9544.371767 小时该计时器的值返回到0#3011 该变量用于读取当前的曰期年/月/曰年/月/曰信息转换成十进制数例如1994 年9月8曰表示为19940928#3012 该变量用于读取当前的时间时/分/秒时/分/秒信息转换成十进制数例如下午3 点34分56秒表示为153456! 自动运行控制可以改变自动运行的控制状态表15.2(e) 自动运行控制的系统变量#3003#3003 单程序段辅助功能的完成0 有效等待1 无效等待2 有效不等待3 无效不等待当电源接通时该变量的值为0当单程序段停止无效时,即使单程序段开关设为ON 也不执行单程序段停止,当不指定等待辅助功能M S 和T 功能完成时,在辅助功能完成之前,程序执行到下列程序段而且分配完成信号DEN不输出表15.2(f) 自动运行控制的系统变量#3004#3004 进给暂停进给速度倍率准确停止0 有效有效有效1 无效有效有效2 有效无效有效3 无效无效有效4 有效有效无效5 无效有效无效6 有效无效无效7 无效无效无效当电源接通时该变量的值为0当进给暂停无效时1 当进给暂停按钮被按下时,机床在单段停止方式停止,但是当用变量#3003使单程序段方式无效时单程序段停止不执行。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数控加工宏程序编程思路及应用
用户宏程序编程
在数控编程中,宏程序编程灵活、高效、快捷,是加工编程的重要补充。宏程序
不仅可以实现象子程序那样,对编制相同加工操作的程序非常有用,还可以完成
子程序无法实现的特殊功能,例如,型腔加工宏程序、固定加工循环宏程序、球
面加工宏程序、锥面加工宏程序等。

一、构成
1 •变量
2 •算术或逻辑运算
3 •关系表达式
4 •编程实例
(一)宏变量:普通加工程序中指定G代码和移动距离时,直接使用数字值,如: X 100.0。
而在用户宏程序中,数字值可直接指定或使用变量号(称宏变量)。当采用宏变量时,其值
可在程序中修改或利用MDI面板操作进行修改。
例:#1=#2+100;
G01 X #1 F300;
Explanation( 说明)

宏变量的表示形式
当指定一宏变量时,用“#”后跟变量号的形式,如:#1。
宏变量号可用表达式指定,此时,表达式应包含在方括号内。
如:#[#1+#2-12]

宏变量的取值范围
局部变量和全局变量取值范围如下:

如计算结果无效(超出取值范围)时,发出编号111的错误警报。
小数点的省略
例:#1=123;
宏变量#1的实际值是123.000。
未赋值(定义)的变量
如果一个宏变量没有赋值(无定义),则该变量被当作空变量。宏变量#0通常情况下是一个
空变量,它只能读,不能写(赋值)。

FANUC数控系统变量表示形式为# 后跟1~4位数字,变量种类有四种:

变量号 变量类型 功能
#0
空变量该变量总是空, 没有任何值能赋给该变量
#1——#33
局部变量 局部变量只能用在宏程序中存储数据,例如运算

结果。当断电时局部变量被初始化为空,调用宏
程序时自变量对局部变量赋值。

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

电时变量#100 #199初始化为空变量
#500 #999 的数据保存即使断电也不丢失

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

的变化例如刀具的当前位置和补偿值等

(二)宏变量的引用
在程序中引用(使用)宏变量时,其格式为:在指令字地址后面跟宏变量号。当用表达式表示
变量时,表达式应包含在一对方括号内。
如:G01 X[#1+#2] F#3;
被引用宏变量的值会自动根据指令地址的最小输入单位进行圆整。例:程序段G00 X#1;,
给宏变量#1赋值12.3456,在1/1000mm的CNC上执行时,程序段实际解释为G00 X12.346;。
要使被引用的宏变量的值反号,在“#”前加前缀“-”即可。
如:G00 X-#1;
当引用未定义(赋值)的宏变量时,该变量前的指令地址被忽略。如:#1=0,#2=null(未赋
值),执行程序段G00 X#1 Y #2;,结果为G00 X0。
宏变量不能用于程序号、程序段顺序号、程序段跳段编号。如不能用于以下用途:
O#1;
/#2 G00 X100.0;
N#3 Y200.0;

二、运算符
运算符 含义

EQ
等于

NE
不等于

GT
大于

GE
大于或等于

LT
小于

LE
小于或等于

函 数 格 式 备 注
赋值
#i=#j
求和
求差
乘积
求商

#i=#j+#k
#i=#j-#k
#i=#j*#k
#i=#j/#k

正弦
余弦
正切
反正切

#i=SIN[#j]
#i=COS[#j]
#i=TAN[#j]
#i=ATAN[#J]/[#k]

角度用十进制度表示。

平方根t
绝对值
四舍五入
向下取整
向上取整

#i=SQRT[#j]
#i=ABS[#J]
#I=ROUND[#J] #I=FIX[#J] #I=FUP[#J]

或OR
异或XOR
与AND

#I=#J OR #K
#I=#J XOR #K
#I=#J

逻辑运算用二进制数按位操

十——二进制转换 二——十进制转换 #I=BIN[#J] #I=BCD[#J] 用于转换发送到PMC的信号
或从PMC 接收的信号

在上表中列出的操作可以使用变量完成。表中右边的表达式可用常量或变量与函数或运算符
组合表示。表达式中的变量#j和#k可用常量替换,也可用表达式替换。

说明:
1、角度单位
SIN、COS、TAN和ATAN 函数使用的角度单位为十进制度。
2、反正切函数ATAN
在反正切函数后指定两条边的长度,并用斜线隔开(y/x)。结果为0<=result<360。
如:#1=ATAN[1]/[-1];
#1的值为135.0。(第二象限)

3、四舍五入函数ROUND
当ROUND函数包含在数学或逻辑操作命令中,IF、WHILE语句中时,四舍五入在第一个
小数位进行。
如:#2=1.2345;
#1=ROUND[#2];
则#1=1.0。
当ROUND函数使用于NC语句中的指令地址后时,四舍五入按地址的最小精度进行。
例:钻孔程序,系统精度0.001mm
#1=1.2345;
#2=2.3456;
G00 G91 X-#1; 移动1.235mm
G01 X-#2; 移动2.346mm
G00 x[#1+#2]; 移动3.580mm

4、向上和向下取整
向上取整是指园整后的整数,其绝对值比原值的绝对值大,而向下园整是指园整后的整数,
其绝对值比原值的绝对值小。当对负数取整时,需特别注意。

例:
#1=1.2;
#3=FUP[#1]; 2.0
#3=FIX[#1]; 1.0
#2=-1.2;
#3=FUP[#2]; -1.0
#3=FIX[#1]; -2.0
5、函数缩写(Abbreviation)
可用函数的前两个字符表示该函数。
如:ROUND——RO,FIX——FI
6、运算优先级
1)函数;
2)乘除类运算(*、/、AND、MOD);
3)加减类运算(+、-、OR、XOR).

三、 FANUC宏程序的转移和循环
1. 无条件转移:GOTOn (n为顺序号,1——99999)
例:GOTO10为转移到N10程序段。
2. 条件转移:(IF语句)
1)IF [条件表达式] GOTOn
当指定的条件表达式满足时,转移到标有顺序号n的程序段,如果指定的条件表达式
不满足时,执行下个程序段。

2)IF [条件表达式] THEN
当指定的条件表达式满足时,执行预先决定的宏程序语句。
例:IF [#1EQ #2] THEN #3=0;

3. WHILE [条件表达式] DO m;
(m=1,2,3)
例题一
求1~10的和。
O9500;
#1=0; 清仓
#2=1; 初值
N1 IF[#2 GT 10] GOTO2; 终值
#1=#1+#2; 加法器
#2=#2+1; 增量值
GOTO1; 返回1
N2 M30; 结束
例程二
求1~10的和
O9501;
#1=0; 清仓
#2=1; 初值
WHILE [#2 LE 10] DO1; 终值
#1=#1+#2; 加法器
#2=#2+1; 增量值
END1;
M30;

相关文档
最新文档