[3.4b3] Homing to negative Y doesn't work
-
My printer's origin is in the middle of its bed, with the minimum Y value being -149.
Y homes against that -149 minimum of the axis.After upgrading to 3.4b3 (from 3.3 stable) this doesn't work anymore. It homes fine, but after homing the printer thinks it's at Y0 rather than Y-149...
config.g
; Configuration file for Duet WiFi (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v2.1.8 on Sun May 10 2020 15:03:19 GMT+0200 (Mitteleuropäische Sommerzeit) ; General preferences ;M929 S3 ;enable debug logging M575 P1 S1 B57600 ;Enable PanelDue Port G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"V-Core Pro" ; set printer name M669 K1 ; select CoreXY mode ; Network M552 S1 ; enable network ; Drives M569 P0 S0 ; stepper X/Y M569 P1 S0 ; stepper X/Y M569 P2 S1 ; stepper Coupler M569 P3 S0 ; stepper E1 M569 P4 S0 ; stepper E2 M569 P5 S0 ; stepper E3 M569 P6 S0 ; stepper E4 M569 P7 S0 ; stepper Z1 M569 P8 S0 ; stepper Z2 M569 P9 S0 ; stepper Z3 M584 X0 Y1 C2 Z7:8:9 ; set drive mapping (motion system) M584 E3:4:5:6 ; set drive mapping (extruders) ; Axis Limits global minY = -149 global maxY = 72 M208 X-150:160 Y{global.minY}:{global.maxY} C0:250 Z0:270 ; set axis minima & maxima M671 X-201:8:214 Y-204:187:-204 S30 ; set Z leadscrew positions M92 X160.00 Y160.00 C200.00 Z800.00 ; set steps per mm M350 X16 Y16 C16 Z16 I1 ; configure microstepping with interpolation M566 X500 Y500 C2 Z70 ; set maximum instantaneous speed changes (mm/min) M203 X30000 Y30000 C10000 Z2000 ; set maximum speeds (mm/min) M201 X2000 Y2000 C500 Z500 ; set accelerations (mm/s^2) M906 X1800 Y1800 C500 I30 ; set motor currents (mA) and motor idle factor in per cent M906 Z1400 I100 ; set motor currents (mA) and motor idle factor in per cent M906 E600:600:600:600 I100 ; set motor currents (mA) and motor idle factor in per cent (2x Flex3Drive 2x LGX) M84 S30 ; Set idle timeout ;M204 P1500 T3000 ;M593 F40 ; cancel ringing ;=================== Extruder ====================== M92 E408:408:408:408 ; set steps per mm M350 E16:16:16:16 I1 ; configure microstepping M566 E1200:1200:1200:1200 ; set maximum instantaneous speed changes (mm/min) M203 E4000:4000:4000:4000 ; set maximum speeds (mm/min) M201 E3000:3000:3000:3000 ; set accelerations (mm/s^2) ;==================================================== ; Endstops M574 X2 S1 P"xstop" ; configure active-high endstop for high end on X via pin xstop M574 Y1 S1 P"ystop" ; configure active-high endstop for high end on Y via pin ystop M574 Z0 ; No Z-Endstop (use as probe instead) M574 C1 S3 ; Stall detect coupler at low end of its range ;Stall Detection M915 C S6 F0 H200 R0 ; Coupler ; Z-Probe global zProbeSpeedFeed = 500 global zProbeSpeedTravel = 20000 global zProbeDiveHeightLevel = 30 global zProbeDiveHeightMesh = 3 global zProbePin = "zstop" global zProbeType = 8 global zProbeTriggerValue = 200 M558 P{global.zProbeType} C{global.zProbePin} H{global.zProbeDiveHeightMesh} F{global.zProbeSpeedFeed} T{global.zProbeSpeedTravel} ; set Z probe type to unfiltered switch and the dive height + speeds G31 X0 Y0 Z0 P{global.zProbeTriggerValue} ; set Z probe trigger value, offset and trigger height, offsets here are hardcoded in leveling macro as well global minYMesh = global.minY global maxYMesh = 115 M557 X-146:150 Y{global.minYMesh}:{global.maxYMesh} P10 ; define mesh grid M376 H0 ; Set bed correction taper ; Heaters M308 S0 P"bedtemp" Y"thermistor" T100000 B3950 ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"bedheat" T0 Q10 ; create bed heater output on bedheat and map it to sensor 0 M143 H0 S121 ; set temperature limit for heater 0 to 121C M307 H0 B0 R0.686 C403.9 D2.95 S1.00 V24.1 ; Bed PID Tuning M140 H0 ; map heated bed to heater 0 M308 S1 P"e0temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin e0temp M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1 M143 H1 S301 ; set temperature limit for heater 1 to 301C M308 S2 P"e1temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 2 as thermistor on pin e1temp M950 H2 C"e1heat" T2 ; create nozzle heater output on e1heat and map it to sensor 2 M143 H2 S301 ; set temperature limit for heater 2 to 301C M308 S3 P"duex.e2temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 3 as thermistor on pin e2temp M950 H3 C"duex.e2heat" T3 ; create nozzle heater output on e2heat and map it to sensor 3 M143 H3 S301 ; set temperature limit for heater 3 to 301C M308 S4 P"duex.e3temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 2 as thermistor on pin e3temp M950 H4 C"duex.e3heat" T4 ; create nozzle heater output on e3heat and map it to sensor 2 M143 H4 S301 ; set temperature limit for heater 2 to 301C M302 S190 R190 ;Cold extrusion settings M307 H1 B0 R4.292 C143.6:138.0 D3.25 S1.00 V24.2 ; PID Tuning T0 M307 H2 B0 R3.836 C137.7:128.8 D1.66 S1.00 V24.2 ; PID Tuning T1 M307 H3 B0 R3.967 C139.3:126.4 D1.79 S1.00 V24.2 ; PID Tuning T1 M307 H4 B0 R3.965 C144.7:139.8 D1.96 S1.00 V24.2 ; PID Tuning T1 ; Fans M950 F0 C"fan0" ; Hotend Fan Tool 0 M106 P0 S255 L255 H1 T50 ; Hotend Fan Tool 0 M950 F1 C"duex.fan3" Q50 ; Layer Fan Tool 0 M106 P1 S0 H-1 ; Layer Fan Tool 0 M950 F2 C"fan2" ; Hotend Fan Tool 1 M106 P2 S255 L255 H2 T50 ; Hotend Fan Tool 1 M950 F3 C"duex.fan4" Q50 ; Layer Fan Tool 1 M106 P3 S0 H-1 ; Layer Fan Tool 1 M950 F4 C"duex.fan5" ; Hotend Fan Tool 2 M106 P4 S255 L255 H3 T50 ; Hotend Fan Tool 2 M950 F5 C"duex.fan6" Q50 ; Layer Fan Tool 2 M106 P5 S0 H-1 ; Layer Fan Tool 2 M950 F6 C"duex.fan7" ; Hotend Fan Tool 3 M106 P6 S255 L255 H4 T50 ; Hotend Fan Tool 3 M950 F7 C"duex.fan8" Q50 ; Layer Fan Tool 3 M106 P7 S0 H-1 ; Layer Fan Tool 3 ;Z-Offset: If nozzle is too close to bed _reduce_ offset (negative number becomes more negative) ; If nozzle is too far away, _increase_ offset (negative number becomes less negative) ; Tools M563 P0 D0 H1 F1 ; define tool 0 G10 P0 X-9 Y39 Z-4.60 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C M563 P1 D1 H2 F3 ; define tool 1 G10 P1 X-9.480 Y38.790 Z-4.890 ; set tool 1 axis offsets G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C M563 P2 D2 H3 F5 ; define tool 2 G10 P2 X-9.310 Y38.840 Z-5.010 ; set tool 2 axis offsets G10 P2 R0 S0 ; set initial tool 2 active and standby temperatures to 0C M563 P3 D3 H4 F7 ; define tool 3 G10 P3 X-9.450 Y37.880 Z-5.000 ; set tool 3 axis offsets G10 P3 R0 S0 ; set initial tool 3 active and standby temperatures to 0C M563 P4 S"Pen" ; define tool 4 (Pen) G10 P4 X0 Y46.5 Z-20.000 ; set tool 4 axis offsets ;Dock present switches M950 J0 C"e0stop" ; Tool 0 Dock switch M950 J1 C"e1stop" ; Tool 1 Dock switch M950 J2 C"duex.e2stop" ; Tool 2 Dock switch M950 J3 C"duex.e3stop" ; Tool 3 Dock switch M950 S0 C"duex.pwm4" ;PebbleWiper Servo M950 P1 C"duex.pwm5" ;Light switch PWM ;Accelerometer M955 P0 C"spi.cs3+spi.cs4" ;M593 F78 ; Miscellaneous M98 P"/macros/Misc/Lights/On" M98 P"/sys/config-tools.g"
homex.g (this homes first)
; homex.g ; called to home the X axis ; ; generated by RepRapFirmware Configuration Tool v2 on Thu Dec 13 2018 18:14:06 GMT+0100 (Central European Standard Time) G91 ; relative positioning G1 Z5 F1000 H2 ; lift Z relative to current position G1 H1 X400 F10000 ; move quickly to X axis endstop and stop there (first pass) G1 X-5 F10000 ; go back a few mm G1 H1 X400 F360 ; move slowly to X axis endstop once more (second pass) G90 ; absolute positioning
homey.g (this homes after x)
; homey.g ; called to home the Y axis ; ; generated by RepRapFirmware Configuration Tool v2 on Thu Dec 13 2018 18:14:06 GMT+0100 (Central European Standard Time) G91 ; relative positioning G1 Z5 F1000 H2 ; lift Z relative to current position G1 H1 Y-400 F10000 ; move quickly to Y axis endstop and stop there (first pass) G1 Y5 F10000 ; go back a few mm G1 H1 Y-400 F360 ; move slowly to Y axis endstop once more (second pass) G90 ; absolute positioning
After downgrading to 3.3 stable, everything works as expected again.
-
@diamondback all looks valid.
out of curiosity could you try a split M208 command? i.e.M208 X-150 Y{global.minY} C0 Z0 S1 M208 X160 Y{global.maxY} C250 Z270
I home with an 0,0 at the centre at the same way you do.
The only other thing I can think of is its not carrying over the global variable correctly.
If the above doesn't work, can you try removing the variable from your M208?
This should help pin down the error -
Good morning @diamondback
https://github.com/Duet3D/RepRapFirmware/wiki/Changelog-RRF-3.x-Beta-&-RC#reprapfirmware-340beta2
Where a GCode parameter accepts multiple values, you can no longer use a mixture of literals and expressions (which was previously supported in standalone mode only). However, the whole parameter can now be an array expression. For example, M92 E{var.e1}:400:{var.e3} will no longer work and must be replaced by M92 E{var.e1,400,var.e3}.In your case this is how it should be:
M208 X-150:160 Y{global.minY,global.maxY} C0:250 Z0:270 ; set axis minima & maxima
Check if you have any more
I don't know if this will be the solution for your problem.
Best regards
-
Thanks for the ideas, will test as soon as the current print (on 3.3) finishes
-
@diamondback said in [3.4b3] Homing to negative Y doesn't work:
Thanks for the ideas, will test as soon as the current print (on 3.3) finishes
Just out of curiosity why are you using a global var in that way?
Those values are already part of the Object Model so if you set them using constants in config.g you can read them from the Object Model if you need to use the current values.
Thanks.
Frederick
-
@fcwilt I need to change these values at runtime (during mesh probing). I don't want to have to define the actual value in multiple places, so I just store it as a global.
I wasn't aware I can read this from the OM, that would open further possibilities of achieving the same goal. -
@diamondback said in [3.4b3] Homing to negative Y doesn't work:
@fcwilt I need to change these values at runtime (during mesh probing). I don't want to have to define the actual value in multiple places, so I just store it as a global.
I wasn't aware I can read this from the OM, that would open further possibilities of achieving the same goal.If the normal M208 limits prevent you from probing the desired locations you can temporarily removing the restrictions set by those limits by using a pair of M564 commands, one to disable the limits before you probe, one to restore the limits after you probe.
As long as the locations you wish to probe are accessible temporarily disabling the limits will cause no problems.
Frederick
-
@fcwilt said in [3.4b3] Homing to negative Y doesn't work:
@diamondback said in [3.4b3] Homing to negative Y doesn't work:
@fcwilt I need to change these values at runtime (during mesh probing). I don't want to have to define the actual value in multiple places, so I just store it as a global.
I wasn't aware I can read this from the OM, that would open further possibilities of achieving the same goal.If the normal M208 limits prevent you from probing the desired locations you can temporarily removing the restrictions set by those limits by using a pair of M564 commands, one to disable the limits before you probe, one to restore the limits after you probe.
As long as the locations you wish to probe are accessible temporarily disabling the limits will cause no problems.
Frederick
That didn't work for me when I originally set up this system. RRF will just report that it can't reach those points.
-
@diamondback said in [3.4b3] Homing to negative Y doesn't work:
That didn't work for me when I originally set up this system. RRF will just report that it can't reach those points.
Well it does work because it is the approach I use.
Frederick
-
@fcwilt said in [3.4b3] Homing to negative Y doesn't work:
@diamondback said in [3.4b3] Homing to negative Y doesn't work:
That didn't work for me when I originally set up this system. RRF will just report that it can't reach those points.
Well it does work because it is the approach I use.
Frederick
Maybe something changed then, because that was the first thing I tried back then:
https://forum.duet3d.com/topic/23474/probing-outside-allowed-area -
@diamondback said in [3.4b3] Homing to negative Y doesn't work:
@fcwilt said in [3.4b3] Homing to negative Y doesn't work:
@diamondback said in [3.4b3] Homing to negative Y doesn't work:
That didn't work for me when I originally set up this system. RRF will just report that it can't reach those points.
Well it does work because it is the approach I use.
Frederick
Maybe something changed then, because that was the first thing I tried back then:
https://forum.duet3d.com/topic/23474/probing-outside-allowed-areaPerhaps something has changed. I will have to run a test.
Thanks for the feedback.
Frederick
-
@aitor said in [3.4b3] Homing to negative Y doesn't work:
Good morning @diamondback
https://github.com/Duet3D/RepRapFirmware/wiki/Changelog-RRF-3.x-Beta-&-RC#reprapfirmware-340beta2
Where a GCode parameter accepts multiple values, you can no longer use a mixture of literals and expressions (which was previously supported in standalone mode only). However, the whole parameter can now be an array expression. For example, M92 E{var.e1}:400:{var.e3} will no longer work and must be replaced by M92 E{var.e1,400,var.e3}.In your case this is how it should be:
M208 X-150:160 Y{global.minY,global.maxY} C0:250 Z0:270 ; set axis minima & maxima
Check if you have any more
I don't know if this will be the solution for your problem.
Best regards
Thanks again for this hint, it was indeed the issue. I've read about that specific change in the changelog, but since I wasn't using a mix of variables and literals, I didn't pay any attention.
@dc42 maybe worth mentioning that my use case is also changed now (ie using multiple variables)