CNC,3D打印机,激光雕刻机必备知识——G代码,让机器舞动起来

CNC,3D打印机,激光雕刻机必备知识——G代码,让机器舞动起来

首页角色扮演代号GC更新时间:2024-07-29
什么是G代码?

你知道什么是G代码吗?G代码(G-code,又称RS-274),是最为广泛使用的数控编程语言。我们用这种语言告诉机器做什么或如何做某事。G代码命令指示机器移动的位置、速度和路径等。对于车床或铣床等数控机床,刀具就是由这些指令驱动,以遵循特定的刀具轨迹,切削材料以获得所需的形状。

如果你认为G代码只是应用于数控机床上,那就错了。G代码应用非常广泛,CNC机床,3D打印,激光雕刻机,写字机等等都会使用到G代码。

之前用光驱做的激光雕刻机就用到了G代码相关知识。

如何读懂G代码?

当你打开一个G代码文件时,它可能看起来相当复杂,但实际上并不难理解。

如果我们仔细对比一下各行代码,会发现大多数行都具有相同的结构。G代码的复杂部分就是我们看到的那些数字,其实它们只是笛卡尔坐标而已。

让我们看这一行,并解释它是如何工作的。

G01 X247.951560 Y11.817060 Z-1.000000 F400.000000

该行代码具有以下结构:

G## X## Y## Z## F##

总而言之,行G01 X247.951560 Y11.817060 Z-1.000000 F400.000000告诉机器以400 mm/min的速度从其当前位置直线移动到坐标X247.951560、Y11.817060和Z-1.000000。这里的单位是mm/min,如果我们在文件开头使用了命令G21,该命令将单位设置为毫秒。如果我们想要以英寸为单位,我们可以使用G20命令。

常见的G代码命令

现在我们已经知道如何读取一行G代码,接下来,我们看看最重要或常用的G代码命令

G00–快速定位

G00指令以最大行驶速度将机器从当前位置移动到指定点或指令指定的坐标。机器将同时移动所有轴,以便它们同时完成行程。也就是说机器上沿直线移动到新的坐标点。

G00是一种非切割运动,其目的是将机器快速移动到所需位置,以开始切割或打印等工作。

G01–线性插值

G01 命令表示机器以设定的进给速度沿直线移动。我们用X、Y和Z值指定目标点位置,用F值指定速度。机器控制器通过计算(插值)来得到中间点以获得该直线。

与仅用于定位的G00命令不同,G01命令在机器执行其主要作业时使用。比如应用在车床或铣床,直线切割材料的过程;3D打印机,直线挤压材料的过程。

G02–顺时针循环插值

G02命令表示机器以圆弧轨迹顺时针移动。它与G01命令的概念相同,在执行适当的加工过程时使用它。除了端点参数外,这里还需要定义旋转中心或圆弧起点到圆弧中心点的距离。起点实际上就是上一个命令的终点。

为了更好地理解,我们将在前面示例中的G01命令之后添加G02命令。

因此,在本例中,我们首先使用G01命令将机器移动到X5,Y12点。这也是G02命令的起点。使用G02命令的X和Y参数设置端点。现在,为了通过圆周运动到达终点,我们用I和J参数定义它的中心点。

当然,我们可以在其他任何地方设置中心点,因此我们将得到一个半径不同的弧,它在同一个端点结束。如下图所示:

G00、G01、G02示例–手动G代码编程

让我们来看一个使用这三个主要G代码命令G00、G01和G02的简单CNC铣削示例。

G00 X5 Y5 ; point B G01 X0 Y20 F200 ; point C G01 X20 Y0 ; point D G02 X10 Y-10 I0 J-10 ; point E G02 X-4 Y-8 I-10 J0 ; point F G01 X-26 Y-2 ; point B

这是我们手动编程生成这个形状的G代码。不过,我们需要注意的是,这不是一个完整的G代码,因为我们缺少一些更基本的命令。我们将在后面的示例中讲解如何生成完整的G代码。

G03–逆时针方向的圆弧插补

与G02一样,G03 G-code命令定义机器以循环模式移动。这里唯一的区别就是运动是逆时针的。所有其他功能和规则与G02命令相同。

因此,通过这三个主要的G代码命令G01、G02和G03,我们就可以为我们想要的任何形状生成轨迹。我们可以手工制作一个G代码程序,但大多数情况下,我们使用合适的软件来制作G代码程序,这样做更容易、更可靠。

现在我们来介绍几个更重要和常用的命令,并在最后制作一个真正的G代码。

G20/G21–单位选择

G20和G21命令定义G代码单位,英寸或毫米。

G20=英寸

G21=毫米

我们需要注意的是,单位必须在程序开始时设置。如果我们不指定,则机器将会用前一个程序的默认设置。

G17/G18/G18–G代码平面选择

这些G代码命令,表示我们选择机器的工作平面。

G17–XY平面

G18–XZ平面

G19–YZ平面

G17是大多数数控机床的默认配置,但其他两个也可用于实现特定的运动。

G28—回位

G28命令告知机器将刀具移动到其参考点或原始位置。为了避免碰撞,我们可以包含一个具有X、Y和Z参数的中间点。工具将在到达参考点之前通过该点。G28 X## Y## Z##

G90/G91–定位G代码命令

