87871浏览
查看: 87871|回复: 10

[讨论] 3D打印切片文件Gcode代码的解读

[复制链接]
本帖最后由 落花无痕 于 2014-7-29 11:06 编辑

         在3D打印的过程中需要将STL三角面片文件切片处理,得出轮廓和加工路径,这些信息会形成Gcode文件进行保存。
         现在想对Gcode文件进行解读,接着感觉3D打印的Gcode文件与普通的G代码不一样。

         下面附上一段3D打印的G代码:
  1. M107
  2. G0 F9000 X72.70 Y31.67 Z0.30
  3. G0 X72.70 Y31.67
  4. ;TYPE:SKIRT
  5. G1 F2400 E0.00000
  6. G1 F1200 X73.24 Y30.74 E0.02764
  7. G1 X73.24 Y30.74 E0.02766
  8. G1 X74.14 Y29.19 E0.07419
  9. G1 X74.80 Y28.35 E0.10170
  10. G1 X75.93 Y26.94 E0.14847
  11. G1 X76.71 Y26.22 E0.17605
  12. G1 X78.03 Y24.99 E0.22263
  13. G1 X78.91 Y24.39 E0.25018
  14. G1 X80.40 Y23.37 E0.29692
  15. G1 X81.36 Y22.91 E0.32437
  16. G1 X82.99 Y22.13 E0.37109
  17. G1 X84.00 Y21.82 E0.39861
  18. G1 X85.73 Y21.28 E0.44530
  19. G1 X88.57 Y20.86 E0.51959
  20. G1 X89.63 Y20.86 E0.54714
  21. G1 X91.44 Y20.86 E0.59377
  22. G1 X92.49 Y21.02 E0.62142
  23. G1 X94.27 Y21.28 E0.66792
  24. G1 X95.29 Y21.60 E0.69557
  25. G1 X97.02 Y22.13 E0.74219
  26. G1 X97.97 Y22.59 E0.76968
  27. G1 X99.60 Y23.37 E0.81640
  28. G1 X100.48 Y23.98 E0.84402
  29. G1 X101.97 Y24.99 E0.89067
  30. G1 X102.75 Y25.72 E0.91828
复制代码

G0指快速移动,定位;G1指开始喷料加工,运动较慢;

X,Y,Z应当指坐标信息,因为打印时多是在二维打印,再对Z递增,所以X,Y坐标较多,Z坐标较少;
下面是重点,E,F是什么意思呢?
根据wiki上的解释
  
E
  
  
Precision  feedrate for threading on lathes
  
  
F
  
  
Defines feed rate
  
  
Common units are  distance per time for mills (inches per minute, IPM, or millimeters per minute,  mm/min) and distance per revolution for lathes (inches per revolution, IPR,  or millimeters per revolution, mm/rev)
  

E,F应该都是与喷口的给料速率相关的。但是在代码中可以很明显地看到E的数值是在一直不断地递增,递增到很大,与常理符合(否则打印越大的东西边际递增时间越来越少)。
F倒是有可能代表给料速率。
那么E,F分别是什么意思呢?

Rockets  NPC

发表于 2014-7-29 11:49:25

E代表的是extruder,表示挤出的数量
F表示速度,表示移动的速度同时也会影响挤出的速度。
回复

使用道具 举报

落花无痕  见习技师
 楼主|

发表于 2014-7-29 11:55:31

Rockets 发表于 2014-7-29 11:49
E代表的是extruder,表示挤出的数量
F表示速度,表示移动的速度同时也会影响挤出的速度。 ...

E代表挤出的用料,对吗?所以才会一直递增。
但是如果是这样子定义的话,那么初始的时候E应该会是0吧,可是为什么都不是0呢?
有的初始值是10多,有的初始值是0.02多,这个是跟切片用的软件相关的吗?不同的切片软件是不同的算法,所以出料速度不同,导致E的递增速率也不太一样?
回复

使用道具 举报

落花无痕  见习技师
 楼主|

发表于 2014-7-29 11:59:51

Rockets 发表于 2014-7-29 11:49
E代表的是extruder,表示挤出的数量
F表示速度,表示移动的速度同时也会影响挤出的速度。 ...
  1. G92 E0
  2. G1 Z8.0 F90
  3. G28 Y0
  4. G28 X0
  5. G1 X0.0 F3000
  6. G28 Z0
  7. G1 Z8.0 F90
  8. M109 S210
  9. M113 S0.75
  10. G1 Z0.4 F90
  11. G1 X10.0 E12 F1500
  12. G92 E0
  13. M106
  14. G90
  15. G21
  16. M103
  17. M105
  18. M113 S1.0
  19. M108 S50.0
  20. G1 X80.64 Y82.757 Z0.432 F6000.0
  21. G1 F1200.0
  22. G1 E1.0
  23. G1 F6000.0
  24. M101
  25. G1 X80.64 Y118.843 Z0.432 F375.0 E11.6908
  26. G1 X82.08 Y118.843 Z0.432 F375.0 E12.1174
  27. G1 X82.08 Y82.757 Z0.432 F375.0 E22.8082
  28. G1 X83.52 Y82.757 Z0.432 F375.0 E23.2348
  29. G1 X83.52 Y118.843 Z0.432 F375.0 E33.9256
  30. G1 X84.96 Y118.843 Z0.432 F375.0 E34.3522
  31. G1 X84.96 Y82.757 Z0.432 F375.0 E45.043
  32. G1 X86.4 Y82.757 Z0.432 F375.0 E45.4696
  33. G1 X86.4 Y118.843 Z0.432 F375.0 E56.1604
  34. G1 X87.84 Y118.843 Z0.432 F375.0 E56.587
  35. G1 X87.84 Y82.757 Z0.432 F375.0 E67.2777
  36. G1 X89.28 Y82.757 Z0.432 F375.0 E67.7044
复制代码

初始E好像也是从0开始的,但一下子就递增了好多,好吧,我看走眼了。


下面这个是CURA软件切的G代码,初始值好像就是从0开始的。
  1. G0 F9000 X72.70 Y31.67 Z0.30
  2. G0 X72.70 Y31.67
  3. ;TYPE:SKIRT
  4. G1 F2400 E0.00000
  5. G1 F1200 X73.24 Y30.74 E0.02764
  6. G1 X73.24 Y30.74 E0.02766
  7. G1 X74.14 Y29.19 E0.07419
  8. G1 X74.80 Y28.35 E0.10170
  9. G1 X75.93 Y26.94 E0.14847
  10. G1 X76.71 Y26.22 E0.17605
  11. G1 X78.03 Y24.99 E0.22263
  12. G1 X78.91 Y24.39 E0.25018
  13. G1 X80.40 Y23.37 E0.29692
  14. G1 X81.36 Y22.91 E0.32437
  15. G1 X82.99 Y22.13 E0.37109
  16. G1 X84.00 Y21.82 E0.39861
  17. G1 X85.73 Y21.28 E0.44530
  18. G1 X88.57 Y20.86 E0.51959
  19. G1 X89.63 Y20.86 E0.54714
  20. G1 X91.44 Y20.86 E0.59377
  21. G1 X92.49 Y21.02 E0.62142
  22. G1 X94.27 Y21.28 E0.66792
  23. G1 X95.29 Y21.60 E0.69557
复制代码


很感谢你的回复
回复

使用道具 举报

Rockets  NPC

发表于 2014-7-29 15:06:34

是的,一般是从0开始的
其中G92 E0表示E值归0。
回复

使用道具 举报

落花无痕  见习技师
 楼主|

发表于 2014-7-29 16:17:38

刚刚找到一个3D打印机G代码的注释网站,共享一下
http://reprap.org/wiki/G-code/zh_cn

另外,摘录一些注释
延时G 命令
RepRap固件接收到这些命令后,会先存储在一个循环队列缓存里再执行。这意味着固件在接收到一条命令后马上可以传输下一条。另一方面,这也意味着一组线段可以没有间断的情况下连续打印。为了实现命令流的控制,当接受到可缓存的命令时,如果固件把它成功放到本地缓存里,就立即给出应答,如果本地缓存已满,则会延时等到缓存有空出的位置时,才给出应答。
G0: Rapid move 快速移动
Support        FiveD        Teacup        Sprinter        Marlin        Repetier
???        yes        yes        yes        yes
Example: G0 X12
这个命令会移动的距离 X = 12 mm. 事实上, 对于RepRap来说,这个命令的效果和G1 X12是一样的。(这条命令本来是为了让那些喜欢走折线路径的老机器走直线这个比较快的路径,所以叫做快速移动)
G1: Controlled move 可控移动
Support        FiveD        Teacup        Sprinter        Marlin        Repetier
yes        yes        yes        yes        yes
Example: G1 X90.6 Y13.8 E22.4
从当前的位置点(X, Y) 移动到目的点(90.6, 13.8), 并会在行进过程中挤出22.4mm的打印丝(注意,挤出命令是由E22.4控制的)
RepRap 对于进料速度很敏感. 因此:
G1 F1500
G1 X90.6 Y13.8 E22.4
会先设置 1500毫米每分钟 的进料速度, 然后才会移动(X90.6 Y13.8)并且吐丝.
但是
G1 F1500
G1 X90.6 Y13.8 E22.4 F3000
这串代码却会先设置1500毫米每分钟 的进料速度,然后在移动的时候提升进料速度,直到3000毫米每分钟。
RepRap 可以通过E命令轻易对进料速度进行加/减速,就像对X,Y,Z,E命令一样,这样,机器才能在必要的点吐必要的丝。
提示: 不是所有的固件都支持这项功能(移动在改变进料速度), 例如: 当前的 Marlin 会从一开始就使用新的进料速度,而不会尝试在中途改变它。
第一个例子是在移动时保持固定进料速度,而第二个例子则是在移动中改变进料速度。 因此:
G1 F1500
G1 X90.6 Y13.8 E22.4 F3000
G1 X80 Y20 E36 F1500
这段代码会先先加速进料速度到3000毫米每分钟 减速到1500 毫米每分钟。
吸丝操作,通过反向转动挤出机马达,减少挤出机内部压力,避免在悬空移动时候的吐丝,可以有效减少打印过程中的毛刺现象,具体操作:发送G1 Ennn指令给RepRap 其中nnn的值应当小于当前的值


