分享
分销 收藏 举报 申诉 / 22
播放页_导航下方通栏广告

类型数控车床宏程序编程.doc

  • 上传人:a199****6536
  • 文档编号:2807563
  • 上传时间:2024-06-06
  • 格式:DOC
  • 页数:22
  • 大小:344.04KB
  • 下载积分:10 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    文档 数控车床 程序 编程
    资源描述:
    <p>(完整版)学了此文档_数控车床宏程序编程就会了 数控宏程序 一.什么是宏程序? 什么是数控加工宏程序?简单地说,宏程序是一种具有计算能力和决策能力的数控程序.宏程序具有如下些特点: 1.使用了变量或表达式(计算能力),例如: (1)G01 X[3+5] &nbsp; &nbsp; &nbsp; ;有表达式3+5 (2)G00 X4 F[#1] &nbsp; &nbsp; ;有变量#1 (3)G01 Y[50*SIN[3]] ;有函数运算 2.使用了程序流程控制(决策能力),例如: (1)IF #3 GE 9 &nbsp; &nbsp; &nbsp; ;有选择执行命令 …… ENDIF (2)WHILE #1 LT #4*5 ;有条件循环命令 …… ENDW 二.用宏程编程有什么好处? 1.宏程序引入了变量和表达式,还有函数功能,具有实时动态计算能力,可以加工非圆曲线,如抛物线、椭圆、双曲线、三角函数曲线等; 2.宏程序可以完成图形一样,尺寸不同的系列零件加工; 3.宏程序可以完成工艺路径一样,位置不同的系列零件加工; 4.宏程序具有一定决策能力,能根据条件选择性地执行某些部分; 5.使用宏程序能极大地简化编程,精简程序。适合于复杂零件加工的编程。 一.宏变量及宏常量 1.宏变量 先看一段简单的程序: G00 X25.0 上面的程序在X轴作一个快速定位。其中数据25.0是固定的,引入变量后可以写成: #1=25。0 &nbsp; &nbsp;;#1是一个变量 G00 X[#1] &nbsp;;#1就是一个变量 宏程序中,用“#&quot;号后面紧跟1~4位数字表示一个变量,如#1,#50,#101,……。变量有什么用呢?变量可以用来代替程序中的数据,如尺寸、刀补号、G指令编号……,变量的使用,给程序的设计带来了极大的灵活性。 使用变量前,变量必需带有正确的值.如 #1=25 G01 X[#1] &nbsp;;表示G01 X25 #1=—10 &nbsp; &nbsp; ;运行过程中可以随时改变#1的值 G01 X[#1] &nbsp;;表示G01 X-10 用变量不仅可以表示坐标,还可以表示G、M、F、D、H、M、X、Y、……等各种代码后的数字.如: #2=3 G[#2] X30 &nbsp;;表示G03 X30 例1 &nbsp;使用了变量的宏子程序。 %1000 #50=20 &nbsp; &nbsp; &nbsp; &nbsp; ;先给变量赋值 M98 P1001 &nbsp; &nbsp; &nbsp;;然后调用子程序 #50=350 &nbsp; &nbsp; &nbsp; &nbsp;;重新赋值 M98 P1001 &nbsp; &nbsp; &nbsp;;再调用子程序 M30 %1001 G91 G01 X[#50] ;同样一段程序,#50的值不同,X移动的距离就不同 M99 2.局部变量 编号#0~ #49的变量是局部变量。局部变量的作用范围是当前程序(在同一个程序号内)。如果在主程序或不同子程序里,出现了相同名称(编号)的变量,它们不会相互干扰,值也可以不同。 例 %100 N10 #3=30 &nbsp; ;主程序中#3为30 M98 P101 &nbsp; &nbsp;;进入子程序后#3不受影响 #4=#3 &nbsp; &nbsp; &nbsp; ;#3仍为30,所以#4=30 M30 %101 #4=#3 &nbsp; &nbsp; &nbsp; ;这里的#3不是主程序中的#3,所以#3=0(没定义),则:#4=0 #3=18 &nbsp; &nbsp; &nbsp; ;这里使#3的值为18,不会影响主程序中的#3 M99 3.全局变量 编号#50~ #199的变量是全局变量(注:其中#100~#199也是刀补变量)。全局变量的作用范围是整个零件程序。不管是主程序还是子程序,只要名称(编号)相同就是同一个变量,带有相同的值,在某个地方修改它的值,所有其它地方都受影响。 例 %100 N10 #50=30 &nbsp; ;先使#50为30 M98 P101 &nbsp; &nbsp; ;进入子程序 #4=#50 &nbsp; &nbsp; &nbsp; ;#50变为18,所以#4=18 M30 %101 #4=#50 &nbsp; &nbsp; &nbsp; ; #50的值在子程序里也有效,所以#4=30 #50=18 &nbsp; &nbsp; &nbsp; ;这里使#50=18,然后返回 M99 为什么要把变量分为局部变量和全局变量?如果只有全局变量,由变量名不能重复,就可能造成变量名不够用;全局变量在任何地方都可以改变它的值,这是它的优点,也是它的缺点。说是优点,是因为参数传递很方便;说是缺点,是因为当一个程序较复杂的时候,一不小心就可能在某个地用了相同的变量名或者改变了它的值,造成程序混乱.局部变量的使用,解决了同名变量冲突的问题,编写子程序时,不需要考虑其它地方是否用过某个变量名。 什么时候用全局变量?什么时候用局部变量?在一般情况下,你应优先考虑选用局部变量。局部变量在不同的子程序里,可以重复使用,不会互相干扰.如果一个数据在主程序和子程序里都要用到,就要考虑用全局变量。用全局变量来保存数据,可以在不同子程序间传递、共享、以及反复利用. 刀补变量(#100~#199)。这些变量里存放的数据可以作为刀具半径或长度补偿值来使用。如 #100=8 G41 D100 &nbsp; &nbsp;;D100就是指加载#100的值8作为刀补半径。 注意: 上面的程序中,如果把D100写成了D[#100],则相当于D8,即调用8号刀补,而不是补偿量为8。 4.系统变量 #300以上的变量是系统变量。系统变量是具有特殊意义的变量,它们是数控系统内部定义好了的,你不可以改变它们的用途。系统变量是全局变量,使用时可以直接调用. #0~#599是可读写的,#600以上的变量是只读的,不能直接修改。 其中,#300 ~#599是子程序局部变量缓存区。这些变量在一般情况下,不用关心它的存在,也不推荐你去使用它们。要注意同一个子程序,被调用的层级不同时,对应的系统变量也是不同的。#600~#899是与刀具相关系统变量.#1000~#1039坐标相关系统变量。#1040~#1143参考点相关系统变量。#1144~#1194系统状态相关系统变量.(详见:2.华中数控系统系统变量一览) 有时候需要判断系统的某个状态,以便程序作相应的处理,就要用到系统变量. 5.常量 PI 表示圆周率, TRUE 条件成立(真), FALSE 条件不成立(假) . 二.运算符与表达式 1.算术运算符 加 + &nbsp;, 减 — , 乘 * , &nbsp;除 / 2.条件运算符 宏程序运算符 EQ NE GT GE LT LE 数学意义 = ≠ > ≥ < ≤ 条件运算符用在程序流程控制IF和WHILE的条件表达式中,作为判断两个表达式大小关系的连接符. 注意:宏程序条件运算符与计算机编程语言的条件运算符表达习惯不同。 3.逻辑运算符 在IF或WHILE语句中,如果有多个条件,用逻辑运算符来连接多个条件. AND (且) &nbsp; 多个条件同时成立才成立 OR &nbsp;(或) &nbsp; 多个条件只要有一个成立即可 NOT (非) &nbsp; 取反(如果不是) 例 #1 LT 50 AND #1GT 20 &nbsp;—— 表示:[#1〈50]且[#1&gt;20] #3 EQ 8 OR #4 LE 10 &nbsp; &nbsp;—— 表示:[#3=8]或者[#4≤10] 有多个逻辑运算符时,可以用方括号来表示结合顺序,如: NOT[#1 LT 50 AND #1GT 20]—-表示:如果不是“#1&lt;50 0=&quot;&quot; 1=&quot;&quot; 2=&quot;&quot; 3=&quot;124。0&quot; 4=&quot;&quot; 6=&quot;&quot; 10=&quot;&quot; 14=&quot;&quot; 20=&quot;&quot; 50=&quot;#3+12&quot; 51=&quot;&quot; 55=&quot;&quot; 180=&quot;&quot; lt=&quot;&quot; and=&quot;&quot; 2gt=&quot;&quot; or=&quot;&quot; eq=&quot;&quot; le=&quot;&quot; gt=&quot;&quot; endw.=&quot;&quot; if=&quot;&quot; endif=&quot;&quot; :=&quot;&quot; m99=&quot;&quot; g01=&quot;&quot; x20=&quot;&quot; y15=&quot;&quot; else=&quot;&quot; g91g01=&quot;&quot; x10f250=&quot;&quot; g91g01x35f200=&quot;&quot; while=&quot;&quot; endw=&quot;&quot; .=&quot;&quot;&gt;0 G91G01X10 &nbsp; &nbsp; ;成立就执行 #2=#2—3 &nbsp; &nbsp; &nbsp; ;修改变量, ENDW &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;返回 G90 G00 z50 &nbsp; &nbsp;;不成立跳到这里执行 WHILE中必须有“修改条件变量&quot;的语句,使得其循环若干次后,条件变为“不成立”而退出循环,不然就成为死循环。 假 真 IF条件成立? 程序A ENDIF ELSE 程序B IF…ELSE…ENDIF流程图 假 真 IF条件成立? 程序1 …… 程序N ENDIF IF…ENDIF流程图 WHILE…ENDW流程图 假 真 WHILE条件 程序1 …… 程序N ENDW 图1 流程控制 四.子程序及参数递传 1.普通子程序 普通子程序指没有宏的子程序,程序中各种加工的数据是固定的,子程序编好后,子程序的工作流程就固定了,程序内部的数据不能在调用时“动态”地改变,只能通过“镜像&quot;、“旋转&quot;、“缩放”、“平移&quot;来有限的改变子程序的用途. 例 %4001 G01 X80 F100 M99 子程序中数据固定,普通子程序的效能有限。 2.宏子程序 宏子程序可以包含变量,不但可以反复调用简化代码,而且通过改变变量的值就能实现加工数据的灵活变化或改变程序的流程,实现复杂的加工过程处理。 例 &nbsp; %4002 G01 Z[#1] F[#50] &nbsp; ;Z坐标是变量;进给速度也是变量,可适应粗、精加工。 M99 例 对圆弧往复切削时,指令G02、G03交替使用。参数#51改变程序流程,自动选择。 %4003 IF #51 GE 1 G02 X[#50] R[#50] &nbsp; ;条件满足执行G02 ELSE G03 X[—#50] R[#50] &nbsp;;条件不满足执行G03 ENDIF #51=#51*[-1] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;改变条件,为下次做准备 M99 子程序中的变量,如果不是在子程序内部赋值的,则在调用时,就必需要给变量一个值。这就是参数传递问题,变量类型不同,传值的方法也不同。 3.全局变量传参数 如果子程序中用的变量是全局变量,调用子程序前,先给变量赋值,再调用子程序. 例: %400 #51=40 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;;#51为全局变量,给它赋值 M98 P401 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;;进入子程序后#51的值是40 #51=25 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;;第二次给它赋值 M98 P401 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;;再次调用子程序,进入子程序后#51的值是25 M30 %401 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;;子程序 G91G01X[#51]F150 &nbsp; &nbsp;;#51的值由主程序决定 M99 4.局部变量传参数 问题: %400 N1 &nbsp;#1=40 &nbsp; &nbsp; &nbsp; ;为局部变量#1赋值 N2 &nbsp;M98 P401 &nbsp; &nbsp;;进入子程序后#1的值是40吗? M30 %401 N4 &nbsp;G91G01X[#1] &nbsp;;子程序中用的是局部变量#1 M99 结论: 主程序中N1行的#1与子程序中N4行的#1不是同一个变量,子程序不会接收到40这个值。怎么办呢? 局部变量的参数传递,是在宏调用指令后面添加参数的方法来传递的。上面的程序中,把N1行去掉,把N2行改成如下形式即可: N2 &nbsp;M98 P401 B40 比较一下,可知多了个B40,其中B代表#1,紧跟的数字40代表#1的值是40。这样就把参数40传给了子程序%401中的#1.更一般地,我们用G65来调用宏子程序(称宏调用). G65指令: G65是专门用来进行宏子程序调用的,但在华中数控系统里面,G65和M98功能相同,可以互换. 宏子程序调用指令G65的格式: G65 &nbsp;P__ &nbsp;L__ &nbsp;A__ &nbsp;B__ &nbsp;… &nbsp;Z__ P &nbsp; &nbsp; 子程序号 L &nbsp; &nbsp; 调用次数 A~Z &nbsp; 参数,每个字母与一个局部变量号对应。A对应#0,B对应#1,C对应#2,D对应#3,……如A20,即#0=20;B6。5,即#1=6。5;其余类推.换句话说,如果要把数50传给变量#17,则写R50。 G65代码在调用宏子程序时,系统会将当前程序段各字母(A~Z共26个,如果没有定义则为零)后跟的数值对应传到宏子程序中的局部变量#0-#25 。下面列出了宏调用时,参数字母与变量号的对应关系: 子程序中的变量 #0 #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 传参数用的字母 A B C D E F G H I J K L M 子程序中的变量 #13 #14 #15 #16 #17 #18 #19 #20 #21 #22 #23 #24 #25 传参数用的字母 N O P Q R S T U V W X Y Z 要注意,由于字母G、P、L等已被宏调用命令、子程序号和调用次数占用,所以不能再用来传递其它任意数据。传进去的是,G65即#6=65,P401即#15=401(子程序号),L2即#11=2。为了便于参数传递,编写子程序时要避免用#6、#15、#11等变量号来接收数据,但这些变量号可以用在子程序中作为内部计算的中间变量暂存数据。 另外,G65代码在调用宏子程序时,还会把当前九个轴的绝对位置(工件绝对坐标)传入局部变量#30~#38.#30~#38与轴名的对应关系由机床制造厂家规定,通常#30为X轴,#31为Y轴,#32为Z轴。固定循环指令初始平面Z 模态值也会传给变量#26。通过#30~#38可以轻易得到进入子程序时的轴坐标位置,这在程序流程控制中是很有用的. 5.系列零件加工 所谓系列零件加工,是指不同规格的零件,形状基本相同,加工过程也相同,只是尺寸数据不一样,利用宏程序就可以编写出一个通用的加工程序来。 例1 &nbsp;切槽宏子程序。 %8002 G92X90 Z30 M98 P8001 U10 V50 A20 B40 C3 &nbsp; &nbsp; &nbsp;;UVABC对应尺寸变量见下图 G00 X90 Z30 M30 %8001 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;;子程序 G00 Z[-#20] &nbsp; &nbsp; &nbsp; &nbsp; ;切刀Z向定位 X[#1+5] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;;接近工件,留5毫米距离 #10=#2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;#10已切宽度+#2 WHILE #10 LT #21 &nbsp; ;够切一刀? &nbsp;G00 Z[-#20—#10] &nbsp; ;Z向定位 &nbsp;G01 X[#0] &nbsp; &nbsp; &nbsp; &nbsp;;切到要求深度 &nbsp;G00X[#1+5] &nbsp; &nbsp; &nbsp;;X退刀到工件外 &nbsp;#10=#10+#2-1 &nbsp; &nbsp; ;修改#10 ENDW G00 Z[—#21—#20] &nbsp; &nbsp;;切最后一刀 G01X[#0] G00X[#1+5] M99 例2 &nbsp;根据下面系列零件的图形,编辑精加工轮廓及切断的程序.轮廓加工用外圆车刀、切断用切断刀(刀位点在右刀尖)。工件零点设在右端面。 ;工件1主程序: %1000 M03 S600 T0101 M98 P1001 A8B10C24D20E5F40 T0202 M98 P1002 C24F40 M30 ;工件2主程序: %2000 M03 S600 T0101 M98 P1001 A10B15C28D24E7F50 T0202 M98 P1002 C28F50 M30 ;轮廓加工子程序 %1001 G00X0Z3 G01Z0F100 G03X[2*#0]Z[#0]R[#0] G01X[#2] W[-#4] #10= #1- [#2—#3]/2 #11=SQRT[#1*#1—#10*#10] G02X[#2]W[-2*#11]R[#1] G01Z[—#5] U2 G00X[#2+50]Z100 M99 ;切断子程序 %1002 G00X[#2+2]Z[-#5] G01X0.3F30 G00X[#2+50] Z100 M99 6.高级参考 在子程序中,可能会改变系统模态值。例如,主程序中的是绝对编程(G90),而子程序中用的是相对编程(G91),如果调用了这个子程序,主程序的模态就会受到影响.当然,对于简单的程序,你可以在子程序返回后再加一条G90指令变回绝对编程。但是,如果编写的子程序不是你自己用,别人又不知道你改变了系统模态值,直接调用就有可能出问题。有没有办法,使子程序不影响主程序的模态值呢?简单的办法就是,进入子程序后首先把子程序会影响到的所有模态用局部变量保存起来,然后再往后执行,并且在子程序返回时恢复保存的模态值。看下面的例子 例 %102 ;不管原来是什么状态,先记录下来 #45=#1162 &nbsp;; 记录第12 组模态码#1162 是G61 或 G64? #46=#1163 &nbsp;; 记录第13 组模态码#1163 是G90 或 G91? ;现在可以改变已记录过的模态 G91 G64 &nbsp; &nbsp;;用相对编程G91 及连续插补方式G64 …… &nbsp; &nbsp; &nbsp; ;这里是其它程序 ;子程序结束前恢复记录值 G[#45] G[#46] ;恢复第12 组13 组模态 M99 由此可见,系统变量虽然是不能直接改写的,但并不是不能改变的。系统模态值是可以被指令改变的。 固定循环也是用宏程序实现的,而且固定循环中它改变了系统模态值,只是在固定循环子程序中采用了保护措施,在固定循环宏子程序返回时,恢复了它影响过的系统模态,所以外表看它对系统模态没有影响。这可以通过分析系统提供的固定循环宏程序看出来。 对于每个局部变量,还可用系统宏AR[]来判别该变量是否被定义,是被定义为增量或绝对方式。该系统宏的调用格式如下 AR[#变量号] 返回值: 0 表示该变量没有被定义 90 表示该变量被定义为绝对方式G90 91 表示该变量被定义为相对方式G91 例 &nbsp;下面的主程序%1000 在调用子程序%9990 时设置了I JK 之值,子程序%9990 可分别通过当前局部变量#8 #9 #10 来访问主程序的I J K 之值 %1000 G92 X0Y0Z0 M98 P9990 I20 J30 K40 M30 %9990 IF [AR[#8] EQ 0] OR [AR[#9] EQ 0] OR [AR[#10] EQ 0] M99 &nbsp; &nbsp; &nbsp; &nbsp; ; 如果没有定义I J K 值,则返回 ENDIF N10 G91 &nbsp; &nbsp; &nbsp; &nbsp; ; 用增量方式编写宏程序 IF AR[#8] EQ 90 ; 如果I 值是绝对方式G90 #8=#8—#30 &nbsp; &nbsp;;将I 值转换为增量方式, #30 为X 的绝对坐标 ENDIF M99 HNC-21M 子程序嵌套调用的深度最多可以有七层,每一层子程序都有自己独立的局部变量,变量个数为50 。当前局部变量为#0-#49, 第一层局部变量为#200—#249 ,第二层局部变量为#250—#299,第三层局部变量#300-#349 ,依此类推。在子程序中如何确定上层的局部变量要依上层的层数而定。由于通过系统变量来直接访问局部变量容易引起混乱,因此不提倡用这种方法. 例 %0099 G92 X0 Y0 Z0 N100 #10=98 M98 P100 M30 %100 N200 #10=222 &nbsp; ;此时N100 所在段的局部变量#10 为第0层#210 M98 P110 M99 %110 N300 #10=333 &nbsp; ;此时N200 所在段的局部变量#10为第1层#260,即#260=222 ;此时N100 所在段的局部变量#10为第0层#210,即#210=98 M99 五.宏编程实例 1.数车编程 (1)函数曲线加工通用宏程序 ;任意曲线y=f(x)的加工 ;单调区间x由x1变到x2 方法一-—-—— %1001 #1=x1 &nbsp; ;初值 #2=f(x1) ;或者写成#2=f(#1) WHILE #1 LE x2;或者WHILE #1 GE x2 &nbsp; G01 X[#1] Y[#2] &nbsp;;到下一位置 &nbsp; #1=#1+0.01 &nbsp; &nbsp; &nbsp;;X增量0.01 &nbsp; ;或者#1=#1-0。01 &nbsp;;X增量-0。01 &nbsp; #2=f(#1) &nbsp; &nbsp; &nbsp; &nbsp;;计算下个点坐标 ENDW ;。.。。。.退刀 M30 (实际应用,请用具体表达式代替f(x)) 方法二 %1002 #1=x1 &nbsp; ;初值 #3=f(x1) ;或者写成#3=f(#1) WHILE #1 LE x2;或者WHILE #1 GE x2 &nbsp; #2=#3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;保存前一个点坐标 &nbsp; #1=#1+0.01 &nbsp; &nbsp; &nbsp;;X增量0.01 &nbsp; ;或者#1=#1-0。01 &nbsp;;X增量—0.01 &nbsp; #3=f(#1) &nbsp; &nbsp; &nbsp; &nbsp;;计算下个点坐标 &nbsp; G91 G01 X[0。01] Y[#3—#2] ;到下一位置 ENDW ;。。。。。.退刀 M30 (2)抛物线车削1 用宏程序编制如图所示抛物线在X区间[0,8]内的程序。 %3401 T0101 G37 M03 S600 &nbsp; ;G37半径编程 #0=0 &nbsp; ;X坐标,初值为0 #1=0 &nbsp; ; Z坐标,初值为0 WHILE #0 LE 8 &nbsp;G90G01X[#0]Z[-#1]F200 &nbsp;#0=#0+0.08 &nbsp;#1=#0*#0/2 ENDW G00 X40 Z80 M05 M30 (3)抛物线车削2 %0342 T0101 M03 S600 G00 X20.5 Z2 #11=12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;B初值 #10=SQRT[2*#11] &nbsp;;A初值 WHILE #10 LE 8 &nbsp;G90G01 X[2*#10] Z[12— #11] F200 &nbsp;#10=#10+0.1 &nbsp;#11=#10*#10/2 ENDW G01 X16 Z[—32+12] Z—28 U4 G00 X20。5 Z2 M05 M30 (4)抛物线车削3 %0342 T0101 M03 S600 G00 X35 Z3 G01 X18 F100 Z—8 #11=12 &nbsp; &nbsp; &nbsp; &nbsp;;B初值 #10=SQRT[2*#11] ;A初值 WHILE #11 LE 32 &nbsp; G90G01X[2*[#10+3]]Z[4—#11]F500 &nbsp; #11=#11+0。06 #10=SQRT[2*#11] ENDW G01 X22 Z—28 Z—30 X30 Z—35 G00X35Z3 M30 (5)抛物线车削4 %0001 T0101 M03 S800 G92 X100 Z50 G64 G00X36Z4 #11=32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;B初值 #10=SQRT[2*#11] &nbsp;;A初值 WHILE #11 GT 0 G01X[20+2*#10]Z[#11—38] #11=#11—0.2 #10=SQRT[2*#11] ENDW G01X20Z—38 G00X18 Z4 X100Z50 M30 (6)抛物线车削5(G71与宏程序) 这个例子中应用了G71复合循环与宏程序配合完成粗精加工。G71参数简介: G71 U_R_P_Q_X_Z_F_S_T_ U背吃刀量;R每次退刀量;P起始段号;Q结束段号;X、Z精加工余量;F、S、T粗车时有效,精车时以精车程序为准。 %3402 T0101 M03 S600 G00 X21 Z2 G71 U0.5 R1 P11 Q22 X0。6 Z0.1 F100 S600 N11 G01 X0 S1200 &nbsp;;精加工,起始 #10=0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;A坐标,初值为0 #11=0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;B坐标,初值为0 WHILE #10 LE 8 &nbsp; G01 X[2*#10] Z[-#11] F50 #10=#10+0。1 &nbsp; &nbsp; &nbsp;;A坐标增量0.1 #11=#10*#10/2 &nbsp; ;更新B坐标 ENDW G01 X16 Z-32 Z-40 N22 G00X20。5 &nbsp; ;精加工,结束 X21 Z2 M30 (7)抛物线车削6 %3404 T0101 M03 S600 G92X80Z30 G00X20Z3 G71U0.6R0.6P6Q14X—0.6Z0。1F100 N6G01X38 #11=0 &nbsp; &nbsp;;B初值 #10=0 &nbsp; &nbsp;;A初值 WHILE #11 LE 18 G01X[38-2*#10]Z[—#11]F100 #11=#11+0.5 #10=SQRT[#11*2] ENDW G01X26 Z—18 N14 G01Z-24 X22 G00Z5 X80Z30M05 M30 (8)正弦线车削 %3404 M03 S600 T0101 G92 X80 Z30 G00 X25 Z3 G71 U0。6R0。6P6Q13X0。8F100 N6G0X17 #11=0 WHILE #11 GE —25 #9=#11*PI/10 &nbsp; ; #10=3。5*SIN[#9] G01X[17—2*#10]Z[#11]F100 #11=#11—0.5 N13ENDW G01X24Z—25 Z-30 X30 G00X80Z30 M30 (9)抛物线与椭圆车削 %8002 G92X50Z100 M98 P8001 A8B5C4U32V40W55 G36G90X50Z0 M30 %8001 G64 G37 &nbsp; &nbsp;(连续切削,半径编程) #10=0 #11=0 (抛物线起点) WHILE #11 LE #20 G01 X[#10] Z[-#11] F150 &nbsp; #10=#10+0。08 &nbsp;(抛物线X增量) #11=#10*#10/#2(计算抛物线z) ENDW #50= SQRT[#20*#2] (抛物线与椭圆交接处半径) G01 X[#50] Z[—#20](抛物线终点) G01Z[—#21] &nbsp; &nbsp; &nbsp; (直线终点) #12=0 #13=0 (椭圆起点) WHILE #13 LE #1 #12=#0/#1*SQRT[#1*#1—#13*#13] (椭圆X增量) G01 X[#50+#0-#12] Z[—#21—#13] #13=#13+0.08 &nbsp;(椭圆z增量) ENDW G01 X[#50+#0] Z[—#21—#1] (椭圆终点) Z[—#22] U2 G0X50Z100 M99 (10)椭圆粗、精车削 --------——-—---——-—-————----—-—————-————-—-—--——-—-————--—-———-—---—-—---——-—---——---—-——-———-——--————--—-——— %100 M03 T0101 S600 G00 X32 Z2 ;粗车 #1=15 #2=0 WHILE #1 GE 1 ;还可以车一刀(2mm) &nbsp; #1=#1—1 &nbsp; #2=25/15*SQRT[15*15—#1*#1] &nbsp; G00 X[#1*2+0。5] &nbsp; ;转为直径编程并留精车余量0。5 &nbsp; G01 Z[#2-25] F150 &nbsp; G91 X1 &nbsp; G90 Z2 ENDW G00 X0 S1200 &nbsp;;精车 #1=0 #2=25 WHILE #1 LE 15 &nbsp; G01 X[#1*2] Z[#2-25] F80 &nbsp; #1=#1+0.1 &nbsp; #2=25/15*SQRT[15*15—#1*#1] ENDW G01 X32 G00 X50 Z100 M30 (11)用子程序完成粗、精加工 子程序按精车路径用相对编程(X方向). 方法1———---———————---—--—---———--—---—-—----——————-—---——-—--———---——-———--—-----------————--———-—-—-—--——- %1010 M03 S600 T0101 #50=35 &nbsp; &nbsp;;初始化X尺寸(毛坯值) #51=3 &nbsp; &nbsp; ;切削量 WHILE #50 GT [#51+0.5] &nbsp;;还够车一刀? &nbsp;#50=#50-#51 &nbsp;G00 X[#50] Z1 &nbsp;M98 P1011 ENDW G00 X0。5 Z1 M98 P1011 &nbsp; ;半精车 G00 X0 Z1 M98 P1011 &nbsp; ;精车 G00 X50 Z100 M05 M30 %1011 G01 Z0 &nbsp; ;编程起点X0,Z1 G03 U20 W-10 R10 G01 U12 W—5 W—10 U1 &nbsp;;退刀 G00 Z1 M99 方法2----——-———--—-—---------———--—---—--—-—-————-—---—--—-—--—--—--———-—-——-—-—--——-——-———————————-——- %1020 M03 S600 T0101 #50=35 &nbsp; &nbsp;;初始化X尺寸(毛坯值) #51=3 &nbsp; &nbsp; ;切削量 WHILE #50 GT [#51+0。5] &nbsp;;还够车一刀? &nbsp;#50=#50—#51 &nbsp;G90 G00 X[#50] Z1 &nbsp;M98 P1021 ENDW G00 X0.5 Z1 M98 P1021 &nbsp; ;半精车 G00 X0 Z1 M98 P1021 &nbsp; ;精车 G00 X50 Z100 M05 M30 %1021(少走空刀的子程序) G01 Z0 &nbsp; ;编程起点X0,Z1 G03 U20 W—10 R10 IF [#50+20] GT 35 &nbsp; &nbsp; &nbsp;;过了毛坯就退刀 &nbsp;G01 U12 W-5 &nbsp;IF [#50+20+12] GT 35 ;过了毛坯就退刀 &nbsp; &nbsp;W-10 &nbsp;ENDIF ENDIF U1 &nbsp;;退刀 G00 Z1 M99 2.华中数控系统系统变量一览 (1)子程序嵌套局部变量 主程序的局部变量为0层,没有对应的系统变量 #200~ #249 &nbsp;0 层局部变量(对应0层子程序#0~#49 #250 ~#299 &nbsp;1 层局部变量(对应1层子程序#0~#49) #300 ~#349 &nbsp;2 层局部变量(对应2层子程序#0~#49) #350 ~#399 &nbsp;3 层局部变量(对应3层子程序#0~#49) #400~ #449 &nbsp;4 层局部变量(对应4层子程序#0~#49) #450 ~#499 &nbsp;5 层局部变量(对应5层子程序#0~#49) #500 ~#549 &nbsp;6 层局部变量(对应6层子程序#0~#49) #550 ~#599 &nbsp;7 层局部变量(对应7层子程序#0~#49) (2)刀具相关系统变量 #600 ~#699 刀具长度寄存器H0 H99 #700~ #799 刀具半径寄存器D0 D99 #800 ~#899 刀具寿命寄存器 (3)坐标相关系统变量: #1000 机床当前位置X &nbsp; #1001 机床当前位置Y &nbsp; #1002 机床当前位置Z #1003 机床当前位置A &nbsp; #1004 机床当前位置B &nbsp; #1005 机床当前位置C #1006 机床当前位置U &nbsp; #1007 机床当前位置V &nbsp; #1008 机床当前位置W #1009 保留 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#1010 程编机床位置X &nbsp; #1011 程编机床位置Y #1012 程编机床位置Z &nbsp; #1013 程编机床位置A &nbsp; #1014 程编机床位置B #1015 程编机床位置C &nbsp; #1016 程编机床位置U &nbsp; #1017 程编机床位置V #1018 程编机床位置W &nbsp; #1019 保留 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#1020 程编工件位置X #1021 程编工件位置Y &nbsp; #1022 程编工件位置Z &nbsp; #1023 程编工件位置A #102</p><!--50-->
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:数控车床宏程序编程.doc
    链接地址:https://www.zixin.com.cn/doc/2807563.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork