单元宏用户宏程序编程下午10时2分数控加工编程及操作1用户宏程序编程在数控编程中,宏程序编程灵活、高效、快捷,是加工编程的重要补充。宏程序不仅可以实现象子程序那样,例如,型腔加工宏程序、固定加工循环宏程序、球面加工宏程序、锥面加工宏程序等。FANUC数控宏程序SIEMENS数控参数编程单元宏用户宏程序编程下午10时2分数控加工编程及操作2二、FANUC宏程序的变量FANUC数控系统变量表示形式为#后跟1~4位数字,变量种类有四种:变量号变量类型功能#0空变量该变量总是空,没有任何值能赋给该变量#1——#33局部变量局部变量只能用在宏程序中存储数据,例如运算结果。当断电时局部变量被初始化为空,调用宏程序时自变量对局部变量赋值。单元宏用户宏程序编程下午10时2分数控加工编程及操作3变量号变量类型功能#100—#199#500—#999公共变量公共变量在不同的宏程序中的意义相同当断电时变量#100#199初始化为空变量#500#999的数据保存即使断电也不丢失#1000——系统变量系统变量用于读和写CNC运行时各种数据的变化例如刀具的当前位置和补偿值等单元宏用户宏程序编程下午10时2分数控加工编程及操作4三、刀具补偿存储器C用G10指令进行设定H代码的几何补偿值G10L10PR;D代码的几何补偿值G10L12PR;H代码的磨损补偿值G10L11PR;D代码的磨损补偿值G10L13PR;P:刀具补偿号R:绝对值指令(G90)方式时的刀具补偿值。增量值指令(G91)方式时的刀具补偿值为该值与指定的刀具补偿号的值相加。单元宏用户宏程序编程下午10时2分数控加工编程及操作5四、FANUC宏程序的转移和循环1.无条件转移:GOTOn(n为顺序号,1——99999)例:GOTO10为转移到N10程序段。2.条件转移:(IF语句)1)IF[条件表达式]GOTOn当指定的条件表达式满足时,转移到标有顺序号n的程序段,如果指定的条件表达式不满足时,执行下个程序段。单元宏用户宏程序编程下午10时2分数控加工编程及操作6单元宏用户宏程序编程下午10时2分数控加工编程及操作7单元宏用户宏程序编程下午10时2分数控加工编程及操作8五、运算符运算符含义EQ等于NE不等于GT大于GE大于或等于LT小于LE小于或等于单元宏用户宏程序编程下午10时2分数控加工编程及操作9七、FANUC系统用户宏程序编程G54G90G00Z30M03S800G00X45Y-15;Z3G01Z-5F100#10=0;给角度赋0初值WHILE#10LE360DO1;#11=40*COS[#10];#12=30*SIN[#10];G01X#11Y#12;#10=#10+1;END1X45Y15;G00Z30X0Y0M05M30单元宏用户宏程序编程下午10时2分数控加工编程及操作10•SIEMENS数控系统参数编程与FANUC类似,但功能要弱一些。变量以“R”开始,如:R0、R1、R99。不包含系统变量,系统变量以“$”开头。一、格式:Rn(n的缺省取值范围为0-99)例如:R1R2…R99二、运算符:单元宏用户宏程序编程下午10时2分数控加工编程及操作11单元宏用户宏程序编程下午10时2分数控加工编程及操作12三、SIEMENS参数编程程序跳转1.无条件跳转GOTOBLABEL(向后跳转,向程序头跳转)GOTOFLABEL(向前跳转,向程序尾跳转)2.条件跳转IF表达式GOTOBLABEL(向后跳转,向程序头跳转)IF表达式GOTOFLABEL(向前跳转,向程序尾跳转)LABEL为程序段标示符单元宏用户宏程序编程下午10时2分数控加工编程及操作13IFR1R2GOTOFMARKE1如果R1大于R2,那么跳跃到MARKE1R7=(R8+R9)*743GOTOBMARKE1作为条件的复合表达式IFR10GOTOFMARK1允许确定一个变量(INT,REAL,BOOL或CHAR)。如果变量值为0(=FALSE),条件就不能满足;对于所有其他值,条件为TRUEIFR1==0GOTOFMARKE1IFR1==1GOTOFMARKE2同一程序段中的几个条件单元宏用户宏程序编程下午10时2分数控加工编程及操作14四、编程示例单元宏用户宏程序编程下午10时2分数控加工编程及操作15G54G90G00Z30M03S800G00X45Y-15;Z3G01Z-5F100R10=0;给角度赋0初值AA:R11=40*COS(R10);R12=30*SIN(R10);G01X=R11Y=R12;R10=R10+1;IFR10=360GOTOBAAX45Y15;G00Z30X0Y0M05M30五、SIEMENS与FANUC用户宏程序编程对照长半轴40、短半轴30的椭圆G54G90G00Z30M03S800G00X45Y-15;Z3G01Z-5F100#10=0;给角度赋0初值WHILE#10LE360DO1;#11=40*COS[#10];#12=30*SIN[#10];G01X#11Y#12;#10=#10+1;END1X45Y15;G00Z30X0Y0M05M30