《最新FANUC系统宏程序编程.doc》由会员分享,可在线阅读,更多相关《最新FANUC系统宏程序编程.doc(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateFANUC系统宏程序编程FANUC系统宏程序编程本系统宏程序体系采用FANUC系统宏程序B方式实现一 变量 普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的操作改变。 #1#2100G01 X#1 F300说明:变量的表示 计算机允许使用变量名,用户宏程
2、序不行。变量用变量符号(#)和后面的变量号指定。 例如:#1表达式可以用于指定变量号。此时,表达式必须封闭在括号中。 例如:#1+#2-12变量的类型变量根据变量号可以分成四种类型 变量号变量类型功能#0-#49局部变量局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为0.调用宏程序时,自变量对局部变量赋值,#50-#499公共变量公共变量在不同的宏程序中的意义相同.当断电时, 公共变量初始化为0.目前版本中,某些公众变量被赋予特殊意义(系统变量),用于描述CNC运行时各种数据的变化,这些变量包括:#449用于指明固定循环退刀模式(G98,G99), 如在G99方式
3、下,#449变量为1;如在G98方式下,#449变量为-1.#450用于指明当前程序段处于绝对坐标编程模式(G90)还是相对坐标编程模式(G91).如在G90方式下,#450变量为1;如在G91方式下,#450变量为-1.#451,#452,#453,#454用于存储刀具当前位置(X,Y,Z,A轴)在后期的版本中,将会安排专门的空间作为系统变量区.变量值的范围局部变量和公共变量在系统内采用浮点数方式存储小数点的省略当在程序中定义变量值时,小数点可以省略。 例:当定义#1123;变量#1的实际值是123.000。变量的引用为在程序中使用变量值,指定后跟变量号的地址。例如:G01X#1+#2F#3
4、或者G01X#1+#2F#3限制程序号,顺序号和任选程序段跳转号不能使用变量。 例:下面情况不能使用变量: 0#1; /#2G00X100.0;N#3Y200.0;二 算术运算和逻辑运算置换#I=#j算术运算加:#I=#j+#k,减:#I=#j-#k,乘:#I=#j*#k,除:#I=#j/#k。逻辑运算下一版本将增加以下函数调用: 与:#I=#J AND #k或:#I=#J OR #k,异:#I=#J XOR #k,函数正弦:#I=SIN#j,余弦:#I=COS#j 正切:#I=TAN#j(目前版本角度单位为弧度,后续版本将改为度)下一版本将增加以下函数调用: 反正切:#I=ATAN#j 平方
5、根:#I=SQRT#j,绝对值:#I=ABS#j 下取整:#I=FIX#j,上取整:#I=FUP#j 四舍五入:#I=ROUND#j 转移与循环在宏程序中,使用GOTO语句和IF语句可以改变程序的执行方向,转移和循环指令有3种。无条件的转移格式:GOTO n;n为程序的顺序号(19999)如GOTO 99,GOTO #10条件转移格式:IF条件式GOTO n条件式的运算符由两个字母组成,用于两个值的比较,运算符有: “EQ”表示“=”,“NE”表示“”,“GT”表示“”, “LT”表示“”,“GE”表示“”,“LE”表示“”。循环格式:WHLE 条件式 DO m;(m=1,2,3)END m说
6、明:(1)当条件满足时,执行从Do m到END m之间的程序,否则,转到END m后的程序段。(2)省略WHILE语句只有DO mEND m,则从DO m到END m之间形成死循环。(3)在一个子程序中,m不能重复,m取值范围0-999。三 程序举例铣椭圆:轨迹:椭圆程序代码如下:%99;定义第99号子程序G0 X0 Y0 Z3G0 Z1G1 Z-5 F150#1=0;循环变量#2=34;斜椭圆横向长度#3=24;斜椭圆纵向长度N1 #4=#2*COS#1;斜椭圆算法 #5=#3*SIN#1; 斜椭圆算法#10=#4*COS45-#5*SIN45; 斜椭圆算法, 45为斜椭圆横轴与X轴夹角#1
7、1=#4*SIN45+#5*COS45; 斜椭圆算法G41 P1.3 G1X#10Y#11;以左半径补偿,刀具半径1.3方式进行斜椭圆加工#1=#1+1;循环变量递增,递增量为1,该值越小,精度越高IF#1LT370GOTO1;斜椭圆加工退出条件判别G40G1X0Y0;半径补偿结束M99;子程序结束铣半球:轨迹:铣半球代码如下:%100;定义第99号子程序G90G0G54X-10.Y0M3S4500Z5. #1=0.5;循环变量,用于表示Z轴下刀深度WHILE#1LE5DO1,当下刀深度=5时,WHILE循环结束#2=5-#1;#2变量用于后续半球算法的解算#3=SQRT25-#2*#2 ;半
8、球算法G1Z-#1F20;加工代码 X-#3F500;加工代码G2Y0I#3;加工代码#1=#1+0.1;循环变量递增,递增量为0.1,该值越小,精度越高END1G0Z5.M5M99铣喇叭:轨迹:铣喇叭代码如下:%101;定义第99号子程序#1=0#2=0G0 Z1.5X15 Y0N11 #2=3*SIN#1 #3=3+3*1-COS#1 G01 Z-#2 F40X#3G03 X#3 I-#3G01 X15 Y0#1=#1+3IF #1 LE 90 GOTO 11G0 Z3M99固定循环指令G81的实现:本系统可通过宏指令实现用户自定义G指令,下面以G81指令实现为例进行讲解: G81循环可以
9、用于镗孔,执行程序G81 X Y Z A B C R L ,其过程如下: 1. 预备移动。 2. 以当前进给移动Z轴到Z位置。 3. Z轴以最大进给速度回缩到清除碎片的Z轴位置。例 1. 假定当前点的坐标为(1、2、3),被选平面为XY平面,执行下面的数控代码: G90 G81 G98 X4 Y5 Z1.5 R2.8 G90把距离模式设定为绝对距离模式,G98设定回缩模式是回到循环起始点,G81设定固定循环只运行一次。X数字和 X位置为 4,Y数字和 Y位置为 5,Z数字和Z位置为 1.5, R数字和清除碎片时Z轴位置为2.8,执行上面的程序会发生以下动作: 1. 平行于XY平面以最大进给速度
10、移动到坐标为(4、5、3) 的位置。 2. 平行于Z轴以最大进给速度移动到坐标为(4、5、2.8) 的位置。 3. 平行于Z轴进给到坐标为(4、5、1.5)的位置。 4. 平行于Z轴以最大进给速度移动到坐标为(4、5、3) 的位置。例2. 假定当前点的坐标为(1、2、3),被选平面为XY平面,执行下面的数控代码: G91 G81 G98 X4 Y5 Z-0.6 R1.8 L3 G91把距离模式设定为增量距离模式,G98设定回缩模式是回到循环起始点,G81设定固定循环次数为3次。X数字为4,Y数字为5,Z数字为-0.6,R数字为1.8, X初始位置为 5 (=1+4), Y初始位置为7 (=2+
11、5), Z初始位置为4.8 (=1.8+3),Z位置为4.2 (=4.8-0.6),固定循环开始前的Z位置为3。执行上面的程序会发生以下动作:第一个动作是沿Z轴以最大进给速度移动到坐标为(1、2、4.8)的位置,因为固定循环开始前的Z位置小于清除碎片的Z轴位置。第一个循环包括三个动作: 1. 平行于XY平面以最大进给速度移动到坐标为(5、7、4.8)的位置。 2. 平行于Z轴进给到坐标为(5、7、4.2) 的位置。 3. 平行于Z轴以最大进给速度移动到坐标为(5、7、4.8) 的位置。第二个循环包括三个动作,X位置为9 (=5+4),Y位置为12 (=7+5) 。 1. 平行于XY平面以最大进
12、给速度移动到坐标为(9、12、4.8)的位置。 2. 平行于Z轴进给到坐标为(9、12、4.2) 的位置。 3. 平行于Z轴以最大进给速度移动到坐标为(9、12、4.8) 的位置。第三个循环包括三个动作,X位置为13 (=9+4),Y位置为17 (=12+5)。 1. 平行于XY平面以最大进给速度移动到坐标为(13、17、4.8)的位置。 2. 平行于Z轴进给到坐标为(13、17、4.2) 的位置。 3. 平行于Z轴以最大进给速度移动到坐标为(13、17、4.8) 的位置。G81实现代码如下:(#490 X #491 Y #492 Z #493 R #494 L) ;#490变量接收G81指令
13、X功能字;#491变量接收G81指令Y功能字;#492变量接收G81指令Z功能字;#493变量接收G81指令R功能字;#494变量接收G81指令L功能字O9081;自定义G81指令子程序号,如预定义G103号指令,则该指令的子程序号;为9103#1=#451;#1变量用于接收刀具X轴位置,注意该位置坐标为工件坐标#2=#452; #2变量用于接收刀具Y轴位置,注意该位置坐标为工件坐标#3=#453; #3变量用于接收刀具Z轴位置,注意该位置坐标为工件坐标IF #450LT0 GOTO1;判别当前坐标模式为绝对坐标模式还是增量坐标模式(绝对坐标模式下变量初始化)#4=#493; #5=#492#
14、6=#490-#1#7=#491-#2GOTO2(增量坐标模式下变量初始化)N1 #4=#3+#493#5=#3+#492#6=#490#7=#491(初始化后,#4存放R点Z轴坐标,#5存放Z点Z轴坐标)(#6存放X轴增进值,#7存放Y轴增进值)N2 IF #449LT0*#4LT#3 GOTO3;如果固定循环返回指令为G98并且R点;低于固定循环前初始Z位置,执行N3指令(返回点位置为固定循环前Z位置);否则执行下条指令(返回点位置为R点Z位置)#8=#4GOTO4N3 #8=#3(#8存放退刀点Z轴坐标)N4 #11=#494;#11变量存储固定循环次数IF #4LT#3 GOTO5;如果R点Z位置低于固定循环前初始Z位置,执行N5指令G90G00Z#4;如果R点Z位置高于固定循环前初始Z位置,Z轴快速移动到R点N5 WHILE#11GT0DO13;执行固定循环G91G00X#6Y#7;XY快速移动至下一镗孔位置G90G00Z#4;Z轴快速移动至R点Z位置处G90G01Z#5;Z轴移动至Z点Z位置处进行镗孔G90G00Z#8;Z轴快速移动至固定循环返回点#11=#11-1;循环变量递减END13;固定循环结束M99-