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