• 1. 计算机数控技术及理论研究生数控技术第8次课 开课时间:第1学期前八周 开课单位:机械工程学院
    • 2. 5 编程概念及任务规划5.1 用G代码和M代码编程 5.2 零件数控程序结构 5.3 字、地址、序号 5.4 模态代码和非模态代码 5.5 编程语法 5.6 安全线更多内容 5.7 程序注解与计划表
    • 3. 5.1 用G代码和M代码编程 有几十个用于实现从复杂加工操作到平常的刀具更换的G代码和M代码。在表5-1中,我们会发现一列基本G代码和M代码。任务应用代码定义及实例轴运动G00快速来回移动——机床以非常快的速度移动到指定点G00 X1.5 Y2.5G01直线插补——以控制进给速度铣削一条直线G01 X1.5 Y2.5 F10.0G02圆弧插补——顺时针圆弧铣削G02 X1.5 Y2.5 I.5 J0 F10.0G03圆弧插补——逆时针圆弧铣削G03 X1.5 Y2.5 I.5 J0 F10.0G28返回到参考点G91 G28 Z0机床安装G20英制编程单元G20 G00 X1.0 Y2.0G21公制编程单元G21 G00 X25.4 Y50.8G90绝对定位——所有坐标相对于参考点G90 G00 X1.0 Y1.0G91增量定位——所有坐标由当前位置给定G91 G00 X1.0 Y1.0孔加工G81钻削循环 G81 X1.0 Y1.0 Z-.75 F4.0(钻.75深的孔) X2.0 Y1.0(接着孔定位) X3.0 Y1.0G82深穴钻削循环G82 X1.0 Y1.0 Z-.75 R.2 P.5 F4.0G83小洞钻削循环G83 X1.0 Y1.0 Z-.75 Q.25 R.2 F4.0G84攻螺纹循环 M03 S100 G84 X1.0 Y1.0 Z-.75 F5.00G85镗孔循环G85 X1.0 Y1.0 Z-.75 F4.00表5-1 常用编程代码总结
    • 4. 5.1 用G代码和M代码编程表5-1 常用编程代码总结机床功能M00程序停止——程序执行会在当前指令下停止指导操作员重启动 M05(主轴停止) M00(清除刀具中切屑) M03 S1000(主轴转动) G00 X1.0 Y1.0M01选择程序停止——只有控制系统选择按钮被激活,程序才会停止 M05 M01(清除刀具中切屑) M03 S1000 G00 X1.0 Y1.0M03主轴顺时针旋转 M06 T05(刀具更换) M03 S1200(主轴顺时针旋转)M04主轴逆时针旋转 M06 T05(刀具更换) M04 S1200(主轴逆时针旋转)M05关闭主轴 M05(关闭主轴) M06 T05(更换刀具)M06刀具更换 M06 T05(更换刀具) G43 H05(使用5号刀具高度补偿)M08打开冷却液 G01 Z-.75 M08M09关闭冷却液 G00 Z0. M09M30程序重置——提醒重新开启程序 G00 Z6.0 G00 X1.0 Y10. M09 M30(重置至程序开始) %(程序结束)
    • 5. 5.2 零件数控程序结构表5-1 常用编程代码总结 零件数控程序是由实现不同功能的控制系统读入的代码组成的。零件数控程序中有两种不同的基本代码。第一种代码控制机床功能和设置。第二种代码用于修改并实现加工功能。代码的安排和使用形成了零件程序的基本结构。
    • 6. 5.2 零件数控程序结构 零件数控程序必须实现我们传统加工工件的相同功能。我们必须决定如何翻译工程图、安装刀具、启动主轴、定位零件中心,然后触发刀具。接着,我们会根据蓝图准备加工轮廓。让我们看一下如图5-1所示的加工方形轮廓。图5-1 列表5-1是用于加工方形的完整程序
    • 7. 5.2 零件数控程序结构数控程序列表5-1程序代码O0001(程序5.1)N10 G20 G40 G49 G54 G80 G90 G98N20 M06 T03(.25英寸端铣刀)N30 G43 H03N40 M03 S2000N50 G00 X.5 Y.5N60 G00 Z.2N70 G01 Z-.1 F5.0N80 G01 X.5 Y1.5 F10.N90 G01 X1.5 Y1.5N100 G01 X1.5 Y.5N110 G01 X.5 Y.5N120 G01 Z.2N130 G00 Z5.0N140 G00 X0. Y6.0N150 M05N160 M30%
    • 8. 5.2 零件数控程序结构零件数控程序又称为块(或只是平线)的指令单元区组成。机床控制单元读入并顺序执行块(例如,一排一排地)。有时块用N10、N20等牌号,但是不需要这些序号。机床控制单元会立刻读入几个块,但是同时只能执行一个块。有些情况,机床控制单元必须知道接下来能正常操作的下一个块。
    • 9. 5.2 零件数控程序结构首先程序告诉机床控制单元程序从哪开始(%),它的名字是什么(O0001)。开始这两个块对实际加工没有影响,但是对于机床控制单元辨别一个程序与其它程序是很必要的。你不必把行号放在这些块上: % O0001(程序5.1)
    • 10. 5.2 零件数控程序结构下一个块告诉机床如何自我安装,如何翻译程序余数器中的指令。例如,G20代码告诉机床控制单元我们想要程序采用英制单位而非公制单位。有时这称为安全线,因为它会将指令号装入内存保持犯错的程序员避免麻烦(后面列举更多): N10 G20 G40 G49 G54 G80 G90 G98
    • 11. 5.2 零件数控程序结构 下面几个块会告诉机床准备加工,把刀具装入主轴中,以指定速度沿适当方向启动主轴。你也会看到注释字符的应用。机床控制单元忽视任何括号内放置的字符代码,例如用来描述刀具的(0.25英寸端铣刀): N20 M06 T03(.25英寸端铣刀) N30 G43 H03 N40 M03 S2000
    • 12. 5.2 零件数控程序结构 G00和G01代码告诉机床从当前位置移动到根据G代码坐标指定的点的位置。例如,N110告诉机床从它当前位置移动到X1.5,Y.5。 N50 G00 X.5 Y.5 N60 G00 Z.2 N70 G01 Z-.1 F5.0 N80 G01 X.5 Y1.5 F10. N90 G01 X1.5 Y1.5 N100 G01 X1.5 Y.5 N110 G01 X.5 Y.5 N120 G01 Z.2 N130 G00 Z5.0 N140 G00 X0. Y6.0
    • 13. 5.2 零件数控程序结构 程序最后几行控制一些机床常用功能与执行职责,如关闭主轴、重置程序、告诉机床控制单元程序在哪儿结束。 N150 M05 N160 M30 %
    • 14. 5.3 字、地址、序号 每个字是由字母(或地址)和与字母相关的数字组成。例如,字母X指X轴。跟在它后面的数字指X轴的坐标。简单举例例子,数字跟在字母后面,对于机床控制单元来说有一些重要含义。总的来说, ◆X是地址(或字母) ◆1.5是数字 ◆X1.5是字 同样地, ◆G是地址 ◆01是数字 ◆G01是字 把两个字放在一起,你就有了一个有效的块: G01 X1.5
    • 15. 5.3 字、地址、序号 与G代码或M代码相关的数字不包括单位数中所示的首位零,例如G00、G01、M01等。这可写成G0、G1、G2、M1等。然而,许多编程员出于风格或习惯包括首位零。
    • 16. 5.4 模态代码和非模态代码模态与非模态是用来描述数控编程中与它们保持机床控制单元记忆能力相关的两种代码。 非模态代码只用一次,然后解除。 模态代码保留激活记忆,直到它们被另一代码取代(废弃)。
    • 17. 5.4 模态代码和非模态代码编程代码由表5-2中所列的不同相关功能组成一组。功能组代码与地址轴运动G00,G01,G02,G03定位系统G90,G91单元G20,G21,(某系统中G70,G71)封闭循环G80,G81,G82,G83,G84,G85,…坐标系G54,G55,G56,…刀具半径补偿G40,G41,G42刀具高度补偿G43,G44,G49返回封闭循环面G98,G99圆弧平面选择G17,G18,G19轴 置地址X,Y,Z,A,B,C,U,V,W附加地址D,F,H,I,J,K,Q,R,S冷却液M07,M08,M09主轴控制M03,M04,M05非模态码 多种G代码G04,G28,G29,G92辅助地址L,P多种M代码M00,M01,M02,M06,M30,M97,M98,M99
    • 18. 5.4 模态代码和非模态代码 每组中只有一个代码在同一时刻被激活。例如G00和G01是同一组。因此,你不能同时激活G00和G01。类似于你不能同时反向驾驶你的车一样道理。然而,你可以有不同组代码同时被激活。例如G90和G01是不同组,可以同时激活。这就像你在开车时同时打开收音机一样——它们不相关,因此不产生冲突。 模态代码优点是如果代码不变,你不必在下一块输入代码。例如,G01是用来切削直线的模态代码。因此,如果你有一系列直线运动加工的话,那么每一块中你不必重新输入G01。然而,如果G01被同一组代码中另一个代码取代的话,那么新的代码会保留影响,直到再次改变。
    • 19. 5.4 模态代码和非模态代码 许多其它地址字在某种意义上是模态的,它们在内存中同时只为一个值保留位置。例如,如果我们希望定位X轴5.500英寸,那么我们必须使用代码G00 X5.500。当控制器读入这个代码,值5.500就会被放入X寄存器,一直保持,直到被另一个值取代。
    • 20. 5.4 模态代码和非模态代码 列表中必须包括M代码,尽管它们不习惯被视为模态或非模态代码。一些M代码可被视作模态代码,如用来控制主轴或冷却液的M代码。它们只控制切换,一直保持直到另一个代码用来关闭它。然而,多数M代码是非模态的。例如,M06用来更换刀具,但是更换刀具一旦完成,M06就从内存中撤销。不管代码功能如何,每个块中多数控制器只允许一个M代码。
    • 21. 5.5 编程语法 以下三块中,切削直线命令是G01,刀具会移动到以下X、Y坐标。 N01 G01 X1.5 Y3.0 N02 G01 X6.0 Y3.0 N03 G01 X6.0 Y6.0 我们前面部分学到的G01代码是模态的,因此同样代码可重新写成: N01 G01 X1.5 Y3.0 N02 X6.0 Y3.0 N03 X6.0 Y6.0
    • 22. 5.5 编程语法 机床控制单元读入第一行命令切削直线至X1.5,Y3.0.然后读入下一行,但是不给出G代码。这没有问题,因为机床控制单元已将G01存储在内存中,知道要执行G01,直到告诉其它代码。X、Y字也是模态的;它们会保留在内存中,直到被替换或被取消。这个代码现在可再被写成 N01 G01 X1.5 Y3.0 N02 X6.0 N03 Y6.0
    • 23. 5.5 编程语法 机床控制单元同时将程序处理成块。在处理前读入每个整块。因此,以特别顺序排列的代码对机床控制单元来说通常不重要。具有原始控制系统的一些更老的机床有关于应该去哪儿,甚至空间在哪儿定位的有趣原则。当然,原则很难遵循,因此机床数控单元最终改进成更友好的设计。现代机床控制单元具有足够鲁棒性,在没有变得太不安的条件下处理多数语法变化。对于机床控制单元来说,下面两块是一致的。 N01 G54 G01 X1.5 Y3.0 M08 N01 M08 Y3.0 G54 X1.5 G01
    • 24. 5.5 编程语法 然而,人们不是如此灵活,许多人更喜欢遵守特别的顺序。少了些习惯,多了些可读性。前面的例子中第二行没有遵守逻辑顺序,有点难读。 我们可以观察地址中详细说明正确顺序的列表,但是可能起不到任何作用。观察没有太多细节的地址顺序的另一个方法是将代码组成功能模式组,根据预期功能按逻辑顺序放置地址。例如,顺序是 行号 G代码 轴坐标(字母顺序按X,Y,Z;I,J,K;A,B,C分组) 所有其它地址(按字母顺序) M代码
    • 25. 5.5 编程语法 然而,人们不是如此灵活,许多人更喜欢遵守特别的顺序。少了些习惯,多了些可读性。前面的例子中第二行没有遵守逻辑顺序,有点难读。 我们可以观察地址中详细说明正确顺序的列表,但是可能起不到任何作用。观察没有太多细节的地址顺序的另一个方法是将代码组成功能模式组,根据预期功能按逻辑顺序放置地址。例如,顺序是 行号 G代码(行号后应接G0代码。G代码像句子中的动词——它们马上告诉我们快要执行的动作。) 轴坐标(字母顺序按X,Y,Z;I,J,K;A,B,C分组) 所有其它地址(按字母顺序) M代码
    • 26. 5.5 编程语法 M代码通常是块中最后的代码。当块中还包括G代码时,它们通常放在块的末尾。然而,当M代码单独使用时,一些人更喜欢把它们放在块的开始,因为它们只是一些动作。以下块说明与此。 N100 G54 G01 X1.5 Y3.0 M08 N100 M03 S1000
    • 27. 5.5 编程语法 语法部分有其它轻松结尾,如空格、行号。空格不会在字母和数字之间或在G代码或M代码中。下行,三个错误空格导致机床单元发生错误。 N02 G 01 X 6.0 Y 3.0
    • 28. 5.5 编程语法 当标签或隐藏符号偶然敲入字处理器时,会发生其它错误。如果你连续发现错误,你要相信代码是正确的。打开隐藏符号切换,在处理器上尽量显示程序。你或许在它们不属于的地方找到一些像→,…,∏这样有趣的符号。这会引起控制问题,应删除。
    • 29. 5.5 编程语法 机床控制单元通常不需要字间空格,因此它们有时被忽略,保留记忆。然而,对于人来说,很难读字间无空格的、一起运行的代码,这会导致失败和错误。注意以下A)和B)中代码块是一致的,但是A)不包含任何空格,很难读。 A)无空格: N01G01X1.5Y3.0M08 B)有空格: N01 G01 X1.5 Y3.0 M08
    • 30. 5.5 编程语法 多数数控系统不需要序号(行号)。它们对于发现并修正错误是很有用的。一些专业编程技术需要序号,但是多数程序不需要序号。因此,代码块 N01 G01 X1.5 Y3.0 N02 X6.0 N03 Y6.0 可重新写成 G01 X1.5 Y3.0 X6.0 Y6.0
    • 31. 5.5 编程语法 机床厂商根据需要也会改变数字格式。典型控制系统允许在小数点前放三位数,小数点后放四位数(如,100.1234)。多数支持标准小数格式。这意味着只要可以输入计算器,就输入数字——这看上去那么自然。格式如下: X.500 小数格式其它适当变化包括或不包括首位零,末尾零: X.5,X0.50,X0.5000
    • 32. 5.5 编程语法 同样控制系统也允许一般小数写成整数形式表述成1/10,000英寸(或有时1/1000英寸)。这种称为首位零抑制格式看上去有点尴尬。以下的字表明X轴坐标0.500。 X5000 这种格式的更大数字很难读: N100 G01 X155124 Y105001
    • 33. 5.5 编程语法——语法与可读性看列表5-2中两个程序,自己决定哪个更具可读性。长版本压缩版%%O0001(铣方形)O0001N10 G20 G40 G54 G80 G90 G98G20N20 M06 T03(.25端铣刀)G54G80N30 G43 H03T3M6N40 M03 S2000G40N50 G00 X.5 Y.5M3G90G98S2000N60 G00 Z.2G43G00Y.5X.5H3N70 G01 Z-.1 F5.0G0Z.2N80 G01 X.5 Y1.5 F10.G1F5.0Z.1N90 G01 X1.5 Y1.5 X.5Y.5F10.N100 G01 X1.5 Y1.5X1.5N110 G01 X.5 Y.5Y.5N120 G01 Z.2X.5N130 G00 Z5.0Z.2N140 G00 X0. Y6.0G0Z5.0N150 M05M05N160 M30M30%%
    • 34. 5.6 安全线更多内容安全线实现的功能只分两种:安全重置、安装参数。 安全重置:在重启动前,以下设置控制返回到安全状态的安全线有四种代码。 G40取消自动刀具半径补偿。刀具半径补偿自动补偿偏离编程路径的刀具。如果你在程序尾使用刀具补偿,补偿仍处于激活状态,那么忽略取消补偿。因此,下一刀具路径不能在你期望的位置生成,结果生成废品工件。 G49取消前面刀具长度补偿值,这很重要。因为如果你忘记在刀具更换后调用新的长度补偿,就会发生碰撞。 G80取消封闭钻削循环及相关参数。当多功能钻削循环在同一程序中使用时就很重要了。钻削循环会将前面激活的值保存在内存中,这会导致碰撞、超刀具磨损或错误几何形状。 G98与孔间钻削循环如何取消相关。G98使刀具返回到通常比零件上方更高的位置,因此有助于避免意外碰撞。
    • 35. 5.6 安全线更多内容——安装参数 使用以下安全线三个代码设置加工与轴位置参数。然而,许多控制会有在启动时被激活的自动缺省值。 N10 G20 G40 G49 G54 G80 G90 G98 G20告诉控制系统所有坐标和进给速度都译成英制单位(也可用G21设为公制单位)。程序中,英制与公制可以切换,这样在安全线上使用G20或G21是个好想法。 G90用于绝对定位,G91用于增量定位。多数程序完全用绝对单位编写,但是当增量具有优势时,情况则不同。程序中,绝对与增量坐标经常切换,这样编程员必须确定在加工前设置合适坐标系,否则所有几何形状会错误并导致碰撞。两种代码都是模态的,仍保持影响,直到被其他代码取消。 G54是多数现代机床上可获得的预设置坐标系之一。G54也可以是G55、G56、G57等。这只意味着表示安装人员为任务选择的基本坐标系。因为有时程序中坐标系会改变,使程序成为特别特征更加容易(例如,螺栓孔模式)。像其它G代码一样,坐标系是模态的。一旦改变仍保持有效直到被替代。
    • 36. 5.7 程序注解与计划表信息通常通过两个独立的方法传递:计划表和程序注释(评论)。 程序注释评论对必须使用程序的人理解它更加容易,注释使安装人员更加容易,会降低错误机会(不涉及安装人员的应力水平)。程序中包括的关键信息如下: ◆工件偏置位置 ◆刀具类型、长度、直径 ◆刀片技术要求 ◆工件装夹信息 ◆零件错误警告 ◆客户零件号、材料信息 ◆程序内个别过程 ◆程序信息,如日期、文件名、程序员等
    • 37. 5.7 程序注解与计划表如列表5-3程序,左侧是原程序,右侧是注释版本。原程序 注释版 %%O0001(程序5.1)O0001(程序5.1)N10 G20 G40 G49 G54 G80 G90 G98(文件名C:\ACME51.NC)N20 M06 T03(.25端铣刀)(编程日期7/5/99)N30 G43 H03(客户:ACME MFG)N40 M03 S2000(零件 # 0123)N50 G00 X.5 Y.5(材料:2024 T5铝)N60 G00 Z.2(工件零点,左下角,Z0顶部)N70 G01 Z-.1 F5.0(刀具#3,.25直径,2个凹槽)N80 G01 X.5 Y1.5 F10.(刀具材料:高速钢,氮碳化钛涂层)N90 G01 X1.5 Y1.5N10 G20 G40 G49 G54 G80 G90 G98N100 G01 X1.5 Y.5N20 M06 T03N110 G01 X.5 Y.5N30 G43 H03N120 G01 Z.2N40 M03 S2000N130 G00 Z5.0N50 G00 X.5 Y.5N140 G00 X0. Y6.0N60 G00 Z.2N150 M05N70 G01 Z-.1 F5.0N160 M30(开始铣槽)%N80 G01 X.5 Y1.5 F10. N90 G01 X1.5 Y1.5 N100 G01 X1.5 Y.5 N110 G01 X.5 Y.5 (抛光槽) N120 G01 Z.2 N130 G00 Z5.0 N140 G00 X0. Y6.0 N150 M05 N160 M30 %
    • 38. 5.7 程序注解与计划表 你可能看到你涵盖的注释几乎无信息限制。然而,你可能不想浪费所有的时间敲入注释,所以只给出有助于安装人员和操作人员完成任务的基本信息。
    • 39. 5.7 程序注解与计划表 用于通信任务相关信息的另一个重要工具是计划表。计划表包括所需安装工作的信息,通常包括零件与夹具的轮廓。计划表包括程序中多数相同信息。然而,程序注释在以下程序结构中有帮助,因此计划表包括与实际代码不相关的几何信息。
    • 40. 5.7 程序注解与计划表 计划表的主要优点是它起到采用刀具、计划机床安装的快速参考作用。零件程序通常保存为电子文件形式,不方便打印观看需要的刀具。另一方面,计划表是一个可以快速扫描寻找所需信息的单独文件。并不是说计划表是程序注释的替代品,但是它们彼此可行联合使用。
    • 41. 5.7 程序注解与计划表图5-2表明完整的计划表,你可以根据附录B制作空计划表的副本。图5-2 典型计划表。计划表是通信与计算机数控加工任务相关的基本信息