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