Sposób interpretacji Gcodu przed Marilna

drag0n69
Posty: 2
Rejestracja: 10 sty 2014, 1:01

Sposób interpretacji Gcodu przed Marilna

Postautor: drag0n69 » 11 lut 2017, 15:20

Witam,

szukam od jakiegoś czasu informacji o sposobie interpretacji Gcodu przez oprogramowanie drukarki (Marlina).

Interesuje mnie czy Gcod jest wczytywany w całości od razu do pamięci mikro-kontrolera? .....

Czy jest wczytywany linijka po linijce??

Następne nurtujące mnie pytanie to to czy wsp. XYZ są wczytywane pod jakieś zmienne? (jeśli tak to gdzie, pod jakimi nazwami zmiennych znajdę je w kodzie Marlina?).

W jaki sposób drukarka "wie" że kolejny krok jest "taki i taki" ?

Ps. Oczywiście chodzi mi o najnowszą wersje Marilna RC8 i układem RAMPS 1.4, próbowałem analizować kod i dojść do tego samemu, jednak każde podejście kończyło się fiaskiem :?

mgd4
Posty: 14
Rejestracja: 07 sty 2016, 21:37
Lokalizacja: Ozorków

Re: Sposób interpretacji Gcodu przed Marilna

Postautor: mgd4 » 12 lut 2017, 14:40

drag0n69 pisze:Interesuje mnie czy Gcod jest wczytywany w całości od razu do pamięci mikro-kontrolera? .....


Typowy mikrokontroler używany w sterowniku drukarki ma 4KB RAM a pliki G-code potrafią mieć po kilka, kilkanaście megabajtów. To chyba odpowiedź jest oczywista. Na pierwszy rzut oka wydaje się, że aktualnie wczytany kawałek znajduje się w zmiennej "command_queue".

drag0n69 pisze:Następne nurtujące mnie pytanie to to czy wsp. XYZ są wczytywane pod jakieś zmienne? (jeśli tak to gdzie, pod jakimi nazwami zmiennych znajdę je w kodzie Marlina?).

Pytasz o XYZ będące parametrami komendy? Zajrzyj do funkcji parse_next_command(). Tam wywoływane są "handlery" poszczególnych poleceń. Na przykład gcode_G0_G1().

drag0n69 pisze:W jaki sposób drukarka "wie" że kolejny krok jest "taki i taki" ?

Na poziomie ogólnym odpowiedź jest prosta: na podstawie różnicy między pozycją aktualną a pozycją, która ma zostać osiągnięta. Diabeł tkwi w szczegółach, ale ich wyjaśnienie przekracza ramy tego postu. Życzę zatem cierpliwości w dalszym zgłębianiu kodu Marlina.

Pozdrawiam,
Mariusz

Garreth
Posty: 413
Rejestracja: 25 sty 2016, 9:32
Lokalizacja: Śląsk
Kontaktowanie:

Re: Sposób interpretacji Gcodu przed Marilna

Postautor: Garreth » 12 lut 2017, 23:36

Wszystkie znane mi maja bufor komend (w marlin/repetier jego wielkosci jest ustawialna). Host stara sie wypelnic ten bufor w calosci, a planner w firmware teoretycznie powinien patrzec na nastepne komendy - marlin nawet sie chwali swoim look-ahead.

drag0n69
Posty: 2
Rejestracja: 10 sty 2014, 1:01

Re: Sposób interpretacji Gcodu przed Marilna

Postautor: drag0n69 » 13 lut 2017, 0:19

Typowy mikrokontroler używany w sterowniku drukarki ma 4KB RAM a pliki G-code potrafią mieć po kilka, kilkanaście megabajtów. To chyba odpowiedź jest oczywista. Na pierwszy rzut oka wydaje się, że aktualnie wczytany kawałek znajduje się w zmiennej "command_queue".

Na 90% tak właśnie myślałem, ale wolałem się upewnić na 100%

Pytasz o XYZ będące parametrami komendy? Zajrzyj do funkcji parse_next_command(). Tam wywoływane są "handlery" poszczególnych poleceń. Na przykład gcode_G0_G1().


Szukałem w kodzie i nie znalazłem "parse_next_command()".
Interesują mnie zmienne przechowujące wartość wsp. która ma zostać osiągnięta np.
Głowica znajduje się w pozycji X0 Y0 Z0 i teraz dostaje polecenie (gcod) na przejazd na pozycję G0/G1 X100 Y0 Z0 -> (Xa Yb Zc). Szukam zmiennych a,b,c które zawierają poszczególne wartości.
Czy to nie będą przypadkiem zmienne: current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS] ??

mgd4
Posty: 14
Rejestracja: 07 sty 2016, 21:37
Lokalizacja: Ozorków

Re: Sposób interpretacji Gcodu przed Marilna

Postautor: mgd4 » 13 lut 2017, 10:59

Przekręciłem nazwę przy przepisywaniu. Powinno być: process_next_command().
W momencie interpretacji komendy G-code, "curent_position" to pozycja aktualna. Pozycja docelowa jest w "destination".


Wróć do „Marlin Firmware”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość