MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.17k stars 19.21k forks source link

[BUG] G0 / G1 suddenly treat Z as relative #22097

Closed arielito-ear closed 2 years ago

arielito-ear commented 3 years ago

Did you test the latest bugfix-2.0.x code?

Yes, and the problem still exists.

Bug Description

I have not been able to identify well when it happens, but suddenly when sending G0 or G1 commands, it interprets the position in Z as relative. For example, if I am at Z = 100 and I execute G1 Z1, instead of going to Z = 1 it goes to Z = 101, I execute G0 Z10, instead of going to Z = 10 it makes Z = Z + 1. This happens suddenly. It happened to me several times, I don't remember if they were all while trying to calibrate the bed with G33, G29, G49, M421 commands. I do not remember either if every time I spend using the repeater host, or if I also spend moving from the LCD. It is a difficult error to reproduce, since I have not yet found how to do it. If I turn off the printer and turn it back on it works fine, until at some point the problem recurs.

Bug Timeline

2.0.8.2

Expected behavior

1) Maintains the absolute position movement 2) Go to the absolute position.

Actual behavior

1) Suddenly the printer change its behavior and interpret G0 Znnn and G1 Znnn as relative position.

Steps to Reproduce

I dont, know yet how reproduce this behavior. But i think may be the bug was introducced in 2.0.8.2 with the new option to G0 and G1 command for laser. (But I'm not sure about that, I have many doubts, version 2.0.8.2 seems to be full of bugs)

Version of Marlin Firmware

2.0.8.2

Printer model

Generic Delta

Electronics

SKR 1.3, TMC2209, Dual Nozzle Extruder, 1 sensor filament attached to the first extruder, TMC 2209, TFT35 (Al BigTreeTech)

Add-ons

No response

Your Slicer

Cura

Host Software

Repetier Host

Additional information & file uploads

Config.zip

arielito-ear commented 3 years ago

Hi, i can reproduce the bug, but I don't know how to get log in this case: 1) Start the printer. 2) (With Repetier Host), G28 3) (With Repetier Host), G1 Z10 4) Now, go to the display (In my case a BigTreeTech TFT35 V3.0), select "move" option, and do some move in X and Y axis. 5) (With Repetier Host), G28 6) (With Repetier Host), G1 Z10 7) Now instead of move to Z=10 (Absolute move), the command do Z=Z+10 (Relative move),

If i run M111 S247, its imposible to get information form the display, because in the first touch, starts to display a lot of messages, many of them are G90, (Thats its OK because G90 set the absolute positioning), so i don´t know how to get debug info from the display.

DerAndere1 commented 3 years ago

Thanks for the report. To exclude an error in G28, can you test if the following work-around results in absolute movement at step 7?

  1. Start the printer.
  2. (With Repetier Host), G28
  3. (With Repetier Host), G1 Z10
  4. Now, go to the display (In my case a BigTreeTech TFT35 V3.0), select "move" option, and do some move in X and Y axis.
  5. (With Repetier Host), G90
  6. (With Repetier Host), G28
  7. (With Repetier Host), G1 Z10
arielito-ear commented 3 years ago

Hi, a new problem...
When I do this:

  1. Start the printer.
  2. (With Repetier Host), G28
  3. (With Repetier Host), G1 Z10
  4. Now, go to the display (In my case a BigTreeTech TFT35 V3.0), select "move" option, and do some move in X and Y axis.
  5. (With Repetier Host), G90
  6. (With Repetier Host), G28
  7. (With Repetier Host), G1 Z10 Result: Z=10 (Its OK), but if i go to the display and do some movements in X or Y, its only accepts press each buttons only one time in the same direction.

Example: Once i have reach the step 7 (Z=10), i go to the display (the distance for axis movements is 1mm, as shows in the displays), and I pess +X , the nozzle move +1mm in X, if i press again +X, nothing happends, if i press -X then it moves -1mm, if I press -X again nothing happends, but if I press +X, then it moves +1mm, but never go beyond the -1mm and +1mm in X. The same with the Y axis. At first its look it was an square on (-1,1) to (+1,1). But if i change the axis movements distance in the screen to 10mm, so the square has its bounds in (-10,-10) and (+10,+10), if a change again the distance to 0.1mm the bounds change to (-0.1, -0.1) to (+0.1,+0.1). If I move the nozzcle with repetier host, it moves OK. If after thats I return to the display, the limitation to movements continues.

I played some time, and after touch the display, also affects the Z axis.

Apparently it you move the nozzle using the display, it affects the correct functioning of the movement commands (I don't know if other commands are also affected)

DerAndere1 commented 3 years ago

I think the bug is in the display code. The move command from the display should work as follows:

  1. save last mode (relative or absolute)
  2. set to relative mode
  3. move axes
  4. restore last mode
thinkyhead commented 3 years ago

@DerAndere1 — What are you up to? Movement from the LCD doesn't use G-code so there is no changing to relative mode. It simply goes to the new position.

thinkyhead commented 3 years ago

@arielito-ear — Please try a different host software, or just a dumb serial terminal. Repetier Host is known to try and be too clever sometimes.

thinkyhead commented 3 years ago

Please test the bugfix-2.0.x branch to see where it stands. If the problem has been resolved then we can close this issue. If the issue isn't resolved yet, then we should investigate further.

github-actions[bot] commented 2 years ago

This issue has had no activity in the last 60 days. Please add a reply if you want to keep this issue active, otherwise it will be automatically closed within 10 days.

github-actions[bot] commented 2 years ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.