Chiron+Duet3+BlTouch
-
I had the same heightmap offset problem a couple of days ago. The documentation is a bit ambiguous. I seem to have solved the problem by doing this in the calibration run (I use a macro).
; Heat Bed and Hotend - Home and Calibrate T0 ;make sure the tool is selected G90 ; use absolute coordinates M83 ; extruder relative mode M117 "Setting Calibration Temperatures" <snip> M290 R0 S0 ;remove any babysteps M561 ; reset any bed compensation M117 "Performing Mesh Calibration" G28 ; must be homed first G30 ; Perform a single probe to establish Z=0 (should already be at center because of home) G29 S0 ; perform mesh calibration save and load
I did a reboot at this point but am not sure if it's at all required.
Then this at the start of the print job
T0 ; turn on the tool M561 ; Remove any Bed Compensation G90 ; use absolute coordinates M83 ; extruder relative mode <snip> G28 ; home all G30 ; probe bed just to make sure G29 S1 ; enable mesh leveling <snip>
I suspect there may be redundancy in my codes but .....
-
That's something I was thinking that there is some residue code that can't be seen on files and messing everything. think I will just save the config and make a new sd card and see how the things are working. ...after I will try your code.
-
@razrudy said in Chiron+Duet3+BlTouch:
Maybe this happens because I have flexible couplers on the Z ?
That could be part of it.
@Phaedrux said in Chiron+Duet3+BlTouch:
G31 P25 X41.13 Y2.69 Z1.543
You forgot to change it to G31 P25
@razrudy said in Chiron+Duet3+BlTouch:
03/01/2021, 15:21:33: : Warning: the height map has a substantial Z offset. Suggest use Z-probe to establish Z=0 datum, then re-probe the mesh.
This would indicate that you're not setting Z0 correctly before running G29 to create a mesh.
When you're doing G92 Z0 you've moved the nozzle to touch the bed first, right?
The inconsistency could certainly be from movement in the Z axis couplers.
-
@stuartofmt said in Chiron+Duet3+BlTouch:
I had the same heightmap offset problem a couple of days ago. The documentation is a bit ambiguous. I seem to have solved the problem by doing this in the calibration run (I use a macro).
; Heat Bed and Hotend - Home and Calibrate T0 ;make sure the tool is selected G90 ; use absolute coordinates M83 ; extruder relative mode M117 "Setting Calibration Temperatures" <snip> M290 R0 S0 ;remove any babysteps M561 ; reset any bed compensation M117 "Performing Mesh Calibration" G28 ; must be homed first G30 ; Perform a single probe to establish Z=0 (should already be at center because of home) G29 S0 ; perform mesh calibration save and load
@stuartofmt this also worked for me..at least visual is now back in the right place...I will run a print and see how it goes. And now I have the home point at Z0.0
-
@Phaedrux said in Chiron+Duet3+BlTouch:
@Phaedrux said in Chiron+Duet3+BlTouch:
G31 P25 X41.13 Y2.69 Z1.543
You forgot to change it to G31 P25
how did I miss that?
@razrudy said in Chiron+Duet3+BlTouch:
03/01/2021, 15:21:33: : Warning: the height map has a substantial Z offset. Suggest use Z-probe to establish Z=0 datum, then re-probe the mesh.
This would indicate that you're not setting Z0 correctly before running G29 to create a mesh.
When you're doing G92 Z0 you've moved the nozzle to touch the bed first, right?
I am following the guide on dozuki
Cancel any currently active mesh compensation with M561 Use the X and Y jog buttons to position the nozzle over the centre of the bed Jog the nozzle down until it is just touching the bed or just gripping a sheet of paper. If the firmware doesn't let you jog it down far enough, send M564 S0 to disable axis limits. Once you have the nozzle touching the bed, send command G92 Z0 to tell the firmware that the head is at Z=0 Jog the head up by 5 to 10mm Send command G30 S-1. The nozzle will descend or the bed rise until the probe triggers and the Z height at which the probe stopped will be reported. If you are using a nozzle-contact Z probe, the trigger height will be slightly negative. For any other type of Z probe where the probe triggers before the nozzle contacts the bed, it will be positive. Repeat from step 5 two or three times to make sure that the trigger height is consistent. In Duet Web Control, go to Settings -> System Editor and edit the config.g file. Set the Z parameter in the G31 command to the trigger height that was reported. Save the file. Open config-override.g and check that there are no G31 commands in it. If you find any, delete those lines and save the file. To apply the new trigger height, restart the Duet by sending M999 or pressing Emergency Stop.
The only difference is that I point the probe to the middle of the bed not the nozzle.
M561
Probe pin to centre of the bed
Lower nozzle to touch the bed( paper method)
G92 Z0
G1 Z10
G30 S-1 -
@razrudy said in Chiron+Duet3+BlTouch:
G28 ; must be homed first G30 ; Perform a single probe to establish Z=0 (should already be at center because of home)
This is a pretty ambiguous combination because we can't see what the homeall is doing to home the Z axis, and we have no idea what XY location the G30 is being done in.
The important thing to remember is that the Z0 position is set in the same XY position whenever you set it. Your homeall, homez, and any other time you use G30 must be in the same position before and after G29 is used to create or load the height map. This is because the shape of the bed may give you a different z height depending on the XY location.
-
In my case homeall.g looks like this (homez sets to the same position) ... But I think you also answered one of the ambiguities in the documentation i.e. what coordinate (XY) is the bed height relative to. Seems the answer is "Wherever you set your Z-home"? EDIT: which needs be the same as your Z=0 datum.?
G91 ; relative mode G0 H2 Z10 F200 ; raise head above Z probe trigger height G0 H1 X-240 Y-240 F3000 ; move up to 240mm in the -X and -Y directions until the homing switches are triggered G0 H2 X5 Y5 F600; move slowly 5mm in +X and +Y directions G0 H1 X-10 Y-10 ; move up to 10mm in the -X and -Y directions until the homing switches are triggered G90 ; back to absolute mode G1 X110 Y110 F2000 ; put head over the center of the bed, or wherever you want to probe G30 ; lower head, stop when probe triggered and set Z to trigger height
-
Yes I made sure that every mesh starts from the same point....
Looking at the DWC now before I run this macro my home position was X-12 and Y-14 instead of the real X-6 Y-7 so I had something doubled in my steps. Now everything is normal only by running that macro.
I suspect there was something related to baby steps but I never went more then 3mm up/down during printing and it's just strange how it was exactly double compared with the original values.
Also tried to manually delete the heightmap , any mesh level maps I had saved and using G29 S2 with no resultNow I am trying to figure out how I can do a mesh level starting from the centre of the bed instead of the home position because my centre bed is the lowest point.
G28
M98 P"move_probe_center _bed.g"
G29 S0
will work or how it will be the best?
Making specific points for probing on the bed.g will work?Thinking that the lowest point will be under Z0 and I may not get the nozzle down enough...or it will compensate below Z0?
-
I am back on the same situation....tried to do a print and there was no mesh compensation applied. after I cancelled the print I did a G29 and my height map is back "in air" with ~1mm......time to reset everything and start from scratch
-
Maybe reshare all your gcode files including start gcode
-
........and now my home position is again at Z-12 Y-16 instead of X-6 Y-7 but visual is where it should be.
I have no idea why this is happening......I will keep the same config for couple more days maybe there is a bug or something.......; bed.g ; called to perform automatic bed compensation via G32 M561 ; clear any bed transform G29 ; probe the bed and enable compensation ;G30 P0 X42 Y0 Z-99999 ; probe near a leadscrew ;G30 P1 X358 Y0 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors ; config-override.g file generated in response to M500 at 2020-12-31 13:29 ;nothing on here ; Configuration file for Duet 3 (firmware version 3) ; Configuration for Chiron+Titan Aero+Volcano+BlTouch+ SBC Pi4 ; executed by the firmware on start-up ; General preferences G21 ; works in mm G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Chiron" ; set printer name ; Drives M569 P0.0 S1 ; physical drive 0.0 goes forwards X M569 P0.1 S0 ; physical drive 0.1 goes backwards Y M569 P0.2 S0 ; physical drive 0.2 goes bacwards ZL M569 P0.3 S0 ; physical drive 0.3 goes backwards ZR M569 P0.4 S1 D2 ; physical drive 0.4 goes forwards E M584 X0 Y1 Z2:3 E4 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X80 Y100 Z400 E407.5 ; set steps per mm M566 X1200 Y1200 Z12 E120 ; set maximum instantaneous speed changes (mm/min) M203 X9000 Y9000 Z180 E1200 ; set maximum speeds (mm/min) M201 X1000 Y800 Z250 E250 ; set accelerations (mm/s^2) M906 X1100 Y1100 Z1100 E1100 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X-6.0 Y-9.0 Z-20 S1 ; set axis minima M208 X400 Y400 Z445 S0 ; set axis maxima-need to remeasure this M671 X-40:440 Y200:200 ; leadscrews position at right and left of the X axis ; Endstops M574 X1 S1 P"!io0.in" ; configure active-high endstop for low end on X via pin io0.in M574 Y1 S1 P"!io1.in" ; configure active-high endstop for low end on Y via pin io1.in ;M574 Z1 S1 P"io2.in+io3.in" ; configure active-high endstop for low end on Z via pin-for original endstop's M574 Z1 S2 ; endstop set to z-probe ;Stall Detection ;M915 P0 S-5 F0 H200 R0 ; P=drive motor , S= sensitivite , H=motorstep/sec ( check home file) ; Z-Probe M950 S0 C"io5.out" ; create servo pin 0 for BLTouch M558 P9 C"^io5.in" H5 F60 T6000 R0.2 A10 ; set Z probe type to bltouch and the dive height + speeds G31 P25 X41.13 Y2.69 Z0 ; set Z probe trigger value, offset and trigger height M557 X42:380 Y0:400 P3 ; define mesh grid ; Piezo Z-probe ;M558 P8 C"io5.in" I1 R0.4 F300 X0 Y0 Z1 ;new piezo ;G31 X0 Y0 Z-0.1 P100 ;new piezo ; Heaters M308 S0 P"temp0" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0 M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0 M307 H0 A110.3 C842.7 D1.1 S0.5 V23.8 B0 ; disable 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"temp1" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin temp1 M950 H1 C"out1" T1 ; create nozzle heater output on out1 and map it to sensor 1 M307 H1 A373.1 C420.1 D3.0 S0.5 V24.1 B0 ; disable bang-bang mode for heater and set PWM limit M143 H1 S285 ; set temperature limit for heater 1 to 285C ; Fans M950 F0 C"out4" Q25000 ; create fan 0 on pin out4 and set its frequency M106 P0 S0 H1 T45 ; set fan 0 value. Thermostatic control is turned on M950 F1 C"out5" Q25000 ; create fan 1 on pin out5 and set its frequency M106 P1 S0 H1 T45 ; set fan 1 value. Thermostatic control is turned on M950 F2 C"out7" Q25000 ; create fan 2 on pin out7 and set its frequency M106 P2 S0 H-1 ; set fan 2 value. Thermostatic control is turned off ;M950 F3 C"out8" Q500 ; create fan 3 on pin out8 and set its frequency ;M106 P3 S0 H-1 ; set fan 3 value. Thermostatic control is turned off ; Tools M563 P0 D0 H1 F0:2 ; define tool 0 G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C ; homeall.g ; called to home all axes G91 ; relative positioning G1 H2 Z10 F6000 ; lift Z 10mm relative to current positio M280 P0 S90 ; retract probe pin , just in case it is deployed after emergency stop ; first move/home Y axis G1 H1 Y-415 F1800 ; move quickly to Y axis endstops and stop there G91 ; relative positioning P4 P500 ; wait 500ms G1 Y5 F6000 ; go back 5mm G4 P500 ; wait 500ms G1 H1 Y-415 F360 ; move slowly to Y axis endstop once more (second pass) G4 P500 ; wait 500ms ;second move/home X axis G1 H1 X-405 F1800 ; move quickly to X axis endstops and stop there G91 ; relative positioning G4 P500 ; wait 500ms G1 X5 F1800 ; go back 5mm G4 P500 ; wait 500ms G1 H1 X-405 F360 ; move slowly to X axis endstop once more (second pass) G4 P500 ; wait 500ms ;third move/home Z axis G30 H1 Z-455 F360 ; move Z down stopping at the endstop -for BLT ;G1 H1 Z-455 F360 ; move Z down stopping at the endstop -for original enstops G91 ; relative positioning G4 P500 ; wait 500ms ;G1 Z5 F100 ; lift Z relative to current position 5mm G90 ; absolute positioning ;G92 Z5 ; set Z position to axis minimum (you may want to adjust this) ; homex.g ;For stall detection/sensorless homing ;M201 X500 ; lower motor ascceleration to 500mm/m ;G91 ; relative positioning ;G1 H2 X0.5 F10000 ; energise motor ;M400 ; wait to make sure every command has been executed ;G4 P100 ; wait 1ms ;M913 X50 ; reduce motor current to half G91 ; relative positioning G1 Z5 F6000 ; lift Z relative to current position G90 ; absolute positioning G1 H1 X-405 F1800 ; move quickly to X axis endstop and stop there (first pass) G91 ; relative positioning G4 P500 ; wait 500ms G1 X5 F1800 ; go back 5mm G4 P500 ; wait 500ms G1 H1 X-405 F360 ; move slowly to X axis endstop once more (second pass) G4 P500 ; wait 500ms G1 H2 Z-5 F6000 ; lower Z again G90 ; absolute positioning ;For stall detection/sensorless homing ;M400 ;G4 P100 ;M913 X100 ; motor current back to initial ;M210 X1000 ; motor acceleration back to initial ; homey.g G91 ; relative positioning G1 Z5 F6000 ; lift Z relative to current position G90 ; absolute positioning G1 H1 Y-415 F1800 ; move quickly to Y axis endstop and stop there (first pass) G91 ; relative positioning P4 P500 ; wait 500ms G1 H2 Y5 F6000 ; go back a few mm G4 P500 ; wait 500ms G1 H1 Y-415 F360 ; move slowly to Y axis endstop once more (second pass) G1 H2 Z-5 F6000 ; lower Z again G90 ; absolute positioning ; homez.g G91 ; relative positioning G1 H2 Z5 F6000 ; lift Z relative to current position G90 ; absolute positioning G30 H1 Z-455 F1800 ; move Z down until the endstop is triggered-for BLT ;G1 H1 Z-455 F1800 ; move Z down until the endstop is triggered - for original endstops ;G91 ; relative positioning ;G4 P500 ; wait 500ms ;G1 Z5 F100 ; lift Z 5mm relative to current position ;G90 ; absolute positioning ;G92 Z5 ; set Z position to axis minimum (you may want to adjust this) +5mm ; Custom settings are not defined ; Miscellaneous ;M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss ;M564 H0 ; moving axes before/without homing ;M591 P1 C"io4.in" S1 D0 ; filament run out sensor - work in progress ; deployprobe.g ; called to deploy a physical Z probe ; ; generated by RepRapFirmware Configuration Tool v3.1.10 on Wed Dec 16 2020 15:18:40 GMT+0000 (Greenwich Mean Time) M280 P0 S10 ; deploy BLTouch ; retractprobe.g ; called to retract a physical Z probe ; ; generated by RepRapFirmware Configuration Tool v3.1.10 on Wed Dec 16 2020 15:18:40 GMT+0000 (Greenwich Mean Time) M280 P0 S90 ; retract BLTouch M98 P"homeall.g" ; run home all command G30 P0 X42 Y0 Z-99999 ; probe near a leadscrew , the left one G30 P1 X400 Y0 Z-99999 S2 ; probe near oposite leadscrew and calibrate 2 motors ; stop.g ; called when M0 (Stop) is run (e.g. when a print from SD card is cancelled) ; ; generated by RepRapFirmware Configuration Tool v3.1.10 on Wed Dec 16 2020 15:18:41 GMT+0000 (Greenwich Mean Time) M83 ; relative extruder moves G1 E-10 F3600 ; retract 10mm of filament G91 ; relative positioning G1 Z5 F360 ; lift Z by 5mm G90 ; absolute positioning G1 X0 Y405 F6000 ; go to X=0 Y=405
Hope I didn't forget something
-
There are some problems in there. I'll reply again when I'm back at my PC later.
-
It's a bit hard to tell from your copy and paste which files are which. It looks like the homing files got pasted into the config.g portion? And that all might be in the middle of bed.g?
M98 P"homeall.g" ; run home all command G30 P0 X42 Y0 Z-99999 ; probe near a leadscrew , the left one G30 P1 X400 Y0 Z-99999 S2 ; probe near oposite leadscrew and calibrate 2 motors
Where is that from?
In homeall.g don't use M280 P0 S90 to retract the pin. Use M402 instead. That way the firmware is made aware of the pin retraction.
Also in homeall and homez,
G30 H1 Z-455 F360
is not a valid way to use G30. It's just G30 by itself. The speed is set by the M558 command in your config.g. The H1 etc etc will be ignored probably. -
@Phaedrux said in Chiron+Duet3+BlTouch:
It's a bit hard to tell from your copy and paste which files are which. It looks like the homing files got pasted into the config.g portion? And that all might be in the middle of bed.g?
M98 P"homeall.g" ; run home all command G30 P0 X42 Y0 Z-99999 ; probe near a leadscrew , the left one G30 P1 X400 Y0 Z-99999 S2 ; probe near oposite leadscrew and calibrate 2 motors
Where is that from?
This is just a macro I am using to home all and level the gantry. My plan is/was to use this and after that to run G32 or just a single probe and load height map. I level the bed with the stock endstops because I know they are in the same spot always and to make sure the things are as square as possible. After I am doing this I disable the stock end stops and use only the BLT......because the stock endstops are about 7-9mm above bed surface...still trying to figure out how can I use them always and use the BLT only for mesh compensation
In homeall.g don't use M280 P0 S90 to retract the pin. Use M402 instead. That way the firmware is made aware of the pin retraction.
Ok I will change this.....
Also in homeall and homez,
G30 H1 Z-455 F360
is not a valid way to use G30. It's just G30 by itself. The speed is set by the M558 command in your config.g. The H1 etc etc will be ignored probably.Yes everything is ignored after G30....just copied the normal end stops and changed G1 to G30
bed.g
config.g
config-override.g
deployprobe.g
homeall.g
homex.g
homey.g
homez.g
level_gantry.g
pause.g
resume.g
retractprobe.g
sleep.g stop.g -
This post is deleted! -
In homex: The G1 Z5 should have H2, otherwise it will complain if Z isn't homed first. Also remove the G90 and second G91. You just need to be in relative mode for those moves. Also, if you're using stall detection on X and Y, it's pointless to do a back off and second homing pass. A single fast homing pass is all you need.
;homex.g G91 ; relative positioning G1 Z5 F6000 ; lift Z relative to current position G90 ; absolute positioning G1 H1 X-405 F1800 ; move quickly to X axis endstop and stop there (first pass) G91 ; relative positioning
In homeY the same thing goes for the G1 Z5 move needing H2. And the removal of the G90 and second G91 for the same reason. Also here if you are using stall detection, only ne pass is needed. If you are using an endstop switch, then the back off move should NOT have H2.
;homey.g G91 ; relative positioning G1 Z5 F6000 ; lift Z relative to current position G90 ; absolute positioning G1 H1 Y-415 F1800 ; move quickly to Y axis endstop and stop there (first pass) G91 ; relative positioning P4 P500 ; wait 500ms G1 H2 Y5 F6000 ; go back a few mm G4 P500 ; wait 500ms G1 H1 Y-415 F360 ; move slowly to Y axis endstop once more (second pass) G1 H2 Z-5 F6000 ; lower Z again G90 ; absolute positioning
In your homeall and homez you should be positioning your probe at the center of the bed before sending G30.
You don't need all of the G4 pause commands in there either.
Your bed.g and level gantry macro could be the same thing. And I would leave G29 as a separate command rather than using it in G32 (bed.g)
; bed.g ; called to perform automatic bed compensation via G32 M561 ; clear any bed transform G28 ; home all G30 P0 X42 Y0 Z-99999 ; probe near a leadscrew G30 P1 X358 Y0 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors G28 Z ; home z again to reset Z0
; homeall.g ; called to home all axes G91 ; relative positioning G1 H2 Z10 F6000 ; lift Z 10mm relative to current positio M402 ; retrack probe in case it's deployed ; first move/home Y axis G1 H1 Y-415 F1800 ; move quickly to Y axis endstops and stop there G1 Y5 F6000 ; go back 5mm G1 H1 Y-415 F360 ; move slowly to Y axis endstop once more (second pass) ;second move/home X axis G1 H1 X-405 F1800 ; move quickly to X axis endstops and stop there G1 X5 F1800 ; go back 5mm G1 H1 X-405 F360 ; move slowly to X axis endstop once more (second pass) ;third move/home Z axis G90 ; absolute positioning G1 X150 Y150 ; move probe to bed center G30 ; move Z down stopping at the endstop -for BLT G1 X0 Y0 Z10 ; move to parking position
; homex.g G91 ; relative positioning G1 H2 Z5 F6000 ; lift Z relative to current position G1 H1 X-405 F1800 ; move quickly to X axis endstop and stop there (first pass) G1 X5 F1800 ; go back 5mm G1 H1 X-405 F360 ; move slowly to X axis endstop once more (second pass) G1 H2 Z-5 F6000 ; lower Z again G90 ; absolute positioning
; homey.g G91 ; relative positioning G1 H2 Z5 F6000 ; lift Z relative to current position G1 H1 Y-415 F1800 ; move quickly to Y axis endstop and stop there (first pass) G1 Y5 F6000 ; go back a few mm G1 H1 Y-415 F360 ; move slowly to Y axis endstop once more (second pass) G1 H2 Z-5 F6000 ; lower Z again G90 ; absolute positioning
; homez.g G91 ; relative positioning G1 H2 Z5 F6000 ; lift Z relative to current position G90 ; absolute positioning G1 X150 Y150 ; position probe at center of the bed G30 ; move Z down until the endstop is triggered-for BLT
I cleaned up your files a bit.
-
Thanks....I will upload the new files and see how it's working. I will do 2 separate sd cards....I will use them in a fresh install and on the old one . Just testing to see if this will fix the map height thing.
-
Above - you said " If you are using an endstop switch, then the back off move should NOT have H2."
Can you explain that please. I'm trying to better understand the documentation. I can see that H0 could be used for the backoff move since we now have a "home" for the axis. The documentation for H2 says
"H2 Individual motor mode. X refers to the X motor, Y refers to the Y motor, and so on. Normally used with relative motor coordinates (see G91).is used for a single"
This description would seem to apply to this situation - albeit may be redundant in the context of a backoff move. Basically - you said "NOT" and I'm seeking to understand if there is a negative here.One last thing (may be related) - is it "good practice" to issue a G90 at the end to avoid any potential, accidental issues with subsequent positioning commands ? Or does the homing move H1 automatically revert the printer to absolute positioning ?
-
@stuartofmt H2 is intended to allow movement for an unhomed axis or to isolate a single motor move on a corexy. Using it for the backoff move would prevent any error messages from being thrown in cases where the initial homing move actually failed. In normal working operation this may not matter, but when doing your initial testing, missing that error can lead to a lot of confusion. (Ex: I press home but it move in the wrong direction a few mm, I don't know why so I start changing homing direction or motor direction or endstop position, etc and make things much much worse, when the actual problem was that the initial homing either failed with a false positive or false negative and the H2 allowed the back off move to work anyway)
H2 in homing files is really only appropriate for the Z axis to allow an unhomed z axis to raise a few mm just to ensure clearance for moving the X and Y axis.
Unfortunately the web configurator tool has been generating XY back off moves that use H2 for a while, so it's pretty common to see now. But it really shouldn't be the case and I believe it's now fixed there.
Best practice for G90/G91 is to always declare it before you need it. Partly to ensure the moves happen the way you intend them, and to make the readability of the macro more clear because it declares the intention of the following moves.
As for whether the G90/G91 is persistent after the macro exits I'm not actually sure. It my return to whatever was set previously.
-
Thanks - makes sense.
I note that the documentation says that macros implicitly call a M120 Push at the start. But M121 Pop does not state that it is applied at the end of a Macro call. I suspect that logically - it must otherwise the stack would just grow ....
Would be great if there was some clarification on that.
Implicit in the above is that it's perhaps not a bad idea (although in practice likely irrelevant) to have a G90 in config.g before any macro calls so that the default state is absolute.