数控宏程序基础



《数控宏程序基础》由会员分享,可在线阅读,更多相关《数控宏程序基础(13页珍藏版)》请在装配图网上搜索。
1、数控宏程序的编制及应用 默认分类 2008-06-13 16:07:36 阅读660 评论5 字号:大中小 一、概述 现行的数控程序的编制中,主要有两种编程方式:手工编程和自动编程。虽然自动编程运用得越来越广泛,但手工编程在某些领域也是不可或缺的一种编程手段。手工编程至少在此以下几方面有着自己的优势:其一,熟练的程序员编制的手工程序加工效率高于自动编程;其二,熟悉手工编程,对自动程序的修改是不无裨益的;其三,自动编程的所敲定的走刀路线限制了其加工工艺,通过手工编程能够得到弥补。 在手工编程过程中,用户宏程序的编制,能极大提高程序编制的效率,因此,我们在数控教学及训练过程中
2、,必须把用户宏程序的编制作为我们数控教学的重要内容之一。从历年全国数控大赛的试题中也不难发现,用户宏程序的编制是运用得极其频繁的。但是,我们很难在目前的教材中找到完整的宏程序的编写的方法及思路。为此,笔者提出了一整套设计用户宏程序的方法,通过利用流程图来设计用户宏程序,提高了编程的效率。 二、用户宏程序简介 用户宏程序有A、B两种,A类宏程序用G65指令编写,其格式如下: G65 Hm P#i Q#j R#k 其中,m—01~99表示运算命令或转移命令功能; #i—存入运算结果的变量名; #j—进行运算的变量名1,可以是常数,常数直接表示,不带#;
3、 #k—进行运算的变量名2,也可以是常数。 意义, #i=#j○#k,表示运算符号,常用意义如表1 表1 G代码 H代码 功能 定义 G65 H01 赋值 #i=#j G65 H02 加法 #i=#j+#k G65 H03 减法 #i=#j-#k G65 H04 乘法 #i=#j#k G65 H05 除法 #i=#j#k G65 H80 无条件转移 转向N G65 H81 条件转移1 IF #j=#k,GOTO N G65 H82 条件转移2 IF #j≠#k,GOTO N G65 H83 条件转移3
4、IF #j>#k,GOTO N G65 H84 条件转移4 IF #j<#k,GOTO N G65 H85 条件转移5 IF #j≥#k,GOTO N G65 H86 条件转移6 IF #j≤#k,GOTO N G65 H99 产生P/S报警 产生500+1号P/S报警 除此以外,G65指令还可以实现逻辑运算、开平方、取绝对值、三角运算及复合运算等,相关指令见有关书籍,这里不一一介绍。需要指出的是,不同的数控系统,其功能的多少也不一样,用户可参考有关系统的说明书。 B类宏程序由控制语句,调用语句所组成。宏程序可以与主程序做在一起,也可以单独做成一个子
5、程序,然后用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 m . . . END m 条件式成立时,从D
6、O m的程序段到END m的程序段重复执行,条件式不成立时,则从END m的下一程序段执行。 第三类是无条件转移指令,格式为:GOTO n。 三、运用流程图编写用户宏程序的一般步骤 运用流程图编写用户宏程序的一般步骤为:一分析零件结构,确定宏程序加工的内容,找出加工工艺路线的律;二将零件加工路线规律用流程图表达出来,并进一步分清楚哪些是程序编制过程中的变量,哪些是常量,从而将一般的流程变成程序流程图;三根据程序流程图,编写零件的加工程序。 四、应用举例 (一)宏程序应用实例一 如图1所示,在一根轴上加工N个槽,每个槽的宽度为a1,槽的间距为a2,槽底直径为b
7、1,棒料直径b2,并且设所给材料足够长,试编写程序加工该零件,现有一零件参数为N=100个槽,槽底直径b1=30mm,槽宽a1=5mm,工件直径b2=40mm,间隔a2=2mm,刀宽=3mm,现编写程序加工。 图1 1零件工艺过程分析 该零件是一个比较简单的例子,在压面机械上用得较多。零件的精度要求不高,为了使程序有更广泛的适应性,将宏程序做成一个子程序,用主程序来调用实现零件的加工。加工时将坐标原点选择在如图所示的位置,X轴离第一个槽的距离为一个间距a2的距离。 零件的加工过程如下将:将刀具移至加工起点→进刀→切削第一个槽→计算下一槽的位置并将刀具移到此位置→加工下一个
8、槽……如此至最后一个槽加工完为止。 将此过程画成流程图,如图2(a)所示。 (a) (b) 图2 2零件加工过程中所使用的变量 通过分析,要加工该零件,需要如下一些变量: 工件直径#200= b2 槽底直径#201= b1 槽宽#202= a1 槽间间隔#203= a2 切槽刀宽度#204 每加工一个槽后,切槽刀在Z轴方向移动的距离#205(等于槽间距加上槽宽) 槽的起点坐标Xs=#206,Zs=#207 槽加工终点的坐标Xf=#208,Yf=#209 计算槽数目的变量#215 加工槽的总数#216 由此画
9、出编制程序所用的流程图,如图2(b)所示。 3根据程序流程图编制程序 宏程序O9061 N10 G65 H83 P160 Q#204 R#202 如果刀宽大于槽完,则结束 N20 G65 H01 P#215 Q0 计数器变量清零 N30 G65 H02 P#205 Q#202 R#203 计算#205 N40 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向起
10、点 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
11、 槽计数器加1 N150 G65 H84 P90 Q#215 R#216 判断槽是否加工完毕 N160 M08 N170 M99 结束 主程序 O0001 N10 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 起刀点
12、位置 N80 M98 P9061 调用宏程序 N90 M30 程序结束 (二)宏程序应用实例二 对于一些大悬伸(加工深度与刀具直径之比较大)的零件,用普通加工方法总难达到理想效果,此时用插铣法容易保证零件精度,如图3所示的零件,尺寸80很难保证,用插铣法后获得了比较好的效果。曾经有工厂做过类似的程序,但程序只是针对零件本身,适应性不强,当零件的尺寸发生变化后,程序还得发生较大修改。笔者针对这种情况,将程序分为主程序和子程序,当零件的尺寸发生变化后,只需要修改主程序即可,非常方便。 1加工工艺分析 传统加工工艺方法采用多次重复加工。很难消除让刀,并且造成加工应
13、力,最后由于应力释放造成零件的内腔变小。为了解决这个问题,我们将加工分为粗加工和精加工,粗加工采用普通的工艺方法,精加工采用插铣。 建立如图3所示的坐标系,为了保证加工质量,防止划伤已加工过的表面,编程时避免使用钻孔循环指令。加工轨迹如图4所示,在YZ平面内进行以下加工步骤:加工第一刀→沿圆弧退刀→返回Z=3处→沿圆弧进刀→沿X方向移动一个步距→加工第二刀→…。 加工过程中,粗加工尺寸80按79.6加工,而精加工采用宏程序编制高速插铣程序。精加工的具体参数如表2所示 图3零件图及坐标系 图4刀具路径 表2精加工参数 加工方式 加工材料 刀具 步距 设置安全高
14、度 顺铣 铝合金 Φ18整体硬质合金加长球头刀 0.05 Z=3 2加工流程图 为增强程序的适应性,本程序刀分为子程序和主程序来编写,子程序起始位置为(0,0,50),刀具在加工过程中的基本路线是按前面所给出的路线来走刀。 由此画出加工流程图如图5(a)所示。 (a) (b) 图5 3程序所使用的变量及程序流程图 本程序中所使用的变量如下: 需加工部位X方向的长度:#1; 需加工部位Y方向的长度:#2; 需加工部位Z方向的深度:#3; X方向的步距:#4; 走刀轨迹中,退(或进)刀时的半径:#5(本例图4中的R10);
15、 中间变量:#6、#7、#8、#9 由所确定的变量及加工流程图,画出程序流程图如图5(b)所示。 4编制程序 子程序:%9001 N10 #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=#2-2*#5 计算退刀终点Y坐标 N80 G01 Z#6 插
16、铣加工 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方向总
17、加工长度计数 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 宏程序结束 主程序:%1010 N10 T01 选一号刀 N20 M06 换刀 N30 G00 G90 G54 G19 X0 Y0 S5000 M03 定位到起始位置,选择坐标平面及坐标系,启动主轴。 N40 G43 H01 Z50 Z方向补偿 N60 G65 P9001
18、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 所存入的这一系列指令——用户宏程
19、序 l 调用宏程序的指令————宏指令 l 特点:使用变量 一. 变量的表示和使用 (一) 变量表示 #I(I=1,2,3,…)或#[<式子>] 例:#5,#109,#501,#[#1+#2-12] (二) 变量的使用 1. 地址字后面指定变量号或公式 格式: <地址字>#I <地址字>-#I <地址字>[<式子>] 例:F#103,设#103=15 则为F15 Z-#110,设#110=250 则为Z-250 X[#24+#18*COS[#1]] 2. 变量号可用变量代替 例:#[#30],设#30=3 则为#3 3.
20、变量不能使用地址O,N,I 例:下述方法下允许 O#1; I#2 6.00100.0; N#3 Z200.0; 4. 变量号所对应的变量,对每个地址来说,都有具体数值范围 例:#30=1100时,则M#30是不允许的 5. #0为空变量,没有定义变量值的变量也是空变量 6. 变量值定义: 程序定义时可省略小数点,例:#123=149 MDI键盘输一. 变量的种类 1. 局部变量#1~#33 一个在宏程序中局部使用的变量 例: A宏程序 B宏程序 … … #10=20 X#10 不
21、表示X20 … … 断电后清空,调用宏程序时代入变量值 2. 公共变量#100~#149,#500~#531 各用户宏程序内公用的变量 例:上例中#10改用#100时,B宏程序中的 X#100表示X20 #100~#149 断电后清空 #500~#531保持型变量(断电后不丢失) 3. 系统变量 固定用途的变量,其值取决于系统的状态 例:#2001值为1号刀补X轴补偿值 #5221值为X轴G54工件原点偏置值 入时必须输入小数点,小数点省略时单位为μm 一. 运算指令 运算式的右边可以是常数、变量、函数、
22、式子 式中#j,#k也可为常量 式子右边为变量号、运算式 1. 定义 #I=#j 2. 算术运算 #I=#j+#k #I=#j-#k #I=#j*#k #I=#j/#k 3. 逻辑运算 #I=#JOK#k #I=#JXOK#k #I=#JAND#k 4. 函数 #I=SIN[#j] 正弦 #I=COS[#j] 余弦 #I=TAN[#j] 正切 #I=ATAN[#j] 反正切 #I=SQRT[#j] 平方根 #I=ABS[#j] 绝对值 #I=ROUND[#j] 四舍五入化整 #I=FIX[#j] 下取整
23、 #I=FUP[#j] 上取整 #I=BIN[#j] BCD→BIN(二进制) #I=BCN[#j] BIN→BCD 1. 说明 1) 角度单位为度 例:90度30分为90.5度 2) ATAN函数后的两个边长要用“1”隔开 例:#1=ATAN[1]/[-1]时,#1为了35.0 3) ROUND用于语句中的地址,按各地址的最小设定单位进行四舍五入 例:设#1=1.2345,#2=2.3456,设定单位1μm G91 X-#1;X-1.235 X-#2 F300;X-2.346 X[#1+#2];X3.580 未返回原处,应改为 X[ROU
24、ND[#1]+ROUND[#2]]; 4) 取整后的绝对值比原值大为上取整,反之为下取整 例:设#1=1.2,#2=-1.2时 若#3=FUP[#1]时,则#3=2.0 若#3=FIX[#1]时,则#3=1.0 若#3=FUP[#2]时,则#3=-2.0 若#3=FIX[#2]时,则#3=-1.0 5) 指令函数时,可只写开头2个字母 例:ROUND→RO FIX→FI 6) 优先级 函数→乘除(*,1,AND)→加减(+,-,OR,XOR) 例:#1=#2+#3*SIN[#4]; 7) 括号为中括号,最多5重,园括号用于注释语句 例:#
25、1=SIN[[[#2+#3]*#4+#5]*#6];(3重) 一. 转移与循环指令 1.无条件的转移 格式: GOTO 1; GOTO #10; 2.条件转移 格式: IF[<条件式>] GOTO n 条件式: #j EQ#k 表示= #j NE#k 表示≠ #j GT#k 表示> #j LT#k 表示< #j GE#k 表示≥ #j LE#k 表示≤ 例: IF[#1 GT 10] GOTO 100; … N100 G00 691 X10; 例:求1到10之和 O9500; #1=0
26、 #2=1 N1 IF [#2 GT10] GOTO 2 #1=#1+#2; #2=#2+1; GOTO 1 N2 M301.循环 格式:WHILE[<条件式>]DO m;(m=1,2,3) … … … ENDm 说明:1.条件满足时,执行DOm到ENDm,则从DOm的程序段 不满足时,执行DOm到ENDm的程序段 2.省略WHILE语句只有DOm…ENDm,则从DOm到ENDm之间形成死循环 3.嵌套 4.EQ NE时,空和“0”不同 其他条件下,空和“0”相同 例:求1到10之和
27、 O0001; #1=0; #2=1; WHILE [#2LE10] DO1; #1=#1+#2; #2=#2+#1; END1; M30; FANUC系统宏程序编程 一 变量 普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的操作改变。 #1=#2+100 G01 X#1 F300 说明: 变量的表示 计算机允许使用变量名,用户宏程序不行。变量用变量符号(#)和后面的变量号指定。 例如:
28、#1 表达式可以用于指定变量号。此时,表达式必须封闭在括号中。 例如:#[#1+#2-12] 变量的类型 变量根据变量号可以分成四种类型 变量号 变量类型 功能 #0 空变量 该变量总是空,没有值能赋给该变量. #1-#33 局部变量 局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空.调用宏程序时,自变量对局部变量赋值, #100-#199 #500-#999 公共变量 公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失. #1000 系统变量
29、 系统变量用于读和写CNC运行时各种数据的变化,例如,刀具的当前位置和补偿值. 变量值的范围 局部变量和公共变量可以有0值或下面范围中的值: -1047到-10-29或-10-2到-1047 如果计算结果超出有效范围,则发出P/S报警NO.111. 小数点的省略 当在程序中定义变量值时,小数点可以省略。 例:当定义#1=123;变量#1的实际值是123.000。 变量的引用 为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放在括号中。 例如:G01X[#1+#2]F#3; 被引用变量的值根据地址的最小设定单位自动地舍入。 例如: 当G00
30、X#/;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346. 改变引用变量的值的符号,要把负号(-)放在#的前面。 例如:G00X-#1 当引用未定义的变量时,变量及地址都被忽略。 例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0。 双轨迹(双轨迹控制)的公共变量 对双轨迹控制,系统为每一轨迹都提供了单独的宏变量,但是,根据参数N0.6036和6037的设定,某些公共变量可同时用于两个轨迹。 未定义的变量 当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。
31、引用 当引用一个未定义的变量时,地址本身也被忽略。 当#1=<空> 当#1=0 G90 X100 Y#1 G90 X100 G90 X100 Y#1 G90 X100 Y0 (b) 运算 除了用<空>赋值以外,其余情况下<空>与0相同。 当#1=<空>时 当#1=0时 #2=#1 #2=<空> #2=#1 #2=0 #2=#*5 #2=0 #2=#*5 #2=0 #2=#1+#1 #2=0 #2=#1+#1 #2=0 (c)条件表达式 EQ和NE中的<空>不同于0。 当#1=<空>时 当#1=0时 #1EQ#0 成立 #1EQ#0
32、 不成立 #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时,270~90 当参数(NO.6004#0)NAT位设为1时,-90~90 (2)当#j超出-1到1的范围时,发出P/S报警NO.111. (3)常数可替代变量#j ARCCOS #i=ACOS[#j] 取值范围从180~0 当#j超出-1到1的范围时,发出P/S报警NO.111. 常数可替代变量#j
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化妆品美妆产品介绍自然之选清新护肤
- 心理健康情绪管理主题班会我的情绪小怪兽
- 慢性病宣传慢性肾脏病防治如何预防和管理慢性肾脏病
- 深入学习2025最高人民法院工作报告
- 孩子如何合理使用DeepSeek(AI仅辅助不可让渡创造力)
- 肝病健康知识宣讲甲型肝炎及戊型肝炎传播和预防
- 慢性肾脏病知识宣传慢性肾脏病的危害
- 315消费者权益日共筑满意消费
- 世界睡眠日健康睡眠知识科普睡眠是维持生命健康的重要源泉
- 深入学习2025政府工作报告要点双语版
- 初中语文作文素材:100个描写外貌佳句
- 初中语文古诗词鉴常考题型及答题技巧
- 初中语文作文素材:9个落笔即封神的议论文作文论据
- 初中资料:学好语文的方法及技巧
- 初中语文作文素材:经典格言总结