編者按:G代碼是一種計(jì)算機(jī)數(shù)控(CNC)編程語(yǔ)言,用于控制機(jī)器執(zhí)行各種運(yùn)動(dòng)和動(dòng)作所需的指令。它同樣適用于3D打印機(jī),我們往往需要借助切片軟件進(jìn)行代碼的轉(zhuǎn)換。然而,如果你想更深入地了解3D打印,就必須學(xué)習(xí)G代碼的基礎(chǔ)知識(shí)。這些知識(shí)將使你能夠更好地排除故障并控制打印過(guò)程,同時(shí)還可以自定義Marlin、Klipper和RepRap等3D打印機(jī)固件。
在本文中,我們將介紹G代碼的基礎(chǔ)知識(shí),包括如何查看、理解和編寫(xiě)命令,這將為3D打印初學(xué)者提供有力的幫助。話(huà)不多說(shuō),那么,讓我們從頭開(kāi)始吧!
什么是G代碼?
對(duì)于那些不熟悉一般編程的人來(lái)說(shuō),可以將G代碼視為連續(xù)的指令行,每行指令都告訴3D打印機(jī)執(zhí)行特定任務(wù)。這些行被稱(chēng)為命令,打印機(jī)將逐行執(zhí)行它們,直到到達(dá)代碼末尾。
G代碼命令用于指示機(jī)器執(zhí)行特定操作
術(shù)語(yǔ)“G代碼”用于指代整個(gè)編程語(yǔ)言,在3D打印的使用中主要包括兩種命令:“通用”命令和“輔助”命令。通用命令行負(fù)責(zé)3D打印機(jī)中的運(yùn)動(dòng)類(lèi)型。此類(lèi)命令由字母“G”標(biāo)識(shí),除了控制打印頭在三個(gè)軸上的運(yùn)動(dòng)外,它們還負(fù)責(zé)耗材擠出。
另一方面,輔助命令指示機(jī)器執(zhí)行非幾何任務(wù)。在3D打印中,此類(lèi)任務(wù)包括噴嘴和床的加熱命令以及風(fēng)扇控制等,用字母“M”標(biāo)識(shí)。
語(yǔ)法
每個(gè)G代碼命令行都遵循一定的語(yǔ)法,任何給定行的第一個(gè)參數(shù)是命令代碼本身。它可以是"G"或"M"代碼類(lèi)型,后跟一個(gè)標(biāo)識(shí)命令的數(shù)字。例如,"G0"對(duì)應(yīng)于直線(xiàn)移動(dòng)指令。
命令行由標(biāo)識(shí)和參數(shù)組成
接下來(lái)是更準(zhǔn)確地定義命令的參數(shù)。對(duì)于G0線(xiàn)性移動(dòng),這些參數(shù)包括最終位置及其移動(dòng)速度,也由大寫(xiě)字母標(biāo)識(shí),其中每個(gè)命令都有自己的一組參數(shù)。
關(guān)于G代碼的注釋
在開(kāi)始之前,當(dāng)我們查看各種命令時(shí),你會(huì)在字母和數(shù)字后面看到分號(hào),它們解釋了代碼的作用。以下是包含代碼注釋的行的示例:
G1 X25 Y5 ; 這是一個(gè)代碼注釋?zhuān)?br />
程序員通常需要用簡(jiǎn)單的英語(yǔ)進(jìn)行解釋?zhuān)员闫渌绦騿T可以理解代碼的某些行或部分。注釋包括分號(hào)后面的任何內(nèi)容(在同一行),并且在執(zhí)行G代碼時(shí)會(huì)被機(jī)器完全忽略。
重要命令
由于G代碼命令實(shí)際上有數(shù)百個(gè),因此我們將在以下部分中介紹最基本和最重要的命令。一旦掌握了這些關(guān)鍵內(nèi)容,你就可以自行探索其他命令。
G0 & G1:直線(xiàn)運(yùn)動(dòng)
G0和G1指令均執(zhí)行直線(xiàn)運(yùn)動(dòng)。G0是快速移動(dòng)指令,一般是空行程。而G1則涵蓋所有擠壓線(xiàn)性運(yùn)動(dòng)。
G0和G1命令負(fù)責(zé)線(xiàn)性運(yùn)動(dòng)和擠出 不過(guò),這兩個(gè)命令的功能相同。G0或G1的參數(shù)包括所有X、Y和Z軸的最終位置、移動(dòng)過(guò)程中要執(zhí)行的擠壓量,以及由進(jìn)給速率(以設(shè)定單位表示)指定的速度。
例子:
G1 X90 Y50 Z0.5 F3000 E1
告訴打印機(jī)以3000毫米/分鐘的進(jìn)給速率(F)向最終坐標(biāo)X = 90毫米、Y = 50毫米、Z = 0.5毫米沿直線(xiàn)(G1)移動(dòng),同時(shí)擠出(E)1毫米的材料。這里需要記住,大多數(shù)線(xiàn)性移動(dòng)都是在單個(gè)層內(nèi)執(zhí)行的,這意味著命令行中通常省略Z坐標(biāo)。
G90 和 G91:絕對(duì)和相對(duì)定位
G90和G91命令告訴機(jī)器如何解釋用于運(yùn)動(dòng)的坐標(biāo)。G90建立“絕對(duì)定位”,通常是默認(rèn)設(shè)置,而G91則建立“相對(duì)定位”。
相對(duì)定位由先前的坐標(biāo)定義,而絕對(duì)定位則不然 這兩個(gè)命令都不需要任何參數(shù),設(shè)置其中一個(gè)命令會(huì)自動(dòng)取消另一個(gè)命令。
例子:假設(shè)我們要將打印頭移動(dòng)到一條線(xiàn)上的X = 30。在絕對(duì)定位模式下,代碼如下:
G90 ; 設(shè)置絕對(duì)定位
G0 X30 ; 移動(dòng)到 X = 30 的坐標(biāo)
因此,例如,這一行代碼將是:
G90 G0 X30
這個(gè)簡(jiǎn)單的移動(dòng)將告訴打印機(jī)移動(dòng)打印頭,使其位于X = 30處。現(xiàn)在,對(duì)于相對(duì)定位移動(dòng),我們需要知道打印頭當(dāng)前所在的位置。假設(shè)X = 10:
G91 ; 設(shè)置相對(duì)定位
G0 X20 ; 沿著X軸移動(dòng) +20毫米
在這種情況下,代碼行將是:
G91 G0 X20
G91首先告訴機(jī)器將坐標(biāo)解釋為相對(duì)于當(dāng)前位置(X = 10)。知道了這一點(diǎn),機(jī)器只需在X軸正方向上移動(dòng)20毫米,從而達(dá)到我們想要的X = 30。
G28 和 G29:自動(dòng)歸位和床調(diào)平
我們將設(shè)置所有運(yùn)動(dòng)軸的物理極限的過(guò)程稱(chēng)為“歸位”。G28命令將通過(guò)移動(dòng)打印頭執(zhí)行此任務(wù),直到觸發(fā)限位器以確認(rèn)限位位置停止下來(lái)。
G28和G29對(duì)于初始化階段很有用 歸位不僅對(duì)于機(jī)器自行定位很重要,而且對(duì)于防止打印頭移動(dòng)到邊界之外也很重要。G28命令通常在每次打印過(guò)程之前執(zhí)行。
另一個(gè)命令G29啟動(dòng)自動(dòng)床調(diào)平序列。在打印之前調(diào)平床有許多不同的方法,因?yàn)檫@通常由固件設(shè)置,而不是由最終用戶(hù)設(shè)置。因此,我們不會(huì)詳細(xì)介紹方法和命令參數(shù)。只需知道G29通常在自動(dòng)歸位(G28)之后發(fā)送,并且應(yīng)執(zhí)行由固件確定的自動(dòng)床調(diào)平。
例子:
G28 X Y ; 歸位X和Y軸
G28 ; 歸位所有軸
如果指定X、Y或Z作為參數(shù),可以單獨(dú)歸位特定軸。否則,僅G28將這三個(gè)軸全部歸位。
G29 ; 執(zhí)行自動(dòng)床調(diào)平序列
如果要運(yùn)行自動(dòng)床調(diào)平序列,請(qǐng)記住在執(zhí)行歸位過(guò)程后發(fā)送G29。
M104、M109、M140 和 M190:設(shè)定溫度
這些是重要的輔助命令,同樣不涉及任何運(yùn)動(dòng)動(dòng)作。
這些M代碼命令負(fù)責(zé)控制熱端和床溫度 首先,M104命令用于設(shè)置噴頭要達(dá)到的目標(biāo)溫度并保持該溫度,直到另有指示為止。一些參數(shù)包括實(shí)際溫度值(S)和要加熱的打印頭(對(duì)于多個(gè)擠出頭而言)。
例子:
M104 S210 ; 設(shè)置噴頭目標(biāo)溫度為210°C
此命令行指示機(jī)器將其噴頭加熱到210°C,并假設(shè)此擠出設(shè)置中只有一個(gè)噴頭。設(shè)置目標(biāo)溫度后,打印機(jī)將在加熱噴頭的同時(shí)繼續(xù)執(zhí)行下一條指令。
或者,如果我們想等到達(dá)到目標(biāo)溫度后再繼續(xù)下一行,我們可以使用M109命令。
M109 S210 ; 設(shè)置噴頭目標(biāo)溫度為210°C,并等待直到達(dá)到目標(biāo)溫度
設(shè)置熱床溫度與噴頭非常相似,但是使用M140和M190命令:
M140 S110 ; 設(shè)置熱床的目標(biāo)溫度為110°C
M190 S110 ; 設(shè)置熱床的目標(biāo)溫度為110°C,并等待直到達(dá)到目標(biāo)溫度。
M106 & M107:風(fēng)扇控制
3D打印機(jī)的另一項(xiàng)重要任務(wù)是通過(guò)各種M106和M107命令來(lái)實(shí)現(xiàn)供風(fēng)扇地控制。
M106 和 M107 命令均可控制 3D 打印機(jī)中的所有風(fēng)扇 M106命令用于打開(kāi)風(fēng)扇并設(shè)置其速度。在需要對(duì)零件進(jìn)行冷卻的時(shí)候特別有用,因?yàn)樵诖蛴〉谝粚雍蜆蚪訒r(shí)可能需要不同的風(fēng)扇速度。速度參數(shù)必須是0到255之間的值。值為255時(shí),風(fēng)扇達(dá)到100%功率,而此范圍內(nèi)的其他數(shù)字將對(duì)應(yīng)于相應(yīng)的百分比功率。
例子:
M106 ; 打開(kāi)一個(gè)風(fēng)扇并設(shè)置最大速度(100%)
M106 S128 ; 打開(kāi)一個(gè)風(fēng)扇并將其設(shè)置為50%的功率
如果有多個(gè)速度可控制的風(fēng)扇,可以通過(guò)索引(P)參數(shù)來(lái)定義,因?yàn)槊總€(gè)風(fēng)扇由固件分配一個(gè)索引。最后,M107命令用于關(guān)閉指定風(fēng)扇的電源。如果沒(méi)有提供索引參數(shù),通常會(huì)關(guān)閉零件冷卻風(fēng)扇。
請(qǐng)注意,風(fēng)扇控制可以根據(jù)不同的3D打印機(jī)和固件而有所不同,因此建議查閱相關(guān)文檔或手冊(cè)以了解你的打印機(jī)支持的具體指令和參數(shù)。
程序結(jié)構(gòu)
現(xiàn)在我們來(lái)查看用于3D打印的實(shí)際代碼,G代碼程序可以分為三個(gè)不同的部分。
需要注意的是,如果你使用文本編輯器打開(kāi)切片軟件生成的G代碼文件,它可能不會(huì)立即以G或M命令作為開(kāi)頭。例如,像Cura或Simplify3D這樣的切片軟件通過(guò)在注釋中包含一些軟件定義,諸如層高等參數(shù),這些行不會(huì)影響打印。
第一階段:初始化
初始化階段包括準(zhǔn)備打印機(jī)打印所需的所有命令 任何程序的第一部分都包括開(kāi)始打印模型之前所需的準(zhǔn)備任務(wù)。以下是實(shí)際3D打印作業(yè)中的前六行初始化G代碼命令。
第一行表示運(yùn)動(dòng)應(yīng)使用絕對(duì)定位,而第二行告訴擠出機(jī)也以絕對(duì)術(shù)語(yǔ)解釋擠出。第三行和第四行的代碼開(kāi)始將熱床和噴頭加熱到目標(biāo)溫度。請(qǐng)注意,它不會(huì)等待目標(biāo)溫度,這意味著打印機(jī)將在加熱時(shí)自動(dòng)返回并調(diào)平熱床。
一些初始化例程(例如PrusaSlicer)包括噴嘴清潔過(guò)程,例如在開(kāi)始打印之前打印一條直線(xiàn)。
第二階段:打印
打印過(guò)程主要由一系列運(yùn)動(dòng)和擠出組成 這是正式開(kāi)始的G代碼文件,3D打印是一個(gè)逐層的過(guò)程,因此我們可以發(fā)現(xiàn)此階段在打印單層時(shí)包括XY平面內(nèi)的移動(dòng)和材料的擠出。一旦完成,Z方向上的一個(gè)微小移動(dòng)將意味著下一層的開(kāi)始。以下是G代碼命令在打印階段的示例:
第三階段:重置
G代碼的最終命令通常是重置位置和狀態(tài) 最后,當(dāng)打印完成時(shí),最后幾行G代碼命令會(huì)使打印機(jī)進(jìn)入正常的默認(rèn)狀態(tài)。例如,噴嘴可能會(huì)移動(dòng)到預(yù)定位置,噴頭和熱床加熱器被關(guān)閉,并且電機(jī)被禁用,等等。
在這個(gè)階段,G代碼會(huì)執(zhí)行一些清理和收尾工作,以確保打印順利結(jié)束,并將打印機(jī)準(zhǔn)備好進(jìn)行下一次打印任務(wù)。
終端輸入和輸出
到目前為止,我們只討論了計(jì)算機(jī)向打印機(jī)發(fā)送G代碼命令(通常通過(guò)SD卡傳輸)。然而,這并不是唯一的通信方法。一些控制軟件,例如Pronterface和OctoPrint,允許直接與3D打印機(jī)通信,因此你可以手動(dòng)輸入命令。
OctoPrint有一個(gè)終端窗口,用于直接發(fā)送和接收G代碼 顯然,通過(guò)逐行發(fā)送代碼來(lái)打印任何內(nèi)容是不切實(shí)際的。但有時(shí)這種通信方法也需要用于其他目的,例如檢索有價(jià)值的信息以進(jìn)行校準(zhǔn),甚至在3D打印機(jī)缺少顯示屏?xí)r也是如此。例如,M105“報(bào)告溫度”命令將檢索當(dāng)前噴頭和熱床溫度。
這種通信對(duì)于查看和更改在固件級(jí)別硬編碼的EEPROM設(shè)置也非常有用。例如,電機(jī)步進(jìn)/毫米、最大進(jìn)給速率或PID等參數(shù)可以通過(guò)M503(“報(bào)告設(shè)置”)可視化,手動(dòng)更改,然后通過(guò)M500保存設(shè)置。
編寫(xiě)G代碼
一些G代碼可視化工具對(duì)于學(xué)習(xí)如何編寫(xiě)代碼非常有用 到現(xiàn)在為止,你應(yīng)該能夠更好地查看和理解G代碼了?,F(xiàn)在也可以通過(guò)手動(dòng)開(kāi)始嘗試編寫(xiě)代碼,無(wú)論是通過(guò)在線(xiàn)的G代碼可視化工具,還是查看修改從切片軟件導(dǎo)出的G代碼文件。通過(guò)實(shí)際操作和學(xué)習(xí),你將逐漸掌握G代碼的使用,這將使你在3D打印領(lǐng)域更加熟練和自信。
在結(jié)束本文之前,還需要提醒一下G代碼的兼容性。3D打印固件有很多種(目前還是以Marlin最常見(jiàn)),每種都有不同的G代碼“風(fēng)格”。這可能會(huì)導(dǎo)致兼容性問(wèn)題,因?yàn)檫m用于一臺(tái)機(jī)器的命令可能不適用于另一臺(tái)機(jī)器。
學(xué)習(xí)G代碼是一項(xiàng)持續(xù)且有益的任務(wù) 雖然G代碼不是最復(fù)雜的計(jì)算機(jī)語(yǔ)言,但它仍然需要大量的練習(xí)和學(xué)習(xí)??傊?,希望這篇文章對(duì)你有所幫助,以后看到G代碼,至少能知道它代表什么。
注:本文由資源庫(kù)編譯,原文來(lái)自All3DP,作者:Lucas Carolo ,原標(biāo)題為“3D Printer G-code Commands: Main List & Quick Tutorial”。
|
你可能喜歡
生活館:御小兔 X-ONE 3D打印剃須刀體驗(yàn)報(bào)
3D打印中切片常用的幾個(gè)參數(shù)功能解析-下篇
3D打印中切片常用的幾個(gè)參數(shù)功能解析-上篇
STL 到 STP:如何將STL文件轉(zhuǎn)換為STP
推薦課程
神奇的3D打印
SLA3D打印工藝全套培訓(xùn)課程 - 軟件篇
3D打印月球燈視頻教程 包括完整貼圖建模流
【原創(chuàng)發(fā)布】Cura軟件修改二次開(kāi)發(fā)定制視頻