M103 关闭所有挤出机 / Extruder Retraction (挤出回缩)
M103 in Teacup firmware
If a DC extruder is present, turn that off. Else, retract the filament in the hope to prevent nozzle drooling. Complement to M101.
M103 in other firmwares
Deprecated. Regarding extruder retraction, see M227, M228, M229.

M104:设置挤出机(热头)温度
Support        FiveD        Teacup        Sprinter        Marlin        Repetier
yes        yes        yes        yes        yes
例如: M104 S190
将挤出机的温度设置为190oC 并将操作全归还给操作主机(控制PC) (i.e. before that temperature has been reached by the extruder). See also M109.
This is deprecated because temperatures should be set using the G10 and T commands (q.v.).
Deprecation is subject to discussion. --Traumflug 11:33, 19 July 2012 (UTC)
M104 in Teacup Firmware
In Teacup Firmware, M104 can be additionally used to handle all devices using a temperature sensor. It supports the additional P parameter, which is a zero-based index into the list of sensors in config.h. For devices without a temp sensor, see M106.
Example: M104 P1 S100
Set the temperature of the device attached to the second temperature sensor to 100 °C.
M105: 获取温度
Example: M105
请求当前温度(单位:℃),温度将立即返回到控制程序 (T:挤出机 B:加热床) 例如,输出候会得到这样的答复 ok T:201 B:117

M106: 打开风扇
Support        FiveD        Teacup        Sprinter        Marlin        Repetier
yes        yes        yes       
Example: M106 S127
打开风扇(半速)
'S'表示 PWM值 (0-255). 可简单理解为 风扇有0-255级强度可选,其中 M106 S0 意味着风扇将被关掉。
M106 in Teacup Firmware
Additionally to the above, Teacup Firmware uses M106 to control general devices. It supports the additional P parameter, which is an zero-based index into the list of heaters/devices in config.h.
Example: M106 P2 S255
Turn on device #3 at full speed/wattage.
Note: When turning on a temperature sensor equipped heater with M106 and M104 at the same time, temperature control will override the value given in M106 quickly.
M107: 关闭风扇
不推荐. 请用M106 S0 代替.
M108: 设置挤出机速度
设置挤出机电机的转速 (不推荐,请使用 M113)
M109: 设置挤出机温度,并等待
Support        FiveD        Teacup        Sprinter        Marlin        Repetier
???        not needed        see text        yes         ???
M109 in Teacup
Not needed. To mimic Marlin behaviour, use M104 followed by M116.
M109 in Marlin, Sprinter固件 (ATmega port)
设置挤出机温度,并等待.
Example: M109 S185
M109 in Sprinter (4pi port)
Parameters: S (optional), set target temperature value. If not specified, waits for the temperature set by M104. R (optional), sets target temperature range maximum value.
Example: M109 S185 R240 //sets extruder temperature to 185 and waits for the temperature to be between 185 - 240.
If you have multiple extruders, use T or P parameter to specify which extruder you want to set/wait.
Another way to do this is to use G10.
回复

使用道具 举报

Rockets  NPC

发表于 2014-7-30 11:58:20

落花无痕 发表于 2014-7-29 16:17
刚刚找到一个3D打印机G代码的注释网站,共享一下
http://reprap.org/wiki/G-code/zh_cn

感谢分享。
回复

使用道具 举报

gogo  学徒

发表于 2014-8-18 14:00:36

学习!
回复

使用道具 举报

Mars-xue  学徒

发表于 2015-3-28 22:11:37

感谢分享
回复

使用道具 举报

vvokwest  见习技师

发表于 2015-4-13 20:51:19

感谢分享~~~
回复

使用道具 举报

Jason_G  高级技师

发表于 2016-1-11 15:00:48

落花无痕 发表于 2014-7-29 16:17
刚刚找到一个3D打印机G代码的注释网站,共享一下
http://reprap.org/wiki/G-code/zh_cn

感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail