Quantcast
Channel: Reprap Forum - Firmware - Marlin
Viewing all articles
Browse latest Browse all 2831

M218 Z-Offset without DualCarriage or SwitchingExtruder (no replies)

$
0
0
Hello!
My multi-extruder printer can switch complete toolheads automaticly. They are clipped on with magnets and can be interchanged by moving to a certain position.
That way, the height of the hotends is not autimaticly equal, therefore I need offsets between the tools.
If I got it right, there are two functions that can do this in theory.
1. M206 sets global offsets, which I could change on every tool change with simplify3d. Thats the solution I had for the last 2 months, but now I want to be able to use M206 in post processing, so it doesn't work out anymore.
2. M218 sets individual toolhead offsets, but i can only get x and y working.

Now, that I already invested a full day into troubleshooting, I decided to ask here.
How do i get z-Offset in M218 to work without activating "Dual_x_Carriage" or "Switching_Extruder"?

This is the original code from the current release concerning M218 (found in marlin_main.cpp)
#if EXTRUDERS > 1
    case 218: // M218 - set hotend offset (in mm), T X Y
    {
      if(setTargetedHotend(218)){
        break;
      }
      if(code_seen('X'))
      {
        extruder_offset[X_AXIS][tmp_extruder] = code_value();
      }
      if(code_seen('Y'))
      {
        extruder_offset[Y_AXIS][tmp_extruder] = code_value();
      }
      #ifdef DUAL_X_CARRIAGE
      if(code_seen('Z'))
      {
        extruder_offset[Z_AXIS][tmp_extruder] = code_value();
      }
      #endif       
      SERIAL_ECHO_START;
      SERIAL_ECHOPGM(MSG_HOTEND_OFFSET);
      for(tmp_extruder = 0; tmp_extruder < EXTRUDERS; tmp_extruder++)
      {
         SERIAL_ECHO(" ");
         SERIAL_ECHO(extruder_offset[X_AXIS][tmp_extruder]);
         SERIAL_ECHO(",");
         SERIAL_ECHO(extruder_offset[Y_AXIS][tmp_extruder]);
      #ifdef DUAL_X_CARRIAGE
         SERIAL_ECHO(",");
         SERIAL_ECHO(extruder_offset[Z_AXIS][tmp_extruder]);
      #endif
      }
      SERIAL_ECHOLN("");
    }break;
#endif

My first instinct was to delete two occurrences of " #ifdef DUAL_X_CARRIAGE" and the following "#endif".
But it doesn't change the behaviour.

I validate if it worked by sending "M218 X10 Y10 Z10" followed by "T0" or "T1". Only X and Y move that way (with the carriage beeing in a positinon where movement in every direction is possible).
I also searched for the offset variables and looked for differences between X, Y and Z, but I just can't figure out the solution.

Maybe someone of you has already encountered this or a similar problem.
Thanks in advance!
Leo

Viewing all articles
Browse latest Browse all 2831

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>