
FANUC系统宏程序编程 (3).docx
8页细心整理本系统宏程序体系接受FANUC系统宏程序B方式实现一 变量 平凡加工程序干脆用数值指定G代码和移动距离;例如,GO1和X100.0运用用户宏程序时,数值可以干脆指定或用变量指定当用变量时,变量值可用程序或用MDI面板上的操作变更 #1=#2+100G01 X#1 F300说明:变量的表示 计算机允许运用变量名,用户宏程序不行变量用变量符号〔#〕和后面的变量号指定 例如:#1表达式可以用于指定变量号此时,表达式必需封闭在括号中 例如:#[#1+#2-12]变量的类型变量依据变量号可以分成四种类型 变量号变量类型功能#0-#49局部变量局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为0.调用宏程序时,自变量对局部变量赋值,#50-#499公共变量公共变量在不同的宏程序中的意义一样.当断电时, 公共变量初始化为0.目前版本中,某些公众变量被赐予特殊意义(系统变量),用于描述CNC运行时各种数据的变更,这些变量包括:#449用于指明固定循环退刀模式(G98,G99), 如在G99方式下,#449变量为1;如在G98方式下,#449变量为-1.#450用于指明当前程序段处于确定坐标编程模式(G90)还是相对坐标编程模式(G91).如在G90方式下,#450变量为1;如在G91方式下,#450变量为-1.#451,#452,#453,#454用于存储刀具当前位置(X,Y,Z,A轴)在后期的版本中,将会支配特地的空间作为系统变量区.变量值的范围局部变量和公共变量在系统内接受浮点数方式存储小数点的省略当在程序中定义变量值时,小数点可以省略。
例:当定义#1=123;变量#1的实际值是123.000变量的引用为在程序中运用变量值,指定后跟变量号的地址例如:G01X#1+#2F#3或者G01X[#1+#2]F#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] 平方根:#I=SQRT[#j],确定值:#I=ABS[#j] 下取整:#I=FIX[#j],上取整:#I=FUP[#j] 四舍五入:#I=ROUND[#j] 转移与循环在宏程序中,运用GOTO语句和IF语句可以变更程序的执行方向,转移和循环指令有3种。
无条件的转移格式:GOTO n;n为程序的依次号〔1—9999〕如GOTO 99,GOTO #10条件转移格式:IF[〈条件式〉]GOTO n条件式的运算符由两个字母组成,用于两个值的比拟,运算符有: “EQ”表示“=”,“NE”表示“≠”,“GT”表示“>”, “LT”表示“<”,“GE”表示“≥”,“LE”表示“≤”循环格式:WHLE [〈条件式〉] DO m;〔m=1,2,3…〕END m说明:〔1〕当条件满足时,执行从Do m到END m之间的程序,否那么,转到END m后的程序段〔2〕省略WHILE语句只有DO m…END 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*COS[45]-#5*SIN[45]; 斜椭圆算法, 45°为斜椭圆横轴与X轴夹角#11=#4*SIN[45]+#5*COS[45]; 斜椭圆算法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=SQRT[25-#2*#2] ;半球算法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循环可以用于镗孔,执行程序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平面以最大进给速度移动到坐标为(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+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平面以最大进给速度移动到坐标为(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指令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#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。












