数控加工中宏程序的编制方法首都航天机械公司商学谦FANUC宏程序简介在数控编程中,宏程序编程灵活、高效、快捷。宏程序不仅可以实现象子程序那样,对编制相同加工操作的程序非常有用,还可以完成子程序无法实现的特殊功能,例如,型腔加工宏程序、固定加工循环宏程序、球面加工宏程序、锥面加工宏程序等。FANUC宏程序特殊用法宏程序还可以实现系统参数的控制,如,坐标系的读写、刀具偏置的读写、时间信息的读写、倍率开关的控制等。SIEMENS参数编程与FANUC类似,但功能要弱一些。变量以“R”开始,如:R0、R1、R99。不包含系统变量,系统变量以“$”开头。FANUC宏程序的构成1)包含变量2)包含算术或逻辑运算(=)的程序段3)包含控制语句(例如:GOTO,DO,END)的程序段4)包含宏程序调用指令(G65,G66,G67或其他G代码,M代码调用宏程序)的程序段FANUC宏程序的变量ⅠFANUC数控系统变量表示形式为#后跟1~4位数字,变量种类有四种:变量号变量类型功能#0空变量该变量总是空,没有任何值能赋给该变量FANUC宏程序的变量Ⅱ变量号变量类型功能#1——#33局部变量局部变量只能用在宏程序中存储数据,例如运算结果。当断电时局部变量被初始化为空,调用宏程序时自变量对局部变量赋值。FANUC宏程序的变量Ⅲ变量号变量类型功能#100—#199#500—#999公共变量公共变量在不同的宏程序中的意义相同当断电时变量#100#199初始化为空变量#500#999的数据保存即使断电也不丢失FANUC宏程序的变量Ⅳ变量号变量类型功能#1000——系统变量系统变量用于读和写CNC运行时各种数据的变化例如刀具的当前位置和补偿值等刀具补偿存储器C的系统变量当偏置组数小于等于200时,也可以用#2001——#2400补偿号刀具长度补偿(H)刀具半径补偿(D)几何补偿磨损补偿几何补偿磨损补偿123:200:400#11001(#2201)#11002(#2202)#11003(#2203):#11200(#2400):#11400#10001(#2001)#10002(#2002)#10003(#2003):#10200(#2200):#11400#13001#13002#13003:#13200:#13400#12001#12002#12003:#12200:#12400刀具补偿存储器C用G10指令进行设定P:刀具补偿号R:绝对值指令(G90)方式时的刀具补偿值。增量值指令(G91)方式时的刀具补偿值为该值与指定的刀具补偿号的值相加。H代码的几何补偿值G10L10PR;D代码的几何补偿值G10L12PR;H代码的磨损补偿值G10L11PR;D代码的磨损补偿值G10L13PR;自动运行控制的系统变量#3003单程序段辅助功能的完成0有效等待1无效等待2有效不等待3无效不等待自动运行控制的系统变量#3004进给暂停进给速度倍率准确停止0有效有效有效1无效有效有效2有效无效有效3无效无效有效4有效有效无效5无效有效无效6有效无效无效7无效无效无效攻丝加工循环工件原点偏移值的系统变量Ⅰ#5201:#5204第1轴外部工件零点偏移值:第4轴外部工件零点偏移值#5221:#5224第1轴G54工件零点偏移值:第4轴G54工件零点偏移值#5241:#5244第1轴G55工件零点偏移值:第4轴G55工件零点偏移值工件原点偏移值的系统变量Ⅱ#5261:#5264第1轴G56工件零点偏移值:第4轴G56工件零点偏移值#5281:#5284第1轴G57工件零点偏移值:第4轴G57工件零点偏移值#5301:#5304第1轴G58工件零点偏移值:第4轴G58工件零点偏移值工件原点偏移值的系统变量Ⅲ#5321:#5324第1轴G59工件零点偏移值:第4轴G59工件零点偏移值#7001:#7004第1轴工件零点偏移值(G54.1P1):第4轴工件零点偏移值(G54.1P1)#7021:#7024第1轴工件零点偏移值(G54.1P2):第4轴工件零点偏移值(G54.1P2)工件原点偏移值的系统变量Ⅳ#7041:#7044第1轴工件零点偏移值(G54.1P3):第4轴工件零点偏移值(G54.1P3)#7061:#7064第1轴工件零点偏移值(G54.1P4):第4轴工件零点偏移值(G54.1P4)#7941:#7944第1轴工件零点偏移值(G54.1P48):第4轴工件零点偏移值(G54.1P48)工件原点偏移值的系统变量Ⅴ轴功能变量号第一轴外部工件零点偏移#2500#5201G54工件零点偏移#2501#5221G55工件零点偏移#2502#5241G56工件零点偏移#2503#5261G57工件零点偏移#2504#5281G58工件零点偏移#2505#5301G59工件零点偏移#2506#5321工件原点偏移值的系统变量Ⅵ轴功能变量号第二轴外部工件零点偏移#2600#5202G54工件零点偏移#2601#5222G55工件零点偏移#2602#5242G56工件零点偏移#2603#5262G57工件零点偏移#2604#5282G58工件零点偏移#2605#5302G59工件零点偏移#2606#5322工件原点偏移值的系统变量Ⅶ轴功能变量号第三轴外部工件零点偏移#2700#5203G54工件零点偏移#2701#5223G55工件零点偏移#2702#5243G56工件零点偏移#2703#5263G57工件零点偏移#2704#5283G58工件零点偏移#2705#5303G59工件零点偏移#2706#5323工件原点偏移值的系统变量Ⅷ轴功能变量号第四轴外部工件零点偏移#2800#5204G54工件零点偏移#2801#5224G55工件零点偏移#2802#5244G56工件零点偏移#2803#5264G57工件零点偏移#2804#5284G58工件零点偏移#2805#5304G59工件零点偏移#2806#5324用G10改变工件坐标系零点偏移值格式:G10L2PpIP;P=0:外部工件零点偏移值P=1:工件坐标系G54的零点偏移值P=2:工件坐标系G55的零点偏移值P=3:工件坐标系G56的零点偏移值P=4:工件坐标系G57的零点偏移值P=5:工件坐标系G58的零点偏移值P=6:工件坐标系G59的零点偏移值IP:对于绝对值指令(G90),为每个轴的工件零点偏移值。对于增量值指令(G91),为每个轴加到设定的工件零点偏移值。FANUC宏程序运算符Ⅰ功能格式备注定义#i=#j加法#i=#j+#k减法#i=#j-#k乘法#i=#j*#k除法#i=#j/#kFANUC宏程序运算符Ⅱ功能格式备注正弦#i=SIN[#j]角度以度指定,如90º30’表示为90.5度反正弦#i=ASIN[#j]余弦#i=COS[#j]反余弦#i=ACOS[#j]正切#i=TAN[#j]反正切#i=ATAN[#j]FANUC宏程序运算符Ⅲ功能格式备注平方根#i=SQRT[#j]绝对值#i=ABS[#j]舍入#i=ROUND[#j]上取整#i=FIX[#j]下取整#i=FUP[#j]自然对数#i=LN[#j]指数函数#i=EXP[#j]FANUC宏程序运算符Ⅳ功能格式备注或#i=#jOR#k逻辑运算一位一位的按二进制数执行异或#i=#jXOR#k与#i=#jAND#k从BCD转为BIN#i=BIN[#j]用于与PMC的信号交换从BIN转为BCD#i=BCD[#j]FANUC宏程序的转移和循环Ⅰ无条件转移:GOTOn(n为顺序号,1——99999)例:GOTO10为转移到N10程序段FANUC宏程序的转移和循环Ⅱ条件转移:(IF语句)IF[条件表达式]GOTOn当指定的条件表达式满足时,转移到标有顺序号n的程序段,如果指定的条件表达式不满足时,执行下个程序段FANUC宏程序的转移和循环Ⅲ条件转移:(IF语句)IF[条件表达式]GOTOnFANUC宏程序的转移和循环ⅣIF[条件表达式]THEN当指定的条件表达式满足时,执行预先决定的宏程序语句。例:IF[#1EQ#2]THEN#3=0;FANUC宏程序循环ⅠWHILE[条件表达式]Dom;(m=1,2,3)注:循环允许嵌套,最多3层,但不允许交叉;条件不满足条件满足ENDmFANUC宏程序循环ⅡFANUC宏程序循环ⅢFANUC宏程序循环ⅣFANUC宏程序的条件表达式运算符运算符含义EQ等于NE不等于GT大于GE大于或等于LT小于LE小于或等于FANUC宏程序的调用Ⅰ非模态调用G65:格式:G65PpLl自变量指定其中p:要调用的程序号L:调用次数(默认为1)自变量:数据传递到宏程序FANUC宏程序的调用Ⅱ模态调用(G66):G66PpLl自变量指定;程序点G67;(取消模态)其中p:要调用的程序号L:调用次数(默认为1)自变量:数据传递到宏程序FANUC宏程序的调用ⅢFANUC宏程序的调用Ⅳ自变量指定ⅡFANUC宏程序的G代码调用程序号参数号O90106050O90116051O90126052O90136053O90146054O90156055O90166056O90176057O90186058O90196059FANUC宏程序的G代码调用FANUC宏程序的M代码调用程序号参数号O90206080O90216081O90226082O90236083O90246084O90256085O90266086O90276087O90286088O90296089FANUC宏程序中刀具半径补偿SIEMENS参数编程格式:Rn(n的缺省取值范围为0-99)例如:R1R2…R99SIEMENS参数编程中的数学运算符ⅠSIEMENS参数编程中的数学运算符ⅡSIEMENS参数编程中的比较或逻辑运算符SIEMENS参数编程示例SIEMENS参数编程程序跳转Ⅰ无条件跳转GOTOBLABEL(向后跳转,向程序头跳转)GOTOFLABEL(向前跳转,向程序尾跳转)LABEL为程序段标示SIEMENS参数编程程序跳转Ⅱ条件跳转IF表达式GOTOBLABEL(向后跳转,向程序头跳转)IF表达式GOTOFLABEL(向前跳转,向程序尾跳转)LABEL为程序段标示SIEMENS参数编程程序跳转ⅡIFR1R2GOTOFMARKE1如果R1大于R2,那么跳跃到MARKE1R7=(R8+R9)*743GOTOBMARKE1作为条件的复合表达式IFR10GOTOFMARK1允许确定一个变量(INT,REAL,BOOL或CHAR)。如果变量值为0(=FALSE),条件就不能满足;对于所有其他值,条件为TRUEIFR1==0GOTOFMARKE1IFR1==1GOTOFMARKE2同一程序段中的几个条件宏程序示例Ⅰ采用Φ20R4铣刀加工SR30的球,已知球心坐标为(X0Y0Z-5.)宏程序示例Ⅱ宏程序示例Ⅲ分析:铣球程序一般采用自动编程来实现,但是,利用宏程序强大的功能同样也可以实现,而且程序更加简洁。编程思路:铣球可以认为是多个铣圆的组合。排刀分布:有两种方案,一是按Z向分布,二是按圆心角分布。从保证表面质量来看,最佳方案为按圆心角分布。宏程序示例Ⅳ圆弧起点计算,从X正向开始起刀。刀具根部R4的圆心在XZ平面的运动轨迹为与R30等距的圆R34(见图示中红色轨迹),刀尖点上4mm处的轨迹(即褐色轨迹)为红色轨迹沿X正向平移6毫米,刀尖点坐标为褐色轨迹沿Z轴向下平移4mm(即绿色轨迹)。起始角度=ARCSIN((5+4)/34)=15.349º起始位置X值=34*COS(15.349)+6=38.787起始位置Z值=0(通用表达式=34*sin(15.349)-5-4)宏程序示例Ⅴ变量定义:#1为圆心角,范围由(15.349,90)#2为刀尖中心X值,=34*COS[#1]+6#3为刀尖中心Z值,=34*SIN[#1]-5-4宏程序示例ⅤFANUCSIEMENSM03S3000;G00G90G54Z100.;#1=15.349X50.Y0;Z10.;WHILE[#1LE90]DO1;#2=