• 1. 计算机数控技术及理论研究生数控技术第10次课 开课时间:1a 开课单位:机械工程学院
    • 2. 6 用于定位和铣削的代码6.1 变换 6.2 准备代码 6.3 G00——快速横切 6.4 G01——切削直线 6.5 G02、G03——切削圆弧 6.6 使用圆弧插补
    • 3. 6.1 变换请花费几分钟研究表6-1的文本变换和图6-1中的图形变换。字母后面的数字——小数Xn.nn.n是小数。例如:X2.50,Z5.0001字母后面的数字——非小数Lnn是整数。例如:L5,P2000坐标(X,Y,Z)坐标按字母顺序放在括号内。例如:(1.25,1.0,-.50),(0,1)语法Gn Xn.n Yn.n(Ln)语法是指代码语法。需要说明字,但是多数是模态的。括号内的字是可选的。表6-1 数控编程文本转换
    • 4. 6.1 变换请花费几分钟研究表6-1的文本变换和图6-1中的图形变换。图6-1 图形变换用于编程实例
    • 5. 6.2 准备代码 用于控制和修改加工与定位操作的轴运动的代码称为准备代码。它们用字母“G”标明,通常简单指作G代码。有许多不同机床操作G代码,包括定位、直线切削、圆弧切削、钻削,其它更多操作。 用于实现加工操作的G代码以相似方式操作。调用G代码,然后机床运动到详细坐标。其它G代码用于建立机床条件,它们不会直接引起轴运动。这些代码会修改实际完成加工的代码行为。例如,G00代码会引起机床移动到详细位置。然而,其它像G20或G21代码可以告诉机床位置应是英寸还是毫米。
    • 6. 6.3 G00——快速横切 G00是用于实现快速横切的代码。快速横切用于快速定位刀具,准备切削或移动刀具到相对刀具和零件更换的安全位置。G00可用于刀具与工件不直接接触的任何位置,用于你希望节约时间的位置。快速横切从不用于切削——速度非常快但不恒定。然而,G00代码广泛用于定位刀具钻削或钻孔。
    • 7. 6.3 G00——快速横切图6-2表明在刀具更换位置启动,必须定位在工件内加工槽的刀具。你的传统铣床经验告诉你加工几何形状,你必须首先移动刀具到位置,然后缓慢将刀具插入零件至要求的深度。同样也适用数控加工。然而,我们可以命令机床以非常快的速度移动到你想要开始切削的附近的点;这称为快速横切。实际插入切削使用不同编程移动更缓慢的代码。图6-2 快速横切特别用于定位
    • 8. 6.3 G00——快速横切快速定位的语法(句法)如下: G00 Xn.n Yn.n Zn.n 注意,G代码总给出移动的终点而不是起点,这很重要;机床已经知道了起始点,如图6-3所示。图6-3 通过命令机床移动到笛卡尔坐标系中详细点生成刀具轨迹
    • 9. 6.3 G00——快速横切例如,看以下代码。假设我们使用绝对位置,刀具目前定位于X0,Y0: N01 G00 X1.0 Y2.0 N02 G00 X4.0 Y2.0 N03 G00 X4.0 Y0.0 N01块命令机床运动到X1.0,Y2.0.N02块命令机床从X1.0,Y2.0移动到X4.0,Y2.0,就是向右移动3英寸。N03块命令机床从X4.0,Y2.0移动到X4.0,Y0.0,向下移动2英寸。
    • 10. 6.3 G00——快速横切 在快速定位与实际工件之间我们总应留有额外的空间。工件尺寸也许变化或没有准确定位在与以前零件相同的位置。当加工粗糙或非规则工件,如铸件时,我们也要格外谨慎。即使刀具与工件间干涉再小,也会在快速定位中引起刀具破坏。如果你要快速横切至工件表面(Z0.0),你要停下一小短段的坐标。通常实际定位在Z.200,然后调用切削G代码,如下所示: N10 G00 X3.0 Y4.0 N20 G00 Z.2 (快速到表面上0.2位置) N30 G01 Z-.5 F4.0 (使用线性插补切入)
    • 11. 6.3 G00——快速横切 注意刀具首先定位在X,Y坐标,然后沿着Z轴定位。所有三个坐标同时沿着机床三个轴定位(如图6-4所示),如下例所示: N10 G00 X3.0 Y4.0 Z.2 (快速) N20 G01 Z-.5 F4.0图6-4 通过编程同时沿着X、Z轴移动的对角线运动
    • 12. 6.3 G00——快速横切 代码是编程的非常合理的方法,但是注意最终刀具轨迹不是按具体坐标的直线,如果有任何障碍就会导致碰撞。因此,最好当你学习编程时在移动到Z轴前移动到X、Y轴。 出于几个原因,当使用快速定位时,我们必须小心。首先,许多机床有非常快的速度,从200英寸每分钟到1000英寸每分钟。这个速度比操作员可以反应停下机床横切的速度更快。编程员和计划员应小心确保编译适当刀具轨迹代码,否则会发生碰撞。当你是初级编程员时,要遵守的安全原则是当刀具在工件表面下方时从不使用快速定位。这容易通过阅读检测零件程序,当调用G00代码时,只检测总在零位置以上的Z轴位置。例如,以下N110块代码可能使刀具碰撞到工件上,因为Z轴位置在工件表面以下。然而,当激发G00时,通过跟踪Z轴位置很容易发现错误。 N100 G01 Z-.5 F5. N110 G00 X5.0 Y2.0
    • 13. 6.3 G00——快速横切 其次,快速定位不总是从当前位置到编程位置按直线运动。当遇到G00时,机床控制单元就会命令伺服电机以最大速度移动。如果运动只有一个轴,就不会有任何问题。然而,如果有两个或更多具体的轴的话,结果不会总是直线。伺服电机会以最大速度移动,直到坐标到达每个轴,然后停下来。举以下代码为例;假设每个轴会以相同速度移动,最终运动是到X3,Y3,倾角45°的直线: G01 X0.0 Y0.0 G00 X3.0 Y3.0
    • 14. 6.3 G00——快速横切 这些结果会有误导性,因为每个轴运动的距离是相同的;因此每个轴会同时到达目的地。如果移动的距离不同的话,首先会到达最短的距离,然后当其它轴继续以直线移动到目的地时,轴就会停下来。如果忽视这个概念的话,刀具也许会碰撞工件或工具(如带夹)。下列代码和图6-5证明了该想法。 G01 X0.0 Y0.0 G00 X6.0 Y3.0图6-5 快速横切不总产生直线轨迹
    • 15. 6.4 G01——切削直线 插补是用来描述穿过所有点的过程。以线性插补为例,刀具会通过直线上所有点,用块详细说明笛卡尔坐标。G01代码以具体速度使刀具从一个点移动到另一个点。线性插补语法如下: G01 Xn.n Yn.n Zn.n Fn.n
    • 16. 6.4 G01——切削直线 你可能问,“为什么不只用G00代码?”G00代码不能以恒定速度编程移动——它会尽可能快的移动到目的地。而且,G00不总像更早讨论的一样按直线移动。反之,线性插补保持非常准确的速度,这导致恒定切屑载荷和良好的表面粗糙度。 G01代码更像G00一样操作,但是另加一个字。进给速度字控制进给速度,具体是英寸每分钟(IPM)。
    • 17. 6.4 G01——切削直线 以G01为例,下面代码用来产生图6-6中的刀具轨迹。(假设刀具定位于X0,Y0。) N020 G01 X1.0 Y0.0 F3.0 N030 G01 X1.0 Y1.0 N040 G01 X2.0 Y2.0图6-6 应用线性插补
    • 18. 6.4 G01——切削直线 以G01为例,下面代码用来产生图6-6中的刀具轨迹。(假设刀具定位于X0,Y0。) N020 G01 X1.0 Y0.0 F3.0 N030 G01 X1.0 Y1.0 N040 G01 X2.0 Y2.0 机床现在以3IPM的速度移动到X1,Y1,后来移动到X1,Y1点,X2,Y3点。进给代码也是模态的,所以在G01中首次说明,直到需要改变为止不再说明。图6-6 应用线性插补
    • 19. 6.4 G01——切削直线偶尔也需要增量编程。在这种情况下,重新编程用增量坐标产生相同刀具轨迹: N010 G91 N020 G01 X1.0 Y0.0 F3.0 N030 G01 X0.0 Y1.0 N040 G01 X1.0 Y1.0
    • 20. 6.4 G01——切削直线 线性插补也用于插入工件移动。然而,我们必须要么确定中心切削端铣,要么确定首先钻导向孔,减少切入速度到正常进给速度的一半。例如,图6-7中刀具切入工件,向右切削。从槽进给回来,快速回到起始点。 N100 G00 X1.0 Z.2 N110 G01 Z-.25 F2.5(切入) N120 G01 X3.0 F5.0 N130 G01 Z.2 N140 G00 X-.5 Z6.图6-7 快速横切与线性插补组合铣槽
    • 21. 6.4 G01——切削直线 通常习惯在Z轴零位置以下(工件通常在Z0上方)使用线性插补定位移动是个好想法。这基本不编写,但是当你学习编程时有助你避免产生严重错误。例如,图6-8铣削肩部工件。我们应立即定位减去Z,但是相反,我们会快速横切至Z.2,然后用线性插补移动到最终Z。 N100 G00 X-.5 Z.2 N110 G01 Z-.25 F2.5(切入) N120 G01 X5.0 F5.0 N130 G01 Z.2 (进给至Z.2) N140 G00 X-.5 Z6.0图6-8 当在Z零位置以下定位时,只用插补运动(而不是快速横切)是个好习惯
    • 22. 6.5 G02、G03——切削圆弧 圆弧是加工中另一常用特征。为了切削圆弧,使用代码G02、G03——圆弧插补。这两个代码功能一致,除了G02是按顺时针方向(CW)切削,G03是按逆时针方向(CCW)切削。像G01代码一样,也必须说明进给速度。圆弧插补也有两个语法变化,如以下代码实例所示。二者之间唯一区别与用来说明刀具半径的方法相关。每个方法都常用,一些控制系统支持两种变化。 G02 Xn.n Yn.n Zn.n In.n Jn.n Fn.n G02 Xn.n Yn.n Zn.n Rn.n Fn.n
    • 23. 6.5 G02、G03——切削圆弧用I,J说明圆弧中心 X、Y坐标不足以完整描述圆弧。我们必须描述圆弧半径、圆弧中心坐标。出于该原因,我们需要两个新字。I,J字说明从圆弧起点到圆弧中心的增量距离。I字对应X轴方向,J字对应Y轴方向,如图6-9所示。图6-9 用于圆弧插补的I,J字定义了园弧中心
    • 24. 6.5 G02、G03——切削圆弧用I,J说明圆弧中心 考虑I,J值,就像建立新坐标系,这样原点与圆弧起点一致。然后我们可以定位圆弧中心坐标,就像笛卡尔坐标系中任何其它点一样——除了轴表明的是I、J,而不是X、Y,这意味着I、J可以有正号也可以有负号,这取决于定位。图6-10表示几个45°圆弧,在起点放置新的坐标系说明I、J是如何定义的。图6-10 从圆弧起始点到中心的I、J方向
    • 25. 6.5 G02、G03——切削圆弧用I,J说明圆弧中心 表6-2中的值说明了每个圆弧的I、J字的符号和方向。 表6-2 图6-10中I、J字的符号圆弧IJ圆弧1正负圆弧2负负圆弧3正正圆弧4负正
    • 26. 6.5 G02、G03——切削圆弧用I,J说明圆弧中心 当起始点和圆弧中心在每个轴上都相等时,I、J令人困惑的情况发生了。圆弧起始于0°、90°、180°或270°任何时候发生的情况都很常见。在每种情况下,要么I、要么J等于零。这种情形的原因可以在I或J的每个定义中找到——从起始点到中心点的增量距离。如果圆弧起始于任何以前提到的角度,那么其中一个值不管方向如何都等于零。图6-11证明了该想法。图6-11 当圆弧起始于任一象限时I、J的值。注意值独立于圆弧方向
    • 27. 6.5 G02、G03——切削圆弧说明圆弧中心半径R 用来定义圆弧中心更简易的方法是用R字。如果控制器支持的话,这非常方便。当支持R时,为了定义中心,控制器会完成必要的计算。然而,这真的不会节省精力,因为编程员必须做大量困难圆弧的计算。而且,当用R时,360°整个圆不可能实现,因此,圆弧必须至少打断两段。进而,你可以用R节约编程时间。
    • 28. 6.5 G02、G03——切削圆弧说明圆弧中心半径R 圆弧插补用R简单——你只用圆弧半径而不是I、J。然而,要考虑基于圆弧形状变化。R字可为正,也可为负来确定形状。这是必不可少的,因为两点间给定半径的圆弧有两个解决方案。图6-12说明了该点。 两个圆弧有相同的端点和半径,但是两个圆弧圆心位置不同。为了确定R符号,在圆弧端点间画弦线。如果圆心就在弦线和圆弧上或外面,那么符号为正。如果弦线和圆弧绕着圆心,那么R就为负。图6-12 R值可正、可负,取决于圆弧形状。这两个圆弧有完全相同的起始点、终点和半径。唯一改变的参数是R的符号
    • 29. 6.6 使用圆弧插补 下面代码用来生成图6-13中的刀具轨迹。假设点1位置为X0,Y0。 N01 G01 X0.0 Y0.0 F3.0 N02 G02 X1.5 Y1.5 I1.5 J0 刀具从所在位置移动到点1,然后顺时针切削至点2。圆弧中心从起始点在I方向为1.5英寸,J方向0英寸,给我们留有坐标I1.5,J0。图6-13 G02用于产生顺时针刀具路径
    • 30. 6.6 使用圆弧插补 全象限圆弧,如图6-14中产生的刀具轨迹。这个代码会成排产生两个90°圆弧。而且,点1坐标为X0,Y0。 N01 G01 X0.0 Y0.0 F3.0 N02 G02 X1.5 Y1.5 I1.5 J0.0 N03 G02 X3.0 Y0.0 I0.0 J-1.5 N02块中的第一个圆弧与前面例子一样。N03块中的第二个圆弧从点2移动到点3.这次,I等于零,J是-1.5。I是圆弧从起点到圆心沿着X方向的增量距离。I值等于零,因为点2的X坐标与圆弧圆心的X坐标相同。X方向无差值,所以I为零。图6-14 两个全象限圆弧。多数控制允许圆弧在一个块中编程
    • 31. 6.6 使用圆弧插补 一些更老的机床不允许圆弧在不同象限继续。因此,圆弧每次要像我们在上面例子中一样在一个象限内编程。多数现代机床可以在一个象限中从点1到点3生成这个圆弧,如下例所示: N01 G01 X0.0 Y0.0 F3.0 N02 G02 X3.0 Y0.0 I1.5 J0.0
    • 32. 6.6 使用圆弧插补 整圆圆弧也常见。整圆圆弧总在同一地方起始和终止,与其它圆弧一样以同样方式找圆心点。例如,图6-15圆弧应编程如下: N01 G02 X-1.0 Y0.0 I1.0 J0.0图6-15 整圆弧有相同起点和终点位置
    • 33. 6.6 使用圆弧插补 全象限圆弧相对容易编程,没有太多计算。然而,圆弧以奇异角起始或终止需要用三角学找到终点或I、J值。我们必须以高精度认真计算,不让圆整误差累积。对于X、Y、Z坐标而言,计算至少要精确到0.001英寸。否则,机床会产生误差信息告诉我们用这些值无法生成圆弧。图6-16表明圆弧切角135°。生成这个圆弧的代码如下: G02 X.7071 Y.7071 I1.0 J0.0图6-16 不在一个象限终止的圆弧需要精确使用三角学
    • 34. 6.6 使用圆弧插补我们也要面对起点和终点不在一个象限的圆弧,如图6-17所示。在这种情况下,我们必须计算两点坐标。下列代码产生圆弧。注意,终点(P2)与前面例子中的一样,但是I、J值变化了。图6-17 整圆圆弧不在一个象限起始或终止
    • 35. 6.6 使用圆弧插补用半径值使用圆弧插补 在图6-18中,要用圆弧插补加工两个圆弧。圆弧1是顺时针,用G02,圆弧2是逆时针,用G03。每个圆弧圆心是零件零点,可以假设刀具定位于起始点。 左圆弧 G02 X0.0 Y-1.0 R1.0 右圆弧 G03 X0.0 Y0.0 R1.0图6-18 用R编程的圆弧实例
    • 36. 6.6 使用圆弧插补用增量坐标编程圆弧 有些情况下,你需要使用增量坐标圆弧插补。在这种情况下,圆弧终点只是从圆弧起点到圆弧终点的增量距离。无需改变圆心位置;要准确详细说明与绝对位置相同即可。下面例子是用于完成图6-19中圆弧的圆弧插补块。第一个例子用绝对位置,第二个例子用增量位置。 G90 G03 X1.0 Y0.0 I0.0 J1.0 (绝对坐标圆弧) G91 G03 X1.0 Y1.0 I0.0 J1.0 (增量坐标圆弧)图6-19 绝对坐标与增量坐标的圆弧实例
    • 37. 6.6 使用圆弧插补引入/退出 完成表面抛光切削时,你应以浅角或切角接近表面。将抛光表面推断成精加工导轨也是正确的。这种技术有时指作引入和退出。不平稳材料载荷和稍有伺服滞后当以右角进入或退出时,经常会在表面上留有一个小的断片。引入和退出移动会提供分布更平稳的刀具压力,在输入和输出点更好的精度,如图6-20所示。图6-20 几个可能的引入方法
    • 38. 6.6 使用圆弧插补线性插补经常用于引入、退出,只因为它比圆弧更容易编程。该技术接近小于45°角的表面,然后继续沿着规则刀具路径。图6-21表明内槽抛光切削的轨迹。刀具定位于适当深度的点1处,然后移动到点2,初始切削。刀具然后继续逆时针再次回到点2.此刻推出移动至点3。下列块描述了刀具移动。 N50 G00 X.75 Y.75 (起始点P1) N60 G00 Z.2 N70 G01 Z-.25 F5.0 N80 G01 X1.0 Y.5 (引入至点2) N90 G01 X1.5 Y1.5 N100 G01 X1.5 Y1.5 N110 G01 X.5 Y1.5 N120 G01 X.5 Y.5 N130 G01 X1.0 Y.5 N140 G01 X1.25 Y.75 (退出至点3)图6-21 内槽精加工导轨有角度的引入、退出
    • 39. 6.6 使用圆弧插补 线性方法运用好,容易编程,但是圆弧移动会给出更光滑过渡。你可以用你喜欢的圆弧任何一段,但是如果你用全象限圆弧最容易编程。只需确定圆弧终点与最终表面相切。以下块描述了刀具运动产生如图6-22所示的圆弧内部轮廓。 N50 G00 X.75 Y.75 M08 (起始点P1) N60 G00 Z.2 N70 G01 Z-.25 F5.0 (切入) N80 G03 X1.0 Y.5 I.25 J0.0 (圆弧引入至点2) N90 G01 X1.5 Y.5 N100 G01 X1.5 Y1.5 N110 G01 X.5 Y1.5 N120 G01 X.5 Y.5 N130 G01 X1.0 Y.5 N140 G03 X1.25 Y.75 I0.0 J.25 (圆弧退出至点3)