Mówiąc najprościej, G-code to język programowania do komputerowego sterowania numerycznego (CNC) . Innymi słowy, jest to język, którym posługuje się komputer sterujący maszyną i przekazuje wszystkie polecenia wymagane do ruchu i innych działań.
Chociaż kod G jest standardowym językiem dla różnych maszyn biurowych i przemysłowych, być może najlepiej znamy go dzięki naszym drukarkom 3D. Być może do tej pory nie radziłeś sobie z tym, co jest normalne, ponieważ fragmentatory 3D generują kod „automagicznie”.
Jeśli jednak chcesz pogłębić wiedzę na temat drukowania 3D, konieczne jest poznanie podstaw G-kodu. Ta wiedza pozwoli Ci znacznie lepiej rozwiązywać problemy i kontrolować procesy drukowania, a także umożliwia dostosowanie oprogramowania układowego drukarki 3D , takiego jak RepRap i Marlin .
W tym artykule omówimy podstawy G-kodu, w tym sposób czytania, rozumienia i pisania kilku linijek poleceń, zapewniając solidne podstawy nawet dla zupełnie początkujących w kodowaniu. Bez zbędnych ceregieli zacznijmy więc od początku!
Co to jest?

Dla tych, którzy nie znają ogólnie programowania, pomyśl o kodzie G jako o kolejnych wierszach instrukcji, z których każda mówi drukarce 3D, aby wykonała określone zadanie. Te wiersze są znane jako polecenia i drukarka wykonuje je jeden po drugim, aż do końca kodu.
Chociaż termin „kod G” jest używany w odniesieniu do języka programowania jako całości, jest to również jeden z dwóch rodzajów poleceń używanych w drukowaniu 3D: polecenia „ogólne” i „różne”.
Ogólne wiersze poleceń są odpowiedzialne za rodzaje ruchu w drukarce 3D. Takie komendy są oznaczone literą „G”, tak jak w komendach G. Oprócz kontrolowania ruchu w trzech osiach wykonywanych przez głowicę drukującą, odpowiadają również za wytłaczanie filamentu.
Z drugiej strony różne polecenia instruują maszynę, aby wykonywała zadania niegeometryczne. W druku 3D takie zadania obejmują między innymi polecenia ogrzewania dyszy i stołu, a także sterowanie wentylatorem, jak zobaczymy. Różne polecenia są oznaczone literą „M”.
Składnia

Każda linia poleceń G-kodu ma określoną składnię. Każda linia odpowiada tylko jednemu poleceniu, co może prowadzić do bardzo długich kodów.
Pierwszym argumentem dowolnego wiersza jest sam kod polecenia. Jak widzieliśmy, może to być kod typu „G” lub „M”, po którym następuje liczba identyfikująca polecenie. Na przykład „G0” odpowiada poleceniu ruchu liniowego.
Dalej są parametry, które dokładniej definiują polecenie. W przypadku ruchu liniowego G0 parametry te obejmują końcową pozycję i szybkość ruchu, również identyfikowane dużymi literami. Każde polecenie ma swój własny zestaw parametrów, jak zobaczymy wkrótce.
Uwaga na temat komentarzy do kodu G
Zanim zaczniemy, kiedy przejdziemy przez różne polecenia, zobaczysz średniki po literze i cyfrze, które wyjaśniają, co robi kod. Oto przykład wiersza z komentarzem kodu:
G1 X25 Y5 ; I am a code comment!
Programiści często muszą dołączyć wyjaśnienia w prostym języku angielskim, aby inni programiści mogli zrozumieć określone wiersze lub sekcje kodu. Może się również zdarzyć, że zapomnisz, dlaczego zakodowałeś rzeczy w określony sposób, co spowoduje, że trudno będzie je ponownie rozgryźć.
Rozwiązaniem tego problemu są komentarze do kodu. Komentarze zawierają wszystko (w tym samym wierszu) następujące po średniku i są całkowicie ignorowane przez maszynę podczas wykonywania kodu G. W ten sposób są przeznaczone wyłącznie dla oczu programistów.
WAŻNE POLECENIA DOTYCZĄCE DRUKOWANIA 3D
Ponieważ istnieją dosłownie setki poleceń G-kodów, w następnych sekcjach omówimy te najbardziej podstawowe i najważniejsze. Gdy już to opanujesz, będziesz mógł samodzielnie przeglądać inne polecenia z arkuszy referencyjnych .
G0 i G1: ruch liniowy

Komendy G0 i G1 wykonują ruchy liniowe. Zgodnie z konwencją, G0 jest używany do ruchów bez wyciskania, takich jak ruchy początkowe i ruchy, podczas gdy G1 obejmuje wszystkie ruchy liniowe z wyciskaniem.
Obie komendy działają jednak tak samo. Parametry dla G0 lub G1 obejmują końcowe pozycje dla wszystkich osi X, Y i Z , wielkość wyciskania do wykonania podczas ruchu oraz prędkość określoną przez prędkość posuwu w ustawionych jednostkach.
Przykład
G1 X90 Y50 Z0.5 F3000 E1
nakazuje drukarce ruch w linii prostej (G1) w kierunku ostatecznych współrzędnych X = 90 mm, Y = 50 mm, Z = 0,5 mm z prędkością (F) 3000 mm/min podczas wytłaczania (E) 1 mm materiał w wytłaczarce.
Większość ruchów liniowych jest wykonywana w obrębie pojedynczej warstwy, co oznacza, że współrzędna Z jest zwykle pomijana w wierszu poleceń.POLECENIA G-KODÓW DRUKARKI 3D: LISTA I SAMOUCZEK
G90 i G91: pozycjonowanie bezwzględne i względne

Polecenia G90 i G91 informują maszynę, jak interpretować współrzędne używane do ruchu. G90 ustanawia „pozycjonowanie bezwzględne”, które jest zwykle ustawieniem domyślnym, podczas gdy G91 służy do „pozycjonowania względnego”.
Żadna z komend nie wymaga żadnych parametrów, a ustawienie jednego automatycznie anuluje drugie. Sposób, w jaki działa pozycjonowanie, jest dość prosty, więc przejdźmy od razu.
Przykład
Powiedzmy, że chcemy przesunąć głowicę do X=30 w linii. W trybie pozycjonowania bezwzględnego wyglądałoby to tak:
G90 ; sets absolute positioning
G0 X30 ; moves to the X = 30 coordinate
Ten prosty ruch kazałby drukarce przesunąć głowicę drukującą tak, aby była ustawiona na X = 30. Teraz, aby wykonać ruch pozycjonowania względnego, musimy wiedzieć, gdzie aktualnie znajduje się głowica drukująca. Załóżmy, że jest to X = 10:
G91 ; sets relative positioning
G0 X20 ; moves +20 mm along the X-axis
G91 najpierw nakazuje maszynie zinterpretować współrzędne jako odnoszące się do aktualnej pozycji (X = 10). Wiedząc o tym, maszyna musi po prostu przesunąć się o 20 mm w dodatnim kierunku osi X, osiągając w ten sposób X = 30, tak jak byśmy tego chcieli.
G28 i G29: Automatyczne poziomowanie domu i łóżka

„Homing” nazywamy procesem ustalania fizycznych granic wszystkich osi ruchu. Polecenie G28 wykona to zadanie, przesuwając głowicę drukującą, aż uruchomi ograniczniki potwierdzające limity.
Homing jest ważny nie tylko dla orientacji maszyny, ale także dla zapobiegania przesuwaniu się głowicy drukującej poza granice. Komenda G28 jest zwykle wykonywana przed każdym procesem drukowania.
Kolejne polecenie, G29, uruchamia sekwencję automatycznego poziomowania stołu . Istnieje wiele różnych metod poziomowania stołu przed drukowaniem, ponieważ jest to zwykle ustalane przez oprogramowanie układowe , a nie przez użytkowników końcowych. Z tego powodu nie będziemy wchodzić w szczegóły dotyczące metod i parametrów poleceń. Wystarczy wiedzieć, że G29 jest zwykle wysyłany po automatycznym powrocie do domu (G28) i powinien wykonać automatyczne poziomowanie łóżka zgodnie z oprogramowaniem układowym .
Przykład
G28 X Y ; home the X and Y axes only
G28 ; home all axes
Określona oś może być indywidualnie bazowana poprzez uwzględnienie X, Y lub Z jako parametrów. W przeciwnym razie sam G28 zdobędzie wszystkie trzy.
G29 ; perform automatic bed leveling sequence
Jeśli chcesz uruchomić sekwencję automatycznego poziomowania łóżka, pamiętaj, aby wysłać G29 po wykonaniu procesu naprowadzania.
M104, M109, M140 i M190: Ustaw temperaturę

