導(dǎo)讀:就像學(xué)習(xí)一門新的外語一樣,,如果您經(jīng)常使用3D打印機(jī)或其他CNC機(jī)器,,了解G-Code的構(gòu)建方式以及某些說明的含義不僅可以解決打印問題,,還可以根據(jù)需求自定義打印,。
G-CODE是我們告訴機(jī)器它們需要做什么的方式,。自1950年代后期以來一直流行至今,是使用最廣泛的計(jì)算機(jī)數(shù)控編程語言,。不過,,請不用擔(dān)心,因?yàn)樗悄芟氲降淖詈唵蔚恼Z言之一:在大多數(shù)3D打印機(jī)上使用的形式中,,沒有循環(huán),、沒有if語句、沒有括號或任何其他花哨的東西,。如果您在切片器中準(zhǔn)備一個(gè)模型并在文本編輯器中打開生成的G-CODE,,您會看到它只是3D打印機(jī)固件讀取然后執(zhí)行的命令列表(按行執(zhí)行)。
△PrusaSlicer中的G-CODE可視化.png (220.22 KB, 下載次數(shù): 75)
下載附件
2021-11-24 08:06 上傳
△PrusaSlicer中的G-CODE可視化
本文中,,南極熊將介紹3D打印機(jī)最常見的G-CODE(與Marlin固件兼容),,使您能夠理解95%的3D打印G-CODE。如果你運(yùn)行帶有RepRap固件的打印機(jī)或帶有Mach 3的CNC系統(tǒng),,文件的整體外觀將是相同的,,盡管某些命令的執(zhí)行操作可能略有不同。
△Marlin G-CODE示例.png (63.75 KB, 下載次數(shù): 75)
下載附件
2021-11-24 08:06 上傳
△Marlin G-CODE示例
那么讓我們來看看Marlin-G-code,。正如之前所說,,代碼從文件的開頭到結(jié)尾按行處理,這些文件通常由一個(gè)包含一些基礎(chǔ)信息的標(biāo)題組成,。接下來是您可以在切片器中自定義的開始G-CODE,,然后是帶有結(jié)束G-CODE打印命令,。通常還有一個(gè)包含所有切片器設(shè)置的文本塊,。如果您忘記保存配置文件或從其他人那里收到打印非常好的G-CODE文件,這部分或許非常有用,。某些切片器將允許您導(dǎo)入G-CODE文件并根據(jù)設(shè)置生成配置文件,,但這通常是僅當(dāng)G-CODE也使用相同的切片器創(chuàng)建才能夠?qū)崿F(xiàn)。
注釋
如果我們查看標(biāo)題或設(shè)置塊,,我們已經(jīng)可以看到一些重要的東西,。這些行通常以分號開頭。在一行的開頭有一個(gè)分號意味著這是一個(gè)注釋,,所以它會被固件忽略,。注釋不能占用整行,,而是在常規(guī)命令后添加,提高代碼的可讀性,。切片器還會經(jīng)常添加注釋,,以便您更輕松地找到某個(gè)圖層或某個(gè)功能。為了完整性,,根據(jù)CNCG-CODE標(biāo)準(zhǔn),,一些固件支持括號中的注釋,盡管這種風(fēng)格很少使用,。
△G-CODE中的注釋.png (42.27 KB, 下載次數(shù): 79)
下載附件
2021-11-24 08:06 上傳
△G-CODE中的注釋
句法
再來看看G-CODE的命令語法,。每個(gè)命令都以字母開頭。G代表準(zhǔn)備命令,,通常用于與運(yùn)動(dòng)相關(guān)的任務(wù),。M命令(Miscellaneous commands)通常用于更改設(shè)置或執(zhí)行操作。后面的數(shù)字代表了一個(gè)特定的命令,。接下來是G-CODE的命令參數(shù),,用一個(gè)描述性字母,然后是參數(shù)值,。
△G-CODE句法.png (46.06 KB, 下載次數(shù): 79)
下載附件
2021-11-24 08:06 上傳
△G-CODE句法
G0 & G1 - 直線運(yùn)動(dòng)
讓我們從最常見的G0和G1命令開始,,它們用于軸的運(yùn)動(dòng)。XYZ參數(shù)定義了它需要移動(dòng)的位置,,E定義了擠出的材料量,,F(xiàn)定義了進(jìn)給量,通常以毫米/分鐘為單位,。G0和G1不需要所有軸的值,,而且只需設(shè)置一次,狀態(tài)會一直存在,,直到被更改,。在過去,G0用于不需要精度的快速移動(dòng),,而G1是從一個(gè)位置到另一個(gè)位置的協(xié)調(diào)線性移動(dòng),。然而在目前的3D打印機(jī)上,G0和G1幾乎相同,,約定俗成的是G0用于行進(jìn)運(yùn)動(dòng),,G1用于材料擠出的運(yùn)動(dòng)。
△G0 & G1 - 直線運(yùn)動(dòng).png (42.82 KB, 下載次數(shù): 77)
下載附件
2021-11-24 08:06 上傳
△G0 & G1 - 直線運(yùn)動(dòng)
G90 & G91 - 定位模式
與G0和G1相關(guān)的一個(gè)非常重要的命令對是G90和G91,。這些將定位模式設(shè)置為絕對或相對,。如果設(shè)置了G90,則所有運(yùn)動(dòng)都是到打印機(jī)坐標(biāo)系中的絕對位置。所以G0X50 Y50將打印頭移動(dòng)到X50 Y50,,而G0 X100Y100將打印頭移動(dòng)到X100 Y100,。
△絕對定位.png (37.6 KB, 下載次數(shù): 64)
下載附件
2021-11-24 08:06 上傳
△絕對定位
如果設(shè)置了G91,則所有運(yùn)動(dòng)都相對于最后一個(gè)位置,。因此,,如果我們從原點(diǎn)X0Y0開始并發(fā)送G0 X50 Y50,打印頭將移動(dòng)到X50Y50,。但是如果在這之后發(fā)送G0 X100 Y100,,打印頭將執(zhí)行增量移動(dòng)并在停留在X150Y150。
△相對-增量定位.png (37.42 KB, 下載次數(shù): 68)
下載附件
2021-11-24 08:06 上傳
△相對/增量定位
G-Code文件中的大部分移動(dòng)都將使用絕對定位來實(shí)現(xiàn),。相對定位可能有用的地方是,,例如,在G-CODE最后,,您希望將噴嘴從打印件上抬起并移開,。因此,無論您的型號高度如何,,G91和G0Z10始終都將打印頭提升10毫米,。緊接著,用G90切換回絕對定位,,可以將噴嘴移動(dòng)到打印床的邊緣,。
△結(jié)束腳本示例以抬起噴嘴并將其移開.png (51.41 KB, 下載次數(shù): 85)
下載附件
2021-11-24 08:06 上傳
△結(jié)束腳本示例以抬起噴嘴并將其移開
M82 & M83 - 擠出機(jī)定位模式
與打印移動(dòng)相關(guān)的還有命令對M82和M83。盡管看起來有點(diǎn)奇怪,,但耗材擠出機(jī)是3D打印機(jī)的第4軸,,并且可以從絕對定位到相對定位分別切換,就像運(yùn)動(dòng)軸一樣,。M82設(shè)置軸為絕對模式,,M83設(shè)置為相對模式。此設(shè)置主要是您使用的切片器的偏好,。CURA主要以絕對坐標(biāo)進(jìn)行擠壓,,因此是M82命令,而PrusaSlicer默認(rèn)使用M83進(jìn)行相對擠壓,。在這兩種命令中,,累積相對誤差或哪一種命令更好這種討論并不是非常重要,更多的是您更喜歡哪種風(fēng)格,。
△不同切片器的示例G-CODE.png (166.43 KB, 下載次數(shù): 73)
下載附件
2021-11-24 08:06 上傳
△不同切片器的示例G-CODE
G28 - 歸位
大多數(shù)3D打印機(jī)為軸使用簡單步進(jìn)電機(jī),,沒有任何位置反饋,。這意味著當(dāng)你打開你的機(jī)器時(shí),,它不知道它的位置。這就是為什么我們在打印機(jī)上運(yùn)行的每個(gè)G-CODE文件基本上一開始就包含G28。G28啟動(dòng)歸位程序,,機(jī)器移動(dòng)到已知位置的終點(diǎn),,所有軸一個(gè)接一個(gè)地歸位。通過添加X,、Y或Z參數(shù)或它們的組合,,我們可以告訴固件僅歸位一個(gè)或兩個(gè)軸。
△軸歸位的不同方法.png (44.97 KB, 下載次數(shù): 75)
下載附件
2021-11-24 08:06 上傳
△軸歸位的不同方法
G29 - 床面平整
越來越多的3D打印機(jī)開始配備床面調(diào)平探頭,,其中G29用于開始調(diào)平過程,。G28和G29通常按連續(xù)順序出現(xiàn),因?yàn)樵陂_始床身探測之前需要將軸歸位,。
G92 - 設(shè)置當(dāng)前位置
與歸位類似,,使用命令G92可以讓我們將當(dāng)前位置設(shè)置為特定值。因此,,無論打印頭在何處,,發(fā)送G92 X0 Y0 Z0都會告訴打印機(jī)當(dāng)前位置是坐標(biāo)系的新原點(diǎn)。在3D打印中,,G-CODEG92在使用絕對擠壓時(shí)最常見,,并且擠壓機(jī)軸被重置以獲得更好的可讀性。
△G92示例.png (37.81 KB, 下載次數(shù): 73)
下載附件
2021-11-24 08:06 上傳
△G92示例
M104 & M109 + M140 & M190 - 溫度
現(xiàn)在讓我們看看溫度,,特別是噴嘴和床的溫度,。使用M104和M109加上參數(shù)S,即可設(shè)置噴嘴溫度,。但是這對命令有什么區(qū)別呢,?M104只是簡單地設(shè)置噴嘴溫度,然后G-CODE的執(zhí)行將照常繼續(xù),。另一方面,,M109設(shè)置溫度,然后暫停G-CODE執(zhí)行,,直到達(dá)到溫度,。
△設(shè)置噴嘴溫度.png (70.79 KB, 下載次數(shù): 76)
下載附件
2021-11-24 08:06 上傳
△設(shè)置噴嘴溫度
這在設(shè)置床溫時(shí)完全相同。M140將簡單地設(shè)置預(yù)期溫度,,M190設(shè)置溫度并暫停直到達(dá)到溫度,。
△設(shè)置熱床溫度.png (66.68 KB, 下載次數(shù): 73)
下載附件
2021-11-24 08:06 上傳
△設(shè)置熱床溫度
順便說一下,這兩對命令容易混淆,,因?yàn)閿?shù)字4和9只相差了一位,。
△相似的命令.png (45.1 KB, 下載次數(shù): 90)
下載附件
2021-11-24 08:06 上傳
△相似的命令
基本上,您可以在任何腳本中找到它們,。設(shè)置之后,,打印機(jī)要等到達(dá)到適當(dāng)?shù)臏囟龋缓蟛砰_始打印。如果您的打印機(jī)需要同時(shí)開始加熱床和噴嘴,,您會發(fā)現(xiàn)這些命令:M104,、M140、M109,、M190,。
△同時(shí)加熱噴嘴和床.png (62.26 KB, 下載次數(shù): 72)
下載附件
2021-11-24 08:06 上傳
△同時(shí)加熱噴嘴和床
有些機(jī)器先加熱床,然后加熱噴嘴,,以避免材料滲出,。在這種情況下,您通常會在腳本中找到這樣的順序:M140,、M190,、M104和M109。
△先加熱床,,然后加熱噴嘴.png (61.9 KB, 下載次數(shù): 70)
下載附件
2021-11-24 08:06 上傳
△先加熱床,,然后加熱噴嘴
因此,如果您不想等待床和噴嘴一個(gè)接一個(gè)地加熱,,現(xiàn)在知道要在腳本中更改什么了吧,!另外,有些人會在特定高度手動(dòng)將M104命令添加到G-CODE中,,自定義溫度塔,。這種情況下,不建議使用M109,,因?yàn)樾聹囟韧ǔ谝粚觾?nèi)達(dá)到,,因此暫停打印會導(dǎo)致更多問題。
M106 - 設(shè)置風(fēng)扇速度
另一個(gè)重要的命令是M106,,用于控制冷卻風(fēng)扇,。參數(shù)S的范圍可以從0到255,可讓您調(diào)整其速度,。例如,,全功率為255,半功率為128,。如果要完全關(guān)閉,,則使用M106 S0或?qū)S妹頜107。
△風(fēng)扇設(shè)置示例.png (64.75 KB, 下載次數(shù): 69)
下載附件
2021-11-24 08:06 上傳
△風(fēng)扇設(shè)置示例
M84 - 禁用步進(jìn)器
最后一個(gè)命令是M84,。使用打印機(jī)控制移動(dòng)軸后,,步進(jìn)電機(jī)將保持通電狀態(tài),以避免丟失其位置,。如果您想禁用電機(jī)以便手動(dòng)移動(dòng)軸,,您可以對所有軸使用M84,,或者使用帶有X、Y,、Z和E參數(shù)的M84來關(guān)閉單個(gè)軸,。
△禁用步進(jìn)電機(jī).png (39.04 KB, 下載次數(shù): 83)
下載附件
2021-11-24 08:06 上傳
△禁用步進(jìn)電機(jī)
如果您記住這10個(gè)命令或命令對,,就會理解切片機(jī)生成的大部分G-CODE并根據(jù)自己的喜好自定義打印例程,。當(dāng)然,3D打印機(jī)的執(zhí)行過程還涉及了更多的命令,,你還知道哪些命令和意義呢,?歡迎在評論中告訴南極熊,您認(rèn)為還有哪個(gè)命令最重要,、最實(shí)用,?
參考閱讀:
1. Learn G-Code for 3D Printing
2. G-CODE BASICS FOR 3D PRINTING