资源描述
数控宏程序的编制及应用 默认分类 2008-06-13 16:07:36 阅读660 评论5 字号:大中小 一、概述现行的数控程序的编制中,主要有两种编程方式:手工编程和自动编程。虽然自动编程运用得越来越广泛,但手工编程在某些领域也是不可或缺的一种编程手段。手工编程至少在此以下几方面有着自己的优势:其一,熟练的程序员编制的手工程序加工效率高于自动编程;其二,熟悉手工编程,对自动程序的修改是不无裨益的;其三,自动编程的所敲定的走刀路线限制了其加工工艺,通过手工编程能够得到弥补。在手工编程过程中,用户宏程序的编制,能极大提高程序编制的效率,因此,我们在数控教学及训练过程中,必须把用户宏程序的编制作为我们数控教学的重要内容之一。从历年全国数控大赛的试题中也不难发现,用户宏程序的编制是运用得极其频繁的。但是,我们很难在目前的教材中找到完整的宏程序的编写的方法及思路。为此,笔者提出了一整套设计用户宏程序的方法,通过利用流程图来设计用户宏程序,提高了编程的效率。二、用户宏程序简介用户宏程序有A、B两种,A类宏程序用G65指令编写,其格式如下:G65 Hm P#i Q#j R#k其中,m0199表示运算命令或转移命令功能; #i存入运算结果的变量名; #j进行运算的变量名1,可以是常数,常数直接表示,不带#; #k进行运算的变量名2,也可以是常数。 意义, #i=#j#k,表示运算符号,常用意义如表1表1G代码H代码功能定义G65H01赋值#i#jG65H02加法#i#j#kG65H03减法#i#j#kG65H04乘法#i#j#kG65H05除法#i#j#kG65H80无条件转移转向NG65H81条件转移1IF #j#k,GOTO NG65H82条件转移2IF #j#k,GOTO NG65H83条件转移3IF #j#k,GOTO NG65H84条件转移4IF #j#k,GOTO NG65H85条件转移5IF #j#k,GOTO NG65H86条件转移6IF #j#k,GOTO NG65H99产生P/S报警产生500+1号P/S报警除此以外,G65指令还可以实现逻辑运算、开平方、取绝对值、三角运算及复合运算等,相关指令见有关书籍,这里不一一介绍。需要指出的是,不同的数控系统,其功能的多少也不一样,用户可参考有关系统的说明书。B类宏程序由控制语句,调用语句所组成。宏程序可以与主程序做在一起,也可以单独做成一个子程序,然后用G65指令调用。调用方法如下:G65 P(程序号)引数赋值或G65 P(程序号) L(循环次数)引数赋值所谓引数赋值,是指用A、B、C、D等地址给变量#1、#2、#3、#4等赋值。B类宏程序的控制指令有三类,与C语言等高级程序设计语言的控制指令很类似。一类是IF语句,格式为:IF条件式GOTO n (n即顺序号)条件式成立时,从顺序号为n的程序段往下执行,条件式不成立时,执行下一下程序段;第二类是WHILE语句,格式为:WHILE条件式 DO mEND m条件式成立时,从DO m的程序段到END m的程序段重复执行,条件式不成立时,则从END m的下一程序段执行。第三类是无条件转移指令,格式为:GOTO n。三、运用流程图编写用户宏程序的一般步骤运用流程图编写用户宏程序的一般步骤为:一分析零件结构,确定宏程序加工的内容,找出加工工艺路线的律;二将零件加工路线规律用流程图表达出来,并进一步分清楚哪些是程序编制过程中的变量,哪些是常量,从而将一般的流程变成程序流程图;三根据程序流程图,编写零件的加工程序。四、应用举例(一)宏程序应用实例一如图1所示,在一根轴上加工N个槽,每个槽的宽度为a1,槽的间距为a2,槽底直径为b1,棒料直径b2,并且设所给材料足够长,试编写程序加工该零件,现有一零件参数为N100个槽,槽底直径b130mm,槽宽a15mm,工件直径b240mm,间隔a22mm,刀宽3mm,现编写程序加工。 图11零件工艺过程分析该零件是一个比较简单的例子,在压面机械上用得较多。零件的精度要求不高,为了使程序有更广泛的适应性,将宏程序做成一个子程序,用主程序来调用实现零件的加工。加工时将坐标原点选择在如图所示的位置,X轴离第一个槽的距离为一个间距a2的距离。零件的加工过程如下将:将刀具移至加工起点进刀切削第一个槽计算下一槽的位置并将刀具移到此位置加工下一个槽如此至最后一个槽加工完为止。将此过程画成流程图,如图2(a)所示。(a) (b)图22零件加工过程中所使用的变量通过分析,要加工该零件,需要如下一些变量:工件直径#200= b2槽底直径#201= b1槽宽#202= a1槽间间隔#203= a2切槽刀宽度#204每加工一个槽后,切槽刀在Z轴方向移动的距离#205(等于槽间距加上槽宽)槽的起点坐标Xs=#206,Zs=#207槽加工终点的坐标Xf=#208,Yf=#209计算槽数目的变量#215加工槽的总数#216由此画出编制程序所用的流程图,如图2(b)所示。3根据程序流程图编制程序宏程序O9061N10 G65 H83 P160 Q#204 R#202 如果刀宽大于槽完,则结束N20 G65 H01 P#215 Q0 计数器变量清零N30 G65 H02 P#205 Q#202 R#203 计算#205N40 G65 H02 P#206 Q#200 R5 工件直径加上5mm作为X方向起点N50 G65 H02 P#207 Q#203 R#204 槽的间距加上一个刀宽N60 G65 H01 P#207 Q?#207 取负值后作为第一个槽的Z向起点N70 G65 H01 P#208 Q#201 槽底直径作为槽终点的X坐标N80 G65 H01 P#209 Q?#205 第一个槽终点Z向坐标N90 G00 X#206 Z#207 M08 定位到槽加工的位置N100 G75 R1 N110 G75 X#208 Z#209 P2 Q#204 F20 加工槽N120 G65 H03 P#207 Q#207 R#205 下一个槽起点Z向坐标计算N130 G65 H03 P#209 Q#209 R#205 下一个槽终点Z向坐标计算N140 G65 H02 P#215 Q#215 R1 槽计数器加1N150 G65 H84 P90 Q#215 R#216 判断槽是否加工完毕N160 M08N170 M99 结束主程序 O0001N10 G65 H01 P#200 Q40 工件直径赋值N20 G65 H01 P#201 Q30 槽底直径赋值N30 G65 H01 P#202 Q5 槽宽赋值N40 G65 H01 P#203 Q2 槽间间隔赋值N50 G65 H01 P#204 Q3 切槽刀宽赋值N60 G65 H01 P#216 Q100 槽数赋值N70 G00 X100 Z100 起刀点位置N80 M98 P9061 调用宏程序N90 M30 程序结束(二)宏程序应用实例二对于一些大悬伸(加工深度与刀具直径之比较大)的零件,用普通加工方法总难达到理想效果,此时用插铣法容易保证零件精度,如图3所示的零件,尺寸80很难保证,用插铣法后获得了比较好的效果。曾经有工厂做过类似的程序,但程序只是针对零件本身,适应性不强,当零件的尺寸发生变化后,程序还得发生较大修改。笔者针对这种情况,将程序分为主程序和子程序,当零件的尺寸发生变化后,只需要修改主程序即可,非常方便。1加工工艺分析传统加工工艺方法采用多次重复加工。很难消除让刀,并且造成加工应力,最后由于应力释放造成零件的内腔变小。为了解决这个问题,我们将加工分为粗加工和精加工,粗加工采用普通的工艺方法,精加工采用插铣。建立如图3所示的坐标系,为了保证加工质量,防止划伤已加工过的表面,编程时避免使用钻孔循环指令。加工轨迹如图4所示,在YZ平面内进行以下加工步骤:加工第一刀沿圆弧退刀返回Z=3处沿圆弧进刀沿X方向移动一个步距加工第二刀。加工过程中,粗加工尺寸80按79.6加工,而精加工采用宏程序编制高速插铣程序。精加工的具体参数如表2所示图3零件图及坐标系图4刀具路径表2精加工参数加工方式加工材料刀具步距设置安全高度顺铣铝合金18整体硬质合金加长球头刀005Z=32加工流程图为增强程序的适应性,本程序刀分为子程序和主程序来编写,子程序起始位置为(0,0,50),刀具在加工过程中的基本路线是按前面所给出的路线来走刀。由此画出加工流程图如图5(a)所示。(a) (b)图53程序所使用的变量及程序流程图本程序中所使用的变量如下:需加工部位X方向的长度:#1;需加工部位Y方向的长度:#2;需加工部位Z方向的深度:#3;X方向的步距:#4;走刀轨迹中,退(或进)刀时的半径:#5(本例图4中的R10);中间变量:#6、#7、#8、#9由所确定的变量及加工流程图,画出程序流程图如图5(b)所示。4编制程序子程序:%9001N10 #1=#1/2 #1变量取1/2作为X坐标N20 #2=#2/2 #2变量取1/2作为Y坐标N30 G00 X#1 X方向定位到加工位置N40 G41 D1 Y#2 Y方向定位到加工位置N50 G01 Z3 F3000 M08 下降下安全高度,开冷却液N60 #6=(#3#5) 计算加工终点Z向坐标N70 #7=#22*#5 计算退刀终点Y坐标N80 G01 Z#6 插铣加工N90 G02 Y#7 R#5 退刀N100 G01 Z3 返回N110 G02 Y#2 R#5 进刀N120 #8=#8+#4 X方向总加工长度计数N130 G91 G01 X#4 X方向走一个步距N140 IF #8LE#1 GOTO 80 判别第一侧是否加工完N150 G90 Y#2 移至另一侧N160 G01 Z#6 插铣加工另一侧N180 G02 Y#7 R#5 退刀N190 G01 Z3 返回安全高度N200 G02 Y#2 R#5 进刀N210 #9=#9+#4 X方向总加工长度计数N220 G91 G01 X#4 X方向移动一个步距N230 IF #9LE#1 GOTO 160 判别另一侧是否加工完N240 G90 G40 G00 X0 Y0 M09 X、Y方向返回起始点N250 Z50 Z方向返回起始点N260 M99 宏程序结束主程序:%1010N10 T01 选一号刀N20 M06 换刀N30 G00 G90 G54 G19 X0 Y0 S5000 M03 定位到起始位置,选择坐标平面及坐标系,启动主轴。N40 G43 H01 Z50 Z方向补偿N60 G65 P9001 A200 B80.05 C90 D0 E0 F0 I0.05 J10 K0 调用宏程序并给相关变量赋值N70 M05 停止主轴N80 G49 Z50 Z方向取消补偿N90 M30 程序结束五、结束语利用流程图编制用户宏程序,思路清晰,所编制的程序适应性好,是一种值得推广的方法。数控宏程序默认分类 2008-06-13 16:04:36 阅读136 评论1 字号:大中小 用 户 宏 程 序 能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。 l 所存入的这一系列指令用户宏程序 l 调用宏程序的指令宏指令 l 特点:使用变量 一 变量的表示和使用 (一) 变量表示 I(I=1,2,3,)或式子 例:5,109,501,1212 (二) 变量的使用 1 地址字后面指定变量号或公式 格式:地址字I 地址字I 地址字式子 例:F103,设10315则为F15 Z110,设110250则为Z250 X2418COS1 2 变量号可用变量代替 例:30,设303则为3 3 变量不能使用地址O,N,I 例:下述方法下允许 O1; I26.00100.0; N3Z200.0; 4 变量号所对应的变量,对每个地址来说,都有具体数值范围 例:301100时,则M30是不允许的 5 0为空变量,没有定义变量值的变量也是空变量 6 变量值定义: 程序定义时可省略小数点,例:123149 MDI键盘输一 变量的种类 1. 局部变量133 一个在宏程序中局部使用的变量 例:A宏程序B宏程序 1020X10不表示X20 断电后清空,调用宏程序时代入变量值 2. 公共变量100149,500531 各用户宏程序内公用的变量 例:上例中10改用100时,B宏程序中的 X100表示X20 100149断电后清空 500531保持型变量(断电后不丢失) 3. 系统变量 固定用途的变量,其值取决于系统的状态 例:2001值为1号刀补X轴补偿值 5221值为X轴G54工件原点偏置值入时必须输入小数点,小数点省略时单位为m一 运算指令 运算式的右边可以是常数、变量、函数、式子 式中j,k也可为常量 式子右边为变量号、运算式 1 定义 Ij 2 算术运算 I=j+k I=jk I=jk I=jk 3 逻辑运算 IJOKk IJXOKk IJANDk 4 函数 ISINj 正弦 ICOSj 余弦 ITANj 正切 IATANj 反正切 ISQRTj平方根 IABSj绝对值 IROUNDj四舍五入化整 IFIXj下取整 IFUPj上取整 IBINjBCDBIN(二进制) IBCNjBINBCD1 说明 1) 角度单位为度 例:90度30分为905度 2) ATAN函数后的两个边长要用“1”隔开 例:1ATAN11时,1为了350 3) ROUND用于语句中的地址,按各地址的最小设定单位进行四舍五入 例:设112345,223456,设定单位1m G91X1;X1235 X2F300;X2346 X12;X3580 未返回原处,应改为 XROUND1ROUND2; 4) 取整后的绝对值比原值大为上取整,反之为下取整 例:设112,212时 若3FUP#1时,则320 若3FIX#1时,则310 若3FUP#2时,则320 若3FIX#2时,则310 5) 指令函数时,可只写开头2个字母 例:ROUNDRO FIXFI 6) 优先级 函数乘除(,1,AND)加减(,OR,XOR) 例:123SIN4; 7) 括号为中括号,最多5重,园括号用于注释语句 例:1SIN#2+#3*#4+#5*#6;(3重)一 转移与循环指令 1无条件的转移 格式:GOTO1; GOTO10; 2条件转移 格式:IF条件式GOTOn 条件式: jEQk 表示 jNEk 表示 jGTk 表示 jLTk 表示 jGEk 表示 jLEk 表示 例:IF1GT10GOTO100; N100G00691X10; 例:求1到10之和 O9500; 10 21 N1IF2GT10GOTO2 112; 221; GOTO1 N2M301循环 格式:WHILE条件式DOm;(m1,2,3) ENDm 说明:1条件满足时,执行DOm到ENDm,则从DOm的程序段 不满足时,执行DOm到ENDm的程序段 2省略WHILE语句只有DOmENDm,则从DOm到ENDm之间形成死循环 3嵌套4EQNE时,空和“0”不同 其他条件下,空和“0”相同 例:求1到10之和 O0001; 10; 21; WHILE2LE10DO1; 112; 221; END1; M30;FANUC系统宏程序编程一 变量普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的操作改变。#1#2100G01 X#1 F300说明:变量的表示计算机允许使用变量名,用户宏程序不行。变量用变量符号(#)和后面的变量号指定。例如:#1表达式可以用于指定变量号。此时,表达式必须封闭在括号中。例如:#1+#2-12变量的类型变量根据变量号可以分成四种类型变量号变量类型功能#0空变量该变量总是空,没有值能赋给该变量.#1-#33局部变量局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空.调用宏程序时,自变量对局部变量赋值,#100-#199 #500-#999公共变量公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失.#1000系统变量系统变量用于读和写CNC运行时各种数据的变化,例如,刀具的当前位置和补偿值.变量值的范围局部变量和公共变量可以有0值或下面范围中的值:-1047到-10-29或-10-2到-1047如果计算结果超出有效范围,则发出P/S报警NO.111.小数点的省略当在程序中定义变量值时,小数点可以省略。例:当定义#1123;变量#1的实际值是123.000。变量的引用为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放在括号中。例如:G01X#1+#2F#3;被引用变量的值根据地址的最小设定单位自动地舍入。例如:当G00X#/;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346.改变引用变量的值的符号,要把负号()放在#的前面。例如:G00X#1当引用未定义的变量时,变量及地址都被忽略。例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0。双轨迹(双轨迹控制)的公共变量对双轨迹控制,系统为每一轨迹都提供了单独的宏变量,但是,根据参数N0.6036和6037的设定,某些公共变量可同时用于两个轨迹。未定义的变量当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。引用当引用一个未定义的变量时,地址本身也被忽略。 当#1=当#10G90 X100 Y#1 G90 X100G90 X100 Y#1 G90 X100 Y0(b) 运算除了用赋值以外,其余情况下与0相同。当#1=时当#10时#2#1#2#2#1#20#2#*5#20#2#*5#20#2#1+#1#20#2#1+#1#20(c)条件表达式EQ和NE中的不同于0。当#1=时当#10时#1EQ#0 成立#1EQ#0 不成立#1 NE #0 成立#1 NE #0 不成立#1 GE #0 成立#1 GE #0 不成立#1 GT #0 不成立#1 GT #0 不成立限制程序号,顺序号和任选程序段跳转号不能使用变量。例:下面情况不能使用变量:0#1;/#2G00X100.0;N#3Y200.0;二 算术和逻辑运算下面表中列出的运算可以在变量中执行。运算符右边的表达式可包含常量和或由函数或运算符组成的变量。表达式中的变量#j和#k可以用常数赋值。左边的变量也可以用表达式赋值。说明:角度单位函数SIN ,COS,ASIN,ACOS,TAN和ATAN的角度单位是度。如9030表示为90.5度。ARCSIN # i= ASIN#j(1)取值范围如下:当参数(NO.6004#0)NAT位设为0时,27090当参数(NO.6004#0)NAT位设为1时,9090(2)当#j超出1到1的范围时,发出P/S报警NO.111.(3)常数可替代变量#jARCCOS #iACOS#j 取值范围从1800 当#j超出1到1的范围时,发出P/S报警NO.111. 常数可替代变量#j
展开阅读全文