Są to podstawowe różne polecenia, które znowu nie wymagają żadnego ruchu.
Aby rozpocząć, polecenie M104 ustawia docelową temperaturę do osiągnięcia przez gorący koniec i utrzymuje ją do czasu otrzymania innych instrukcji.
Niektóre parametry obejmują rzeczywistą wartość temperatury (S) i głowicę drukującą (T) do nagrzania (w przypadku konfiguracji wielokrotnego wytłaczania).
Przykład
M104 S210 ; set target temperature for hot end to 210 degrees
Ten wiersz poleceń nakazuje maszynie rozgrzanie gorącego końca do 210 °C i zakłada, że w tej konfiguracji wytłaczania jest tylko jeden gorący koniec. Po ustawieniu temperatury docelowej drukarka przejdzie do wykonania następnego wiersza poleceń podczas podgrzewania gorącego końca.
Alternatywnie, jeśli chcielibyśmy poczekać, aż ten cel zostanie osiągnięty, zanim przejdziemy do następnej linii, możemy użyć polecenia M109.
M109 S210 ; set target temperature for hot end to 210 degrees and do nothing until reached
Ustawienie temperatury stołu jest bardzo podobne do gorącego końca, ale zamiast tego za pomocą poleceń M140 i M190:
M140 S110 ; set target temperature for bed to 110 degrees
M190 S110 ; set target temperature for bed to 110 degrees and do nothing until reached
M106 i M107: Sterowanie wentylatorem

Kolejne ważne zadanie dla drukarek 3D, różne polecenia M106 i M107 zapewniają sterowanie wentylatorem .
M106 włącza wentylator i ustawia jego prędkość. Jest to szczególnie przydatne w przypadku wentylatora chłodzącego część, ponieważ podczas procesu drukowania podczas pierwszej warstwy i mostkowania wymagane są różne prędkości .
Parametr prędkości musi być wartością z zakresu od 0 do 255. Wartość 255 zapewnia 100% mocy, a każda liczba w tym zakresie określa odpowiednio procent.
Przykład
M106 ; turn on a fan at maximum (100%) speed
M106 S128 ; turn on a fan and set it to 50% power
Wiele wentylatorów z regulacją prędkości można zdefiniować za pomocą parametrów indeksu (P), ponieważ każdy wentylator ma przypisany indeks przez oprogramowanie układowe.
Na koniec komenda M107 wyłączy określony wentylator. Jeśli nie podano parametru indeksu, zwykle wyłączany jest wentylator chłodzący część.
STRUKTURA PROGRAMU
Jesteśmy teraz w dobrej sytuacji, aby przyjrzeć się rzeczywistemu fragmentowi kodu używanego do drukowania 3D. Programy w kodzie G można podzielić na trzy odrębne sekcje, jak zobaczymy dalej.
Warto zauważyć, że jeśli użyjesz edytora tekstu do otwarcia pliku z kodem G wygenerowanego przez fragmentator 3D, może się okazać, że nie rozpocznie się on od razu od poleceń G lub M. Na przykład fragmentator, taki jak Cura lub Simplify3D , uruchamia kod, umieszczając niektóre parametry procesu drukowania zdefiniowane wcześniej w komentarzach. Te wiersze nie wpłyną na drukowanie, ale zamiast tego stanowią szybkie odniesienie do parametrów, takich jak na przykład wysokość warstwy.
Faza 1: Inicjalizacja

Pierwsza sekcja każdego programu zawiera czynności przygotowawcze wymagane przed rozpoczęciem drukowania modelu. Poniżej znajduje się pierwszych sześć linii poleceń inicjalizacji kodu G z rzeczywistego zadania drukowania 3D.
G90
M82
M140 S80
M104 S200
G28
G29
Jak teraz wiemy, pierwsza linia mówi, że ruchy powinny wykorzystywać pozycjonowanie bezwzględne, podczas gdy druga linia mówi ekstruderowi, aby również interpretował wytłaczanie w kategoriach bezwzględnych.
Trzecia i czwarta linia zaczynają podgrzewać złoże i dyszę do ich docelowych temperatur. Zwróć uwagę, że nie będzie czekać na docelową temperaturę, co oznacza, że drukarka automatycznie przejdzie do pozycji wyjściowej i wypoziomuje łóżko podczas nagrzewania.
Niektóre procedury inicjalizacji (np. ta używana przez PrusaSlicer ) obejmują proces czyszczenia dysz, na przykład drukowanie pojedynczej linii prostej przed przejściem do procesu drukowania.
Faza 2: Drukowanie

Oto, gdzie dzieje się magia. Jeśli spojrzysz na pocięty plik kodu G, zobaczysz, że nie jesteśmy w stanie określić, co właściwie robi dysza.
Drukowanie 3D to proces warstwa po warstwie, więc przekonasz się, że ta faza obejmuje wiele ruchów w płaszczyźnie XY podczas drukowania pojedynczej warstwy. Gdy to zrobisz, jeden mały ruch w kierunku Z zdefiniuje początek następnej warstwy.
Oto przykład, jak polecenia G-code mogą wyglądać w fazie drukowania:
G1 X103.505 Y153.291 E4.5648 ; movement and extrusion in XY plane
G1 X103.291 Y153.505 E4.5804 ; movement and extrusion in XY plane
G1 Z0.600 F3000 ; change layer
G1 X104.025 Y154.025 F9000 ; movement in XY plane
G1 X95.975 Y154.025 E0.4133 F1397 ; movement and extrusion in XY plane
Faza 3: Zresetuj drukarkę

Wreszcie, po zakończeniu drukowania, niektóre ostatnie wiersze poleceń kodu G przenoszą drukarkę do rozsądnego stanu domyślnego.
Na przykład dysza może przejść do wstępnie zdefiniowanej pozycji, podgrzewacze gorącego końca i łóżka są wyłączone, a silniki są wyłączone, między innymi.
M107 ; turn fan off
G1 Z10 ; move nozzle away from print
M104 S0 ; turn hot end heating off
M140 S0 ; turn bed heating off
M84 ; turn motors off
Wejścia i wyjścia terminali

Do tej pory mówiliśmy tylko o wysyłaniu przez komputer poleceń G-code do drukarki (zwykle przesyłanych przez kartę SD). Nie jest to jednak jedyny sposób komunikacji.
Niektóre programy sterujące, takie jak Pronterface i OctoPrint , umożliwiają bezpośrednią komunikację z drukarką 3D, w którym to przypadku można ręcznie wprowadzać polecenia.
Z oczywistych względów nie byłoby praktyczne drukowanie czegokolwiek przez wysyłanie pojedynczych wierszy kodów. Ale czasami ta metoda komunikacji jest potrzebna do innych celów, takich jak pobieranie cennych informacji do kalibracji lub nawet wtedy, gdy drukarka 3D nie ma ekranu wyświetlacza.
Na przykład polecenie M105 „zgłoś temperatury” pobierze bieżące temperatury dyszy i stołu (które mogą być następnie wyświetlane przez coś takiego jak OctoPrint).
Ta komunikacja jest również bardzo przydatna do przeglądania i zmiany ustawień EEPROM, które są zakodowane na stałe na poziomie oprogramowania układowego. Parametry takie jak kroki silnika/mm, maksymalne prędkości posuwu lub PID można wizualizować za pomocą M503 („ustawienia raportu”), zmieniać ręcznie, a następnie zapisywać za pomocą M500 („zapisz ustawienia”).
Pisanie kodu G

Do tej pory powinieneś być w stanie znacznie lepiej czytać i rozumieć G-kod. Mimo to możesz również skorzystać z jego napisania.
Ta wizualizacja G-kodu online jest doskonałym narzędziem do testowania swoich umiejętności, ponieważ możesz pisać polecenia G-kodu i odpowiednio je symulować. To naprawdę świetna zabawa!
Spojrzenie na wyeksportowane pliki G-kodu z fragmentatorów powinno również dostarczyć pewnych informacji na temat działania G-kodu w przypadku drukowania 3D. Upewnij się, że masz przy sobie arkusz referencyjny poleceń i zapoznaj się z kodem!
Zgodność

Mamy nadzieję, że dzięki zrozumieniu poleceń G-kodów staniesz się bardziej kompetentnym i potężnym użytkownikiem drukowania 3D. Chociaż G-kod nie jest najbardziej złożonym językiem komputerowym, nadal wymaga dużo praktyki i nauki.
Zanim zakończymy ten artykuł, warto porozmawiać o kompatybilności G-code.
Istnieje wiele rodzajów oprogramowania do drukowania 3D, a każdy z nich może mieć inne „smaki” kodu G. Może to prowadzić do poważnych problemów ze zgodnością, ponieważ polecenia działające na jednym komputerze mogą nie działać na innym.
Oprogramowanie Slicer obsługuje to, przekazując kod przez sterowniki przetwarzania końcowego specyficzne dla maszyny. Postprocesor wykrywa smak przychodzącego kodu i konwertuje go na coś, co zrozumie oprogramowanie układowe.
Powiedziawszy to, mamy nadzieję, że spodobał Ci się ten krótki przewodnik. Udanego kodowania!
Więcej...
Kalibracja drukarki 3D: jak skalibrować drukarkę 3D
Poziomowanie stołu drukarki 3D: łatwy przewodnik krok po kroku
PrusaSlicer: Wszystko, co musisz wiedzieć