G10 Z offset ignored for second tool ?
-
Hi,
I have a delta printer with 2 print heads (latest firmware, 3.1.1 ).
This is defined like this:
; Tools
M563 P0 D0 H1 F0 ; define tool 0
G10 P0 X5 Y-4.5 Z0 ; set tool 0 axis offsets
G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C
M563 P1 D1 H2 F0 ; define tool 1
G10 P1 X5 Y4.5 Z5 ; set tool 1 axis offsets 0.4 -> 0.48 -> -
G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0Cwith tool 1, it doesn't seem to matter if I enter Z5, Z50 of Z0,it will just print at the same height as with tool 0, the other offsets (x and y do seem to work)
What is weird to me is that the display does say that the current z height is 5 or 50 while the print head is not.
doing baby steps to get it up works, but then it's wrong for tool 0.What is the way this should be done ? The head swivels so one is in the air while the other one is active.
thx for your time
-
Can you post the rest of your config.g and any tool change files you have?
-
I've noticed some odd behaviour in regards to G10 Z offset on a cartesian IDEX printer running 2.05.1.
This is what I wrote about it in my notes:
Tool Z offset acts funny when manually moving the tools around. Without the Z axis moving, the Z position can change a lot. The behaviour seems to almost correspond with the Z offset, but then sometimes the offset is suddenly reversed for the tools. This does not seem to affect actual operation, but the display in DWC at least. It's possible that Z offset for a tool is not applied until the Z axis is commanded to a new position. This could be problematic if the tool change happens to all take place at "the same Z" according to the slicer, and the tool offset may never be applied if a Z move is not commanded before resuming the print.
It does seem to me that offsets are not applied until a G1 Z move is commanded to change the height. Is this happening in your prints or is the Z axis not commanded to a new height after tool changes?
-
The config.g file :
; General preferences
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M550 P"dualKossel" ; set printer name
M665 R170.5 L360.27 B145 H368 ; Set delta radius, diagonal rod length, printable radius and homed height
M666 X0 Y0 Z0 ; put your endstop adjustments here, or let auto calibration find them; Network
M552 P0.0.0.0 S1 ; enable network and acquire dynamic address via DHCP
M586 P0 S1 ; enable HTTP
M586 P1 S0 ; disable FTP
M586 P2 S0 ; disable Telnet; Drives
M569 P0 S0 ; physical drive 0 goes forwards <- back
M569 P1 S0 ; physical drive 1 goes forwards <- back
M569 P2 S0 ; physical drive 2 goes forwards <- back
M569 P3 S0 ; physical drive 3 goes forwards <- back
M569 P4 S0 ; physical drive 4 goes forwards <- back, was 9 ?
M584 X0 Y1 Z2 E3:4 ; set drive mapping
M350 X16 Y16 Z16 E16:16 I1 ; configure microstepping with interpolationM92 X200.00 Y200.00 Z200.00 E418.00:418.00 ; set steps per mm
M566 X1200.00 Y1200.00 Z1200.00 E1200.00:1200.00 ; set maximum instantaneous speed changes (mm/min)
M203 X18000.00 Y18000.00 Z18000.00 E1200.00:1200.00 ; set maximum speeds (mm/min)
M201 X1000.00 Y1000.00 Z1000.00 E1000.00:1000.00 ; set accelerations (mm/s^2)
M906 X1680 Y1680 Z1680 E800:800 I30 ; set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout; Axis Limits
M208 Z0 S1 ; set minimum Z; Endstops
M574 X2 S1 P"xstop" ; configure active-high endstop for high end on X via pin xstop
M574 Y2 S1 P"ystop" ; configure active-high endstop for high end on Y via pin ystop
M574 Z2 S1 P"zstop" ; configure active-high endstop for high end on Z via pin zstop; Z-Probe
M558 P5 C"!zprobe.in" H5 F120 T6000 ; set Z probe type to switch and the dive height + speeds
;M558 H5 ;*** Remove this line after delta calibration has been done and new delta parameters have been saved
G31 P500 X0 Y50 Z0.72 ; set Z probe trigger value, offset and trigger height, was Z2, 0.5-0.06=0.44 -> 0.74 -> 0.72
M557 R85 S20 ; define mesh grid; Heaters
M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin bedtemp
M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0
M307 H0 B1 S1.00 ; enable bang-bang mode for the bed heater and set PWM limit
M140 H0 ; map heated bed to heater 0
M143 H0 S120 ; set temperature limit for heater 0 to 120C
M308 S1 P"spi.cs1" Y"rtd-max31865" ; configure sensor 1 as thermocouple via CS pin spi.cs1
M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1
M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit
M143 H1 S320 ; set temperature limit for heater 1 to 320C
M308 S2 P"spi.cs2" Y"rtd-max31865" ; configure sensor 2 as thermocouple via CS pin spi.cs2
M950 H2 C"e1heat" T2 ; create nozzle heater output on e1heat and map it to sensor 2
M307 H2 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit
M143 H2 S320 ; set temperature limit for heater 2 to 320C; Fans
M950 F0 C"fan0" Q500M950 F1 C"fan1" Q500 ; create fan 0 on pin fan0 and set its frequency
M106 P1 S1 H1 T60 ; set fan 0 value. Thermostatic control is turned onM950 F2 C"fan2" Q500 ; create fan 1 on pin fan1 and set its frequency
M106 P2 S1 H2 T60 ; set fan 1 value. Thermostatic control is turned on; Tools
M563 P0 D0 H1 F0 ; define tool 0
G10 P0 X5 Y-4.5 Z0 ; set tool 0 axis offsets
G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C
M563 P1 D1 H2 F0 ; define tool 1
G10 P1 X5 Y4.5 Z5 ; set tool 1 axis offsets 0.4 -> 0.48 -> -
G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C; define output for tool switch
M950 P0 C"!exp.heater3"; Custom settings are not defined
M501
; Miscellaneous
M575 P1 S1 B57600 ; enable support for PanelDuetpre0.g:
M42 P0 S0tpre1.g:
M42 P0 S1 -
@bot
the gcode is like this (kissslicer):
; *** Selecting and Warming Extruder 2 to 250 C ***
; Head to the start of the next path
G1 X-1.400 Y0.000 F6000
G4 P0
; Select the Tool (extruder)
T1
; Correct position for multi-nozzle
G1 X-1.400 Y0.000 F6000
G4 P0
; Set temp and then wait
M104 S250
M109 S250
; PURGE OR PRIME HERE IF DESIRED
;
;
; PREHEAT time 93.750000
; PREHEAT subtracting full 93.750000
;
; 'Prime Pillar Path', 0.5 [feed mm/s], 20.0 [head mm/s]
G1 X-1.4 Y0 Z0.15 E0 F9000
G1 X-1.4 Y0 Z0.1 E0 F300My knowledge of gcode isn't great but from what I understand there are G1 Z commands after the toolchange, also, shouldn't babysteps then jump the offset at the first babystep (it just moves the amount it says an the button, not that amount + the offset).
Is setting the offsets like I did correct, or is there a better way to work with dual nozzle setups ?
-
Can you post an excerpt of the print G-code file that shows a tool change, including a little bit before and a little bit after?
-
@bot
The gcode file above is already that, it starts printing with tool 1 (the second one) and it starts wrong.
Switching back to tool 0 is:
;
; *** Cooling Extruder 2 to 230 C ***
; Same extruder, about to deselect, maybe retract before cooling down
; RETRACT HERE IF YOU WANT
G4 P0
M104 S230
;
;
; *** Selecting and Warming Extruder 1 to 250 C ***
; Head to the start of the next path
G1 X3.100 Y0.000 F6000
G4 P0
; Select the Tool (extruder)
T0
; Correct position for multi-nozzle
G1 X3.100 Y0.000 F6000
G4 P0
; Set temp and then wait
M104 S250
M109 S250 -
Is there a workaround ?
If I use relative positioning can't I just put the offset in the tool change script and move the head a bit up or down as needed ?
This would be a problem if a tool select is executed twice, no idea if the firmware detects that and doesn't run the script ? -
I think I got it working , I made a couple of wrong assumptions, most importantly offset Z needs to be -0.2 is the second head is 0.2mm higher.
thx for your help