6.1B类宏程序指令6.2数控车床宏程序指令编程6.3数控铣床(加工中心)宏程序指令编程习题六第6章宏程序指令编程6.1B类宏程序指令6.1.1变量6.1.2变量的运算和控制指令6.1.1变量1、用户宏程序(customMacro)是以变量的组合,通过各种算术和逻辑运算、转移和循环等命令,而编制的一种可以灵活运用的程序。通过改变变量的值,来完成不同的加工和操作,有A、B两类。A类宏程序格式为:G65HmP#IQ#jR#k;式中:m—宏程序功能,数值范围01~99;#i—运算结果存放处的变量名;#j—被操作的第一个变量,也可以是一个常数;#k—被操作的第二变量,也可以是一个常数。B类宏程序格式为:(1)非模态调用(或单一调用G65)G65P(程序号)L(自变量赋值);式中:P——指定宏程序号;L——重复调用次数(1~9999,调用1次时L可以省略)。(2)模态调用(G66、G67)G66P(程序号)L(重复次数)自变量赋值;在书写时,G66必须写在自变量赋值之前。L最多可9999次。自变量赋值与非模态调用相同。G67:取消宏程序模态调用方式。6.1.1变量1、变量的表示#i#[表达式]——(变量号i=0,1,2,3,4……)例:#8、#110、#1100——表达式必须用括号括起来例:#[#1+#2-12]2、变量的引用地址#1地址-#1例:F#10——当#10=20时,F20被指令。X-#20——当#20=100.时,X-100.被指令。G#130——当#130=2时,G2被指令。但当一个变量的值未被定义时,那么这个变量则被当作“空变量”。变量#0始终是空变量,它是不能被赋予任何值的。3、变量的类型和功能变量号变量类型功能#0空该变量值总为空#1-#33局部变量只能在一个宏程序中使用#100~#149(#199)#500~#531(#999)公共变量在各宏程序中可以公用的#1000系统变量固定用途的变量4、自变量的赋值自变量赋值Ⅰ自变量赋值Ⅱ——使用除去G、L、N、O、P以外的其他字母作为地址。——可使用A、B、C每个字母一次,I、J、K每个字母十次作为地址。自变量赋值Ⅰ的地址与变量号码之间的对应关系自变量赋值Ⅱ的地址与变量号码之间的对应关系6.1.2变量的运算和控制指令运算的优先顺序:①函数;②乘除、逻辑与;③加减、逻辑或、逻辑异或。可以用[]来改变顺序。1、变量的运算2、控制指令(1)无条件转移(GOTO语句)格式:GOTOn;式中:n——顺序号(1~9999),可用变量表示。举例:GOTO1;GOTO#10;2、条件转移(IF语句)格式:IF[条件式]GOTOn;条件式:举例:#jEQ#k#j是否=#k#jGT#k#j是否>#k#jGE#k#j是否≥#k#jNE#k#j是否≠#k#jLT#k#j是否<#k#jLE#k#j是否≤#kO7100;#1=0;#2=1;N1IF[#2GT10]GOTO2;#1=#1+#2;#2=#2+1;GOTO1;N2M30;3、循环(WHILE语句)格式:WHILE[条件式]DOm;……ENDm;式中:m——循环执行范围的识别号,只能是12和3,否则系统报警注意:DO—END循环能够按需要使用多次,即循环嵌套。循环嵌套:DO—END循环嵌套:WHILE[条件式1]DO1;……WHILE[条件式2]DO2;……WHILE[条件式3]DO3;……END3;……END2……END1;举例:求1到10之和。O7200;#1=0;#2=1;WHILE[#2LE10]DO1;#1=#1+#2;#2=#2+1;END1;M30;6.2数控车床宏程序指令编程例6-1加工如图6-1所示的槽应用调用指令:G66P9110UuFf式中:u——槽深,增量值;f——槽加工的进给速度O0008;G50X100.0Z200.0;S1000M03;G00X62.0Z80.0;G66P8888U5.0F0.5;Z50.0;Z30.0;G67;G00X100.0Z200.0M05;M30;主程序为:宏程序为:O8888;G01U-#21F#9;G00U#21;M99;例6-2)(KZ2/Z加工一抛物面(如图6-2),焦距为K,按抛物线公式Z=-2KX2;以X为自变量,可求得Z。当X为小值时,Z增长较缓,当X为大值时,X增长较快,使逼近面不光滑。因此,取导数,令切线斜率为-1,这一点为分界点,小值时用x为自变量,大值时改用z为自变量,则X=分界点为:=-4KX=-1;则X=1/4K,该点即为分界点。。分界点为:=-4KX=-1;则X=1/4K,该点即为分界点。O4200G50X100.0Z200.0;S1000M03;G01G42X0Z0F800;N1#1=0;(X初值,半径值)#2=1/[4*#6];(分界点,半径值)#3=0.1;(增量值)WHILE[#1LT#2]DO1;#5=-2*#6*#1*#1;(Z轴坐标)G01X[2*#1]Z#5F300;G01X[2*#1]Z#5F300;#1=#1+#3;ENDl;#5=-2*#6*#2*#2;X[2*2]Z#5;(分界点)N2#7=#5;(Z初值)#8=0.1;WHILE[#7GT#26]DO2;#4=SQRT[-#26/[2*#6]];(X轴坐标,半径值)X[2*#4]Z#7;#7=#7+#8;END2;X#24Z#26;G00X100.0Z100.0M30;6.3数控铣床(加工中心)宏程序指令编程例6-3加工如图6-3所示的椭圆形的半球曲面,刀具为R8的球铣刀。利用椭圆的参数方程来编写宏程序:椭圆的参数方程为:X=A*COSα;Z=B*SINα;其中,A为椭圆的长轴,B为椭圆的短轴。O9800;G90G54G00G17G40;G43Z50.H01;M03S1000;X60.Y-20.;Z5.M08;G01Z-20.F800;G42X50.Y0.D01F100;#1=0;#2=20.0#3=30.;#4=1.0;#5=90.0;WHILE#5GE#1DO1;#6=#3*COS[#5*PI/180]+4;#7=#2SIN[#5*PI/180];G01X[#6]F800;Z[#7];#8=360;#9=0;WHILE#9LE#8DO2;#10=#6*COS[#9*PI/180];#11=36*SIN[#9*PI/180]*2/3;G01X[#10]Y[#11]F800;#9=#9+1;END2;G01Y20.;G00G40X60.;Z100.M30;例6-4如图6-5所示,在立式加工中心上铣削内半球体。假设大部分余量已通过预钻孔去除,现选用适当直径的球头铣刀(φ12)对半球体进行精加工。若要用同一程序以及用不同半径的球头铣刀加工不同半径的内球体,则对球体和球头铣刀的半径用变量表示。若内球体半径为SR,铣削时刀具中心轨迹半径为RP,球头铣刀半径为r,若每步铣刀沿着z向进刀的角度为α,则图中刀具进给时刀具中心的坐标为:X=RPCOSα;Z=RPSINα;主程序中使用如下程序段调用宏程序:C65AaBbDd;’其中:Aa:内球体半径(#1);Bb:球头铣刀半径(#2);Dd:每步进刀的角度(#7)。主程序为:O7400;G90G54G17G00X0Y0;G43Z5.H01M08;M03S900;G65P9800A35.B6.D5.;G00Z5.M09;G91G28Z0;M30;用户宏程序为:O9800;#101=#1;#102=#2;#103=#1-#2;#104=#7;G00X[#103];G01Z0F120;WHILE[#104LE90]DO1;#110=#103*COS[#104];#120=#103*SIN[#104];G01X[#110]Z-[#120]F80;G02I-[#110];#104=#104+#7;END1;M99;习题六1.什么是用户宏程序?分为哪几类?它与子程序之间有何区别?2.宏程序中的变量的类型有哪些?3.加工如图6-5所示的一椭球面,试写出其宏程序。4、如图6-6所示,在半径为I的圆周上钻削H个等分孔,已知加工第一个孔的起始角为A,相邻两个孔之间的角度的增量为B,圆周中心坐标为(x,y),试用用户宏程序完成加工。图6-6题4图图6-5题3图