[RRF3.3b2] Possibly incorrect behavior when homing Z
-
3.3b2 introduce the great option to have two speeds for probing Z that get defined in M558.
There is a behavior that I (and a couple others) are seeing that while not harmful is a touch annoying
Here's the process.
Take the gantry up to a bigger height (say 100-150mm).
Turn on the printer, home XY then home Z.
The gantry will be lowered until the sensor (whatever it might be) triggers and sets the first 0 reading.
Then - the gantry raises back to whatever it was before (if it was 100mm - it goes there, if 150mm - it goes that high and so on) and then drops down at the second speed (usually much lower) to probe again.I would expect the height to which the gantry raises on the second probe is the one defined in M558 - not the distance the gantry had to travel for the first reading.
I see this behavior on Duet 3 6HC, but I know this also happens on Duet 2 Wifi.
Did I miss something with the setup?
Here's my code just in case.
Probe definition in config.g:
; Z microswitch M558 K1 P8 C"io3.in" I1 H2 F350:60 T18000 A10 S0.01 R0.2 ; set Z probe type to switch and the dive height + speeds G31 K1 P500 X0 Y25 Z-0.16 ; set Z probe trigger value, offset and trigger height
Home.z (very simple):
G91 ; relative positioning G1 H2 Z10 F6000 ; lift Z relative to current position G90 ; absolute positioning G1 X207 Y304 F6000 ; move above the endstop switch G30 K1 Z-99999
-
Can you post your full config.g as well as the results of sending M122 and M98 P"config.g"?
-
@phaedrux Sure thing.
m122 === Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.3beta2 running on Duet 3 MB6HC v0.6 or 1.0 (standalone mode) Board ID: 08DJM-956L2-G43S4-6JKDA-3SJ6T-1B6GH Used output buffers: 3 of 40 (22 max) === RTOS === Static ram: 148476 Dynamic ram: 94096 of which 176 recycled Never used RAM 108588, free system stack 114 words Tasks: NETWORK(ready,236) ETHERNET(notifyWait,117) SENSORS(delaying,17) HEAT(delaying,303) CanReceiv(notifyWait,798) CanSender(notifyWait,372) CanClock(delaying,348) TMC(notifyWait,58) MAIN(running,648) IDLE(ready,19) Owned mutexes: === Platform === Last reset 00:36:00 ago, cause: power up Last software reset at 2021-04-07 20:35, reason: User, GCodes spinning, available RAM 108916, slot 2 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00400000 BFAR 0x00000000 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 Aux1 errors 0,0,0 MCU temperature: min 21.7, current 45.1, max 45.5 Supply voltage: min 23.9, current 24.0, max 24.1, under voltage events: 0, over voltage events: 0, power good: yes 12V rail voltage: min 12.1, current 12.1, max 12.2, under voltage events: 0 Heap OK, handles allocated/used 99/2, heap memory allocated/used/recyclable 2048/460/434, gc cycles 0 Driver 0: position 20080, standstill, reads 55662, writes 37 timeouts 0, SG min/max 0/1023 Driver 1: position -19920, standstill, reads 55662, writes 37 timeouts 0, SG min/max 0/1023 Driver 2: position 1279, standstill, reads 55663, writes 37 timeouts 0, SG min/max 0/1023 Driver 3: position 0, standstill, reads 55663, writes 37 timeouts 0, SG min/max 0/1023 Driver 4: position 0, standstill, reads 55675, writes 25 timeouts 0, SG min/max 0/1023 Driver 5: position 0, standstill, reads 55675, writes 25 timeouts 0, SG min/max 0/762 Date/time: 2021-04-08 13:12:35 Slowest loop: 46.79ms; fastest: 0.06ms === Storage === Free file entries: 10 SD card 0 detected, interface speed: 25.0MBytes/sec SD card longest read time 3.4ms, write time 5.1ms, max retries 0 === Move === DMs created 125, maxWait 104850ms, bed compensation in use: mesh, comp offset 0.000 === MainDDARing === Scheduled moves 23736, completed moves 23736, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 1], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters = 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1 Heater 0 is on, I-accum = 0.1 Heater 1 is on, I-accum = 0.6 === GCodes === Segments left: 0 Movement lock held by null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is idle in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty. === CAN === Messages queued 40348, send timeouts 0, received 8635, lost 0, longest wait 1ms for reply type 6042, peak Tx sync delay 503, free buffers 49 (min 48) === Network === Slowest loop: 27.85ms; fastest: 0.02ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions Telnet(0), 0 sessions HTTP sessions: 1 of 8 - Ethernet - State: active Error counts: 0 0 1 0 0 Socket states: 2 2 2 2 2 0 0 0
config.g
; Configuration file for Duet 3 (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.1.3 on Sun Jul 12 2020 20:53:52 GMT+0200 (Central European Summer Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Voron 2" ; set printer name M669 K1 ; select CoreXY mode ; 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 T1 S0 ; disable Telnet ; Wait a bit so boards can sync up G4 S5 ; Drives for XY M569 P0.4 S1 ; A motor M569 P0.5 S1 ; B motor ; Drives for Z M569 P0.0 S0 ; Front left M569 P0.1 S1 ; Back left M569 P0.2 S0 ; Back right M569 P0.3 S1 ; Front right ; Drive for extruder M569 P2.0 S0 ; ; Drive mappings M584 X0.4 Y0.5 Z0.0:0.1:0.2:0.3 E2.0 ; set drive mapping ; General drive config like speeds, accel, jerk, etc M350 X16 Y16 Z16:16:16:16 E16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z400.00 E410.00 ; set steps per mm M566 X600.00 Y600.00 Z60.00 E8000.00 ; set maximum instantaneous speed changes (mm/min) M203 X18000.00 Y18000.00 Z3000 E15000 ; set maximum speeds (mm/min) M201 X1500.00 Y1500.00 Z350.00 E1800.00 ; set accelerations (mm/s^2) M204 P1500 T2000 ; set printing acceleration and travel acceleration M906 X1200 Y1200 Z1200 E600 I60 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Axis Limits M208 X1 Y0 Z0 S1 ; set axis minima M208 X301 Y305 Z300 S0 ; set axis maxima ; Endstops M574 X2 S1 P"!io1.in" ; X Hall effect endstop M574 Y2 S1 P"!io2.in" ; Y Hall effect endstop ; M574 Z1 S1 P"io3.in" ; Z microswitch endstop M574 Z0 P"nil" ; No endstop ; Z microswitch M558 K1 P8 C"io3.in" I1 H2 F350:60 T18000 A10 S0.01 R0.2 ; set Z probe type to switch and the dive height + speeds G31 K1 P500 X0 Y25 Z-0.16 ; set Z probe trigger value, offset and trigger height ; Z-Probe M558 K0 P8 C"io4.in" I1 H5 F350:120 T18000 A5 S0.01 R0.2 ; set Z probe type to switch and the dive height + speeds G31 K0 P500 X0 Y25 Z1 ; set Z probe trigger value, offset and trigger height M671 X354:354:-53:-53 Y0:370:370:0 S20 ; Define Z belts locations (Front_Left, Back_Left, Back_Right, Front_Right) M557 X15:285 Y25:275 S40 ; define mesh grid ; Hotbed M308 S0 P"temp0" Y"thermistor" T100000 B4138 ; Thermistor M950 H0 C"out0" T0 ; Heater M307 H0 R0.799 C380.0 D4.51 S0.60 V24.0 ; Heater 0 model for 3.x ; M307 H0 A157.8 C632 D1.4 V24.0 S0.6 B0 ; Heater 0 model: gain 157.8, time constant 632.0, dead time 1.4, max PWM 0.60, calibration voltage 24.0, mode PID M140 H0 ; Map heated bed to heater 0 M143 H0 S120 ; Set temperature limit for heater 0 to 120C M570 H0 T3 ; Start screaming if temp falls 3C below set temp. ; Hotend M308 S1 P"temp1" Y"thermistor" T100000 B4138 ; Thermistor M950 H1 C"out1" T1 ; Heater ; Mosquitto ; M307 H1 R3.110 C160.8 D8.11 S1.00 V24.0 ; M307 H1 A593.7 C180.4 D7.6 V24.0 B0 ; Heater 1 model: gain 593.7, time constant 180.4, dead time 7.6, max PWM 1.00, calibration voltage 24.0, mode PID ; Mosquitto HF ; M307 H1 A408.1 C161.3 D4.8 V24.0 B0 ; Heater 1 model: gain 408.1, time constant 161.3, dead time 4.8, max PWM 1.00, calibration voltage 24.0, mode PID M307 H1 R2.479 C178.2 D6.92 S1.00 V24.0 ; DHT22 sensor M308 S10 P"0.spi.cs1" Y"dht22" A"Chamber Temp" ; Temperature (connected to cs0 port on the temp daughterboard slot M308 S11 P"S10.1" Y"dhthumidity" A"Chamber Hum[%]" ; Humidity ; Main fans M950 F0 C"2.out6" Q500 ; Part cooling fan M106 P0 S0 H-1 C"Part Fan" ; Default off; thermostatic control off M950 F1 C"out7" Q500 ; Hotend cooling fan ;M106 P1 S1 H-1 ; Default off; thermostatic control off M106 P1 S1 H1 T45 C"Hotend Fan" ; Default on; thermistatic control on above 45C ; Aux fans (option to control daughter board fans based on main board temp sensor coming in RRF3.3, for now has to be manual) M950 F2 C"out8" Q500 ; Electronics compartment fan 1 M106 P2 S1 H0 T45 C"Electronics Fan 1" ; Default off; thermistatic control on above 45C M950 F3 C"out9" Q500 ; Electronics compartment fan 2 M106 P3 S1 H0 T45 C"Electronics Fan 2" ; Default off; thermistatic control on above 45C M950 F4 C"!out4+out4.tach" ; Noctua exhaust filter fan M106 P4 S0 H-1 C"Exhaust Fan" ; Default off ; Tools M563 P0 D0 H1 F0 ; 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 ; Push buttons and their config M950 J5 C"io5.in" ; Left button - light M581 P5 T5 ; when button pushed, execute trigger5.g M950 J6 C"io7.in" ; Left button - heat up M950 F5 C"io6.out" ; configure the relay as fan M106 F5 S0 H-1 C"Light" M581 P6 T6 ; When pushed - trigger relay switch on io6.out ; Custom settings are not defined M593 F37.3 ; DAA ; Miscellaneous M911 S22 R23 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss M575 P1 S1 B57600 ; enable support for PanelDue ; Prepare global vars for print macros global bed_temp = 0 global hotend_temp = 0
m98 P"config.g" HTTP is enabled on port 80 FTP is disabled TELNET is disabled
-
@pkos
I have a Duet 2 Wifi and run RRF 3.3b2
It works as expected for me.
Move to Z100
Run G30 K0
It does a fast probe then only raises to the dive height before doing the subsequent probes at the slower speed.; Z-Probe M950 S0 C"exp.heater3" ; create servo pin 0 for BLTouch M558 P9 C"^zprobe.in" H6 F600:180 K0 T2400 A10 S0.03 R0.5 B0 ; set Z probe type to bltouch and the dive height + speeds G31 P500 X27 Y-2 Z0.48 ; set Z probe trigger value, offset and trigger height
-
Just to be clear.
You take the gantry to 100.
You turn the printer off completely.
You turn the printer on and Home z - and then it also just raises a tiny bit even though the first probe needed a drop fo 100?The switched off printer is the key here. If it's already homed, the problem does not exist.
This is a problem for me, since I often have prints running and the printer shuts itself off completely after it cools down.
So then, when I want to print again, the gantry is often quite high and it takes a long time to get it to home again.
-
@pkos My printer is down at the moment but as far as I remember this works for me? Granted I did not run 3.3b2 for long, but the first trigger of the probe should establish Z=0 (you should see the "Home Z" button turn blue in DWC as soon as the probe is triggered), then the gantry rises by the dive height and the 2nd probe occurs...
-
They say a picture tells a thousand words.
This is what I see.
https://www.youtube.com/watch?v=0EZ7CqDl-Io
The key to make this happen is set double speeds for probing.
So in my case it's F350:60 -
@pkos Ok, I can reproduce this here on my VORON Zero if I replace the Z endstop with a Z probe connected to the same spot (so I can use
G30 Z-99999
in my homing sequence instead ofG1 H1 Z-125
).When using a single probing speed, Z=0 is established on the first probe, so the move to the dive height is small.
When using dual probing speeds, Z=0 is not established until after the second probe, so the move to the dive height is "power up position + dive height".
-
@pkos said in [RRF3.3b2] Possibly incorrect behavior when homing Z:
Just to be clear.
You take the gantry to 100.
You turn the printer off completely.
You turn the printer on and Home z - and then it also just raises a tiny bit even though the first probe needed a drop fo 100?The switched off printer is the key here. If it's already homed, the problem does not exist.
You could be right. I didn't turn the printer off.
-
@phaedrux Just checking in - is this possibly something that can be checked seeing as how others are now confirming the issue?
-
Yes I've asked @DC42 to comment when he gets a chance.
-
@phaedrux FYI - checked with 3.3b3 - behavior still there.
-
I can verify this behavior as well
Duet2 Wifi +Duex5
Duet Web Control 3.3.0-b3
RepRapFirmware for Duet 2 WiFi/Ethernet 3.3beta3 (2021-04-22) -
I've tried and failed to reproduce this behaviour. However, I have found a bug:
- If I set M558 F1000:300 A1 (or I don't specify the A parameter in the original M558 command), then homing Z using G30 probes just once and then reports "Homing failed".
- If I set M558 F1000:300 A2, then homing Z works. It probes once at the fast speed, moves up to the dive height (even if I started at a much greater height with Z not homed), then probes twice at the slow speed.
My G30 command to home Z has no parameters.
@pkps and @fulg, does the issue still occur if you remove the Z-99999 parameter from the G30 command?
@pkos and @sebkritikel, what A parameter are you using?
-
@dc42 I am using A10.
Just in case, my config is at the top.
I am not sure if you need the whole config.g or if the things up there are enough.
-
@pkos, I just found a way to reproduce the issue you saw:
- Send Z to +50
- Send G92 Z0
- Send M18 Z to flag Z as not homed
- Send G30 (after setting M558 A2 to avoid the other bug)
I am about to test the fix.
-
@dc42 Nice. I saw that M18 would also trigger this, but couldn't always reproduce it (so didn't want to waste your time with it).
For the time being, I just removed M18 from my end gcodeAwesome you found it.
-
The fix is working and will be in 3.3RC1.
-
@dc42 Awesome. Can't wait Thank you.
-
@dc42 said in [RRF3.3b2] Possibly incorrect behavior when homing Z:
@pkos and @sebkritikel, what A parameter are you using?
For posterity:
M558 P9 C"^zprobe.in" H5 F1000:200 A8 R0.75 T6000 S.02