我们使用G90和G91命令,告诉机器如何解释坐标。G90表示绝对坐标模式,G91表示相对坐标模式。

在绝对坐标模式下,刀具的定位始终从绝对点或零开始。因此,命令G01 X10 Y5将使刀具到达该精确点(10,5),而不管之前的位置如何。

在相对坐标模式下,刀具的定位相对于最后一点。因此,如果机器当前处于点(10,10),命令G01 X10 Y5将使刀具到达点(20,15)。这种模式也称为“增量模式”。

更多命令和规则

G代码命令还远远不止这些,还有有刀具补偿、缩放、工作坐标系、驻留等命令。

除了G命令外,还有M命令,用于生成真正完整的G代码程序。以下是一些常见的M代码命令:

M00–程序停止

M02–课程结束

M03–主轴开启–顺时针

M04–主轴开启–逆时针

M05–主轴止动块

M06–换刀

M08–冷却液开启

M09–洪水科兰特关闭

M30–程序结束

如果是3D打印机:

M104–启动挤出机加热

M109–等待挤出机达到T0

M140–启动床加热

M190–等待床位到达T0

M106–设置风扇转速

简单G代码程序示例

在学会了这些之后,现在我们能够手动生成真实的代码。下面是一个例子:

% G21 G17 G90 F100 M03 S1000 G00 X5 Y5 ; point B G01 X5 Y5 Z-1 ; point B G01 X5 Y15 Z-1 ; point C G02 X9 Y19 Z-1 I4 J0 ; point D G01 X23 Y19 Z-1 ; point E G01 X32 Y5 Z-1 ; point F G01 X21 Y5 Z-1 ; point G G01 X21 Y8 Z-1 ; point H G03 X19 Y10 Z-1 I-2 J0 ; point I G01 X13 Y10 Z-1 ; point J G03 X11 Y8 Z-1 I0 J-2 ; point K G01 X11 Y5 Z-1 ; point L G01 X5 Y5 Z-1 ; point B G01 X5 Y5 Z0 G28 X0 Y0 M05 M30 %

G代码程序说明:

  1. 代码初始化。此字符(%)始终出现在程序的开头和结尾。
  2. 设置单位(所有尺寸单位为mm)、XY平面、绝对定位和100英寸/分钟的进给速度。
  3. 主轴以1000 RPM的速度顺时针转动。
  4. 快速定位到B(5,5)。
  5. 在相同位置控制运动,将刀具降至-1。
  6. 直线切割运动至位置C(5,15)。
  7. 顺时针圆周运动至点D(9,19),中心点位于(9,15)。
  8. 直线切割至E点(23,19)。
  9. 点F(32,5)的线性切割。
  10. 对点G(21,5)进行相同的直线切割。
  11. 向H点(21,8)再进行一次直线切割。
  12. 逆时针圆弧插补至位置I(19,10),中心点位于(19,8)。
  13. 点J(13,10)的线性切割。
  14. 逆时针循环切割至位置K(11,8),中心点位于(13,8)。
  15. 线性切割至位置L(11,5)。
  16. 最终线性切割移动至位置B(5,5)。
  17. 把刀具举起来。
  18. 回到原位。
  19. 主轴停转。
  20. 主程序结束。
G代码自动生成

自己编写G代码还是十分繁琐的,好在我们有软件辅助。我们在制作激光雕刻机的时候使用过“Inkscape“ 矢量编辑软件。这是一款开源矢量图形编辑软件,具有强大的绘图功能,还可以帮助我们自动生成G代码。

这个是Inkscape的界面,输入我们需要雕刻的文件或图形,设定相应的参数,另存为 XXX.gcode 的文件就好了。

下面是生成的部分代码:

(Scribbled version of C:\Users\ZHOUYU~1\AppData\Local\Temp\ink_ext_XXXXXX.svgE25BA1 @ 3500.00) ( unicorn.py --tab="plotter_setup" --pen-up-angle=50 --pen-down-angle=30 --start-delay=150 --stop-delay=150 --xy-feedrate=3500 --z-feedrate=150 --z-height=0 --finished-height=0 --register-pen=true --x-home=0 --y-home=0 --num-copies=1 --continuous=false --pause-on-layer-change=false C:\Users\ZHOUYU~1\AppData\Local\Temp\ink_ext_XXXXXX.svgE25BA1 ) G21 (metric ftw) G90 (absolute mode) G92 X0.00 Y0.00 Z0.00 (you are here) M300 S30 (pen down) G4 P150 (wait 150ms) M300 S50 (pen up) G4 P150 (wait 150ms) M18 (disengage drives) M01 (Was registration test successful?) M17 (engage drives if YES, and continue) (Polyline consisting of 3 segments.) G1 X-131.13 Y22.79 F3500.00 M300 S30.00 (pen down) G4 P150 (wait 150ms) G1 X-131.34 Y15.03 F3500.00 G1 X-131.34 Y-17.86 F3500.0 .... .... .... (end of print job) M300 S50.00 (pen up) G4 P150 (wait 150ms) M300 S255 (turn off servo) G1 X0 Y0 F3500.00 G1 Z0.00 F150.00 (go up to finished level) G1 X0.00 Y0.00 F3500.00 (go home) M18 (drives off)

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved