close

G代碼是連接電腦和3d印表機的「橋樑」,利用G代碼,我們可以通過電腦「告訴」3d印表機什麼時候列印,在哪兒列印,如何移動,擠出多少等。

現實中Cura和Simplify3D是我們使用得最多的兩款切片軟體,而這類型的切片軟體會從CAD模型中「自動」生成G代碼, 所以大部分用戶沒見過或編寫過單行代碼。但是,如果我們想要對3D列印有更深的理解,清楚G-code這種程序語言是很有必要的!

這是因為,了解G代碼的你可以很好的充當印表機的故障檢測員,控制列印過程的各個方面,在故障發生前就可以識別並防止列印失敗。

聽起來是不是很有趣?下面讓我們一起來看看如何看懂並理解G代碼、如何自己編寫代碼並在線測試、如何使用切片的G代碼預覽功能來解決複雜的版畫~

一、什麼是G代碼?

G代碼代表「幾何碼」。它的主要功能是指導機器頭如何在3個維度上幾何移動。不過,它也可以指示機器做非幾何的東西。例如,G代碼可以命令3D印表機用指定的擠出速度擠壓材料或改變其床溫。

從專業術語角度,G代碼是一種數控編程語言。對於那些知道如何編程的人來說,G代碼是一種簡單的編程語言。這是最基本的代碼,沒有先進的結構比如可變因素、條件結構和循環結構。

對於那些不知道如何編程的人來說,我們可以認為是將G代碼作為指令的順序線。每行告訴印表機做一個特定的任務。印表機一行一行地執行,直到它結束。

二、如何讀懂G代碼

當屏幕上布滿著密密麻麻的G代碼時,乍一看還蠻令人頭暈目眩的。但當你一行一行細細地去思考時,會發現這些代碼還是挺簡單的!如:

這一行告訴印表機向目的地直線移動,目的地坐標x = 9.2,y=-5.42,和Z = 0.5,進給速度為3000。

那麼我們應該如何理解呢?其實G代碼的每一行以命令開頭。在這個例子中,命令是G1,而命令後面出現的代碼段稱為參數。

這意味著「以受控的方式直線運動」(查看文末附錄二可查看每一個G代碼命令的意義)。

每個參數告訴印表機如何執行命令。參數以英文字母開頭,然後指定一個值。例如,X-9.2意味著終點X坐標- 9.2。F3000.0意味著進給速度(F)是3000。E0.0377意味著擠出率(E)是0.0377。

從字母G開始的命令是幾何命令,它們告訴印表機頭如何移動,但這顯然不足以控制3D印表機的所有方面。如果你需要告訴印表機關掉電機或提高床溫呢?對於這些非幾何任務,G代碼的實現還定義了一組以字母M開頭的命令,它們被貼切地稱為M碼。命令M140設置床溫,命令M190使印表機等待達到目標溫度。

你在G代碼中遇到的每一個英文字母都有特定的意義。例如,G表示幾何命令,M表示非幾何命令,x表示x坐標,y表示y坐標,f表示進給速度等。其實在G-M代碼中有時候還會摻雜一些其它字母標示參數意義,比如T、S、F、P等,具體意義見下表。

(ps:表中 nnn 表示的是數字)

三、一些常用的G代碼命令

正如指令G1:以直線的方式控制噴嘴。這只是眾多G代碼命令中的其中一個,下面,我們將討論其他一些我們會使用到的重要的G代碼命令。

1、G0(快速移動)

G0命令讓列印頭以最大行程速度從當前位置移動到命令指定的坐標處。列印頭將以協調的方式移動,使得兩個軸同時完成路徑。

執行此命令時,噴嘴不會擠壓任何材料。這個命令通常用於將噴嘴迅速地送到列印開始或列印時所需的坐標處。

2、G1(可控移動)

G1命令讓列印頭以指定的速度從當前位置移動到由命令指定的協調位置,其中速度由進給速度參數F指定。列印頭將以協調的方式移動,使得兩個軸同時完成路徑。

當印表機執行此命令,擠出速率參數E確定了擠出率時,印表機可以擠出材料。

3、G17/G18/G19(選擇平面)

這些G代碼指令設置噴嘴應該移動到哪個平面。通常,G17是大多數機器的默認,它表示x-y平面。而G18、G19分別表示的是Z-X平面和Y-Z平面。

4、G20/G21(單位設置)

這些指令設置的是代碼單位:G20代表英寸,G21表示毫米。兩者間差異很大,這是因為圖中G20意味著「迅速移動到x = 7英寸和Y = 18英寸」

G21意味著「迅速移動到x = 7毫米和Y = 18毫米」。

5、G28(返回參考點)

G28命令讓機器返回參考點,如返回初始位置:

6、G90(絕對值指令)

絕對值指令讓機器將坐標解釋為絕對坐標,這意味著一個命令:將機器頭移動到坐標x = 10。

7、G91(增量值指令)

增量值指令與絕對值指令相反,它讓機器將坐標解釋為相對坐標。如果機器當前是x = 10,則以下命令是告訴機器從當前位置向X方向移動10個單位。在操作結束時,機器頭將位於坐標x = 20處。

8、G2(順時針方向移動)

G2讓機器從其當前位置開始順時針移動,端點由坐標X和Y指定。旋轉中心由參數 I 確定,它表示旋轉中心的當前位置的X偏移量。J表示旋轉中心的當前位置的Y偏移量。

9、G3(逆時針方向移動)

就像G2命令,G3命令創建一個圓周運動,但它是逆時針方向。

10、Code comments(代碼註釋)

現實中的G代碼文件,除了G代碼命令和參數,它還包含用淺顯的英語寫的別的東西。 其實「;」後面的內容為解釋性語句,即註釋,固件會忽略其內容。為了減少通信量,可以把註釋信息都去掉。

程序員通常需要用簡單的英文寫下解釋,一方面可以預防自己遺忘掉,另一方面以便其他程序員能夠理解某一行或部分代碼的意思。

五、一個成熟的G代碼程序的結構

大多數的G代碼程序包含三個重要部分。第一部分列印過程中初始化印表機。第二部分指示印表機列印模型。第三部分在列印完成後將印表機重置為默認配置。具體如下

1、初始階段

在列印開始之前需要執行某些任務。例如,我們需要加熱列印床,加熱擠出機,清洗噴嘴,將噴嘴移動到起始位置等。這些任務是所有程序的第一部分。

這是一個實際的3D列印任務的前五行的初始化代碼。就此,在最後的參考表的幫助下,你應該能看並理解他們。

第一行將坐標設置為絕對坐標。第二行設置擠出機的擠出率為絕對值。第三行打開風扇,但設置速度為0,這基本上意味著風扇關閉。第四行設置床溫為100度。第五行是指,在這種情況下,印表機等待床溫達到期望值100℃。

在初始化階段,印表機將不會擠壓任何材料,除非它是在清洗噴嘴。這是一個簡單的方法來區分初始化階段停止和實際列印開始。在實際的列印過程中,印表機幾乎每一步都在擠出材料。

2、列印階段

3D印表機逐層列印模型。像simplify3d或Cura這類的切片軟體通常將三維模型分成多個水平層,堆疊在彼此的頂部來完成最終的列印。

因此,列印階段包括在X-Y平面移動(印刷一層),然後在Z方向移動(移動到下一層)隨後在X Y平面再移動(列印下一層)。具體如下:

3、重置印表機

最後,當列印結束時,最後的一些G代碼行會將印表機重置到默認狀態。例如,噴嘴回到原點,加熱關閉(無論是熱床或是擠出機)和電機禁用。

六、輸入和輸出

到目前為止,我們只談到了計算機發送指令到印表機,看來傳達指令是一種方式。但是3D列印實際上涉及計算機和印表機之間的雙向通信。

當你點擊您的計算機上的「列印」按鈕時,3D列印軟體開始發送指令到印表機,一次一行。印表機執行指令並反饋給計算機。如果反饋的指示沒有錯誤,則計算機將發送要執行的下一行代碼。印表機的反饋通常遵循以下格式:

其中:

• ok 意味著沒有檢測到錯誤。這提示計算機發送的G代碼的下一行到印表機。

• rs 表示「重新發送指令」。這通常是重發代碼行。

• 兩個感嘆號(!!)意味著硬體錯誤。在這種情況下,機器立即關閉,列印作業中止。

除了這3個反饋,印表機還可以報告印表機參數到計算機,如溫度,噴嘴的坐標等。如對M105(查看文末附錄二可查看每一個G代碼命令的意義)命令溫度反饋,反饋的格式會是:

其中:T表示擠出機溫度,B表示床層溫度。如果機器沒有溫度感測器,則-273將作為一個值被返回。

對M114和M117(查看文末附錄二可查看每一個G代碼命令的意義)命令坐標反饋,反饋的格式會是:

這裡,C代表「坐標跟隨」,也就是當前x,y,Z坐標和其他信息。

七、用G代碼預覽的功能防止列印失敗

在複雜的3D模型列印中,成功與失敗的關鍵在於是否會利用G代碼預覽功能。一般來說,當你想列印一個複雜的三維模型時,我們最好是使用G代碼查看器,檢查每一步的列印步驟。

之所以這樣做,是因為自動生成的G代碼往往不會很理想,容易導致列印失敗。在這種情況下,我們需要修改代碼以確保列印成功。

附錄1兼容性說明

每台3D印表機都會自帶一些固件,而這些固件的開發者往往都有自己編程風格。這就造成了兼容性問題,適合一種機器的G代碼,未必就一定適合其它的機子!

當然,我們可以通過聯機的方式來處理這個問題~

附錄2:G代碼命令的意義


(本文為ANYCUBIC原創內容,禁止抄襲,如需轉載請註明來源)

 

-Summer


arrow
arrow

    charisma1048 發表在 痞客邦 留言(0) 人氣()