Z homing fails often after update from 3.1.1 to 3.2
-
lets have a loot at the config first.
-
It's easy enough to swap between 3.2 and 3.1.1 for testing. Just upload the relevant zip package to the system tab.
https://github.com/Duet3D/RepRapFirmware/releases/download/3.1.1/Duet2and3Firmware-3.1.1.zip
Still would be good to see the config.g so we can see the M574 and motor configs.
This is with a duex I assume?
-
@Veti said in Z homing fails often after update from 3.1.1 to 3.2:
lets have a loot at the config first.
So you don't think Occam's Razor applies here?
Frederick
-
@fcwilt You know how it is, we're blind without the config.
-
@Phaedrux said in Z homing fails often after update from 3.1.1 to 3.2:
Still would be good to see the config.g so we can see the M574 and motor configs.
This is with a duex I assume?
It's a Duet 2 WiFI with Duex 5.
I will post my config.g file but I fear that will be a distraction.
The one thing that changed was the firmware from 3.1.1 to 3.2.0. That says to me that the problem is related to the change, not my unchanged configuration files.
But here ya go.
; ---------------------------------------------------------------------------------------------------- ; start of file for MarkForged #1 - firmware v3 ; ---------------------------------------------------------------------------------------------------- ; **************************************************************************************************** ; prologue ; **************************************************************************************************** M111 S0 ; debug off M550 P"MF1" ; machine name ;M551 P"smush" ; machine password M555 P2 ; set output to look like Marlin M575 P1 B57600 S1 ; communication parameters for PanelDue M552 S1 ; enable (S1) networking (WiFi) M586 S1 P1 ;T0 ; enable (S1) FTP (P1) Disable TLS (T0) M586 S1 P2 ;T0 ; enable (S1) Telnet (P2) Disable TLS (T0) G21 ; dimensions in mm G90 ; for X,Y,Z use absolute coordinate values M83 ; for E0,E1,etc use relative coordinate values ; **************************************************************************************************** ; kinematics - K11 = MarkForged (x is -left/+right, y is -front/+back, z is bed -up/+down) ; **************************************************************************************************** M669 K11 X1:0:0 Y-1:-1:0 Z0:0:1 ; **************************************************************************************************** ; motors ; **************************************************************************************************** ; motor assignment M584 X0 Y1:2 Z5:6:7 E3 ; motor direction ; -- P = motor #, S = direction (1 = normal, 0 = reverse) M569 P0 S1 ; drive 0 - normal - X M569 P1 S1 ; drive 1 - normal - Y1(R) M569 P2 S0 ; drive 2 - reverse - Y2(L) M569 P3 S1 ; drive 3 - normal - E0 - for Nimble M569 P4 S1 ; drive 4 - normal - spare ; this is for a 3 Z steppers and 3 endstops M569 P5 S0 ; drive 5 - reverse - Z (L) M569 P6 S0 ; drive 6 - reverse - Z (C) M569 P7 S1 ; drive 7 - normal - Z (R) M569 P8 S1 ; drive 8 - normal - spare M569 P9 S1 ; drive 9 - normal - spare ; other motor settings ; for X, Y, Z M92 X80 Y80 Z400 ; steps per mm (Z1600 for 2mm lead - Z400 for 8mm lead - Z400 for belt drive using stepper with gearbox of 5-to-1) M203 X12000 Y12000 Z1200 ; max speed (mm/min) (Z1200 for 2mm lead - Z300 for 8mm lead - Z1200 for belt drive) M201 X1000 Y1000 Z20 ; acceleration (mm/s^2) M566 X600 Y600 Z120 ; max instant speed change (jerk) (mm/min) M906 X1000 Y1000 Z1000 I30 ; motor current (mA) and idle current (30%) (Zmax 1400) ; Nimble extruder M92 E2750 ; steps per mm (suggested 2750) M203 E3600 ; max speed (mm/min) (suggested 3600) M201 E120 ; acceleration (mm/s^2) (suggested 120) M566 E60 ; max instant speed change (jerk) (mm/min) (suggested 40) M906 E500 ; motor current (mA) (suggested 500) ; if M92 above is set for the default 16x microstepping then putting M350 here ; will result in the needed adjustments to the initial values set by M92 M350 X16 Y16 Z16 E16 I1 ; x16 microstepping with interpolation (I1) M208 X-150:150 Y-100:100 Z0:350; set axes min/max values for 0,0 in bed center M579 X1.0 Y1.0 Z1.0 ; scaling (values are determined by measuring test object) M564 H1 S1 ; H1 = dont allow moving non-homed axes, S1 = limit movement to axes min/max values ; **************************************************************************************************** ; end stops ; -- X,Y,Z,etc = location of endstop (0 = none, 1 = low end, 2 = high end) ; -- S = type (1 = switch, 2 = probe, 3 = motor stall (one), 4 = motor stall (multiple) ; **************************************************************************************************** M574 X1 S1 P"xstop" ; configure active-high endstop for low end on X M574 Y2 S1 P"ystop" ; configure active-high endstop for high end on Y M574 Z1 S1 P"!duex.e2stop + !duex.e3stop + !duex.e4stop" ; configure active-high endstop for low end on Z ; **************************************************************************************************** ; heaters ; **************************************************************************************************** M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 ; 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 M307 H0 B0 S1.00 A187.6 C189.8 D4.2 V12.0 ; values A, C, D, V determined by running heater tuning M140 H0 ; map heated bed to heater 0 M143 H0 S115 ; set temperature limit for heater 0 M308 S1 P"e0temp" Y"thermistor" T100000 B4267 ; configure sensor 1 as thermistor on pin e0temp M950 H1 C"e0heat" T1 Q250 ; create nozzle heater output on e0heat and map it to sensor 1 M307 H1 B0 S1.00 A403.7 C171.6 D3.4 V11.9 ; values A, C, D, V determined by running heater tuning M143 H1 S250 ; set temperature limit for heater 1 ; other heater settings M570 P300 ; heater fault timeout - increase to allow extra heating time ; **************************************************************************************************** ; cooling fans ; -- P = fan #, S = speed (0 to 255 or 0.0 to 1.0) ; -- H# = thermostatic control (turn on fan F# when heater H# reaches temp T#) ; -- H-1 = no thermostatic control ; **************************************************************************************************** M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is off M950 F1 C"fan1" Q500 ; create fan 1 on pin fan1 and set its frequency M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is on ; **************************************************************************************************** ; LED light strips ; -- P = fan #, S = speed (0 to 255 or 0.0 to 1.0) ; -- H# = thermostatic control (turn on fan F# when heater H# reaches temp T#) ; -- H-1 = no thermostatic control ; **************************************************************************************************** M950 F2 C"duex.fan3" Q500 ; create fan 2 on pin fan3 and set its frequency M106 P2 S0 H-1 C"Lights L" ; set fan 2 value, name. Thermostatic control is off M950 F3 C"duex.fan4" Q500 ; create fan 3 on pin fan4 and set its frequency M106 P3 S0 H-1 C"Lights R" ; set fan 2 value, name. Thermostatic control is off ; **************************************************************************************************** ; "dummy" fan names used as variables for now ; **************************************************************************************************** M950 F5 C"duex.fan5" Q500 ; create fan 5 on pin duex5.fan5 and set its frequency (probe mode) M106 P5 S0 H-1 C"TWO" ; set fan speed, name, thermostatic control off M950 F6 C"duex.fan6" Q500 ; create fan 6 on pin duex5.fan6 and set its frequency (map mode) M106 P6 S0 H-1 C"FULL" ; set fan speed, name, thermostatic control off M950 F7 C"duex.fan7" Q500 ; create fan 7 on pin duex.fan7 and set its frequency (print end heat mode) M106 P7 S0 H-1 C"HEAT OFF" ; set fan speed, name, thermostatic control off ; **************************************************************************************************** ; tools ; -- M563: P = tool #, S = "name", D = extruder drive #, H = heater #, F = fan # ; -- G10 : X,Y,Z = tool offsets, S = active temp, R = standby temp ; **************************************************************************************************** ; tool 0 M563 P0 S"T0" D0 H1 F0 ; define tool 0 G10 P0 X0 Y0 Z0 ; set axis offsets G10 P0 R0 S0 ; set active and standby temperatures ; **************************************************************************************************** ; epilogue ; **************************************************************************************************** ; ---------------------------------------------------------------------------------------------------- ; workplace coordinates ; Ln Mode (L1 L2 or L20 - see below) ; Pnnn tool number if L=1 or coordinate system number if L=2 or L=20 ; X,Y,Z,U,V... Offsets ; ; L= 1: this sets the tool offset, as if the L parameter was not present ; L= 2: this sets the origin of the coordinate system number specified by the P parameter (1 to 9) to the specified X, Y, X... values ; L=20: this is similar to L=2 except that the origin is specified relative to the current position of the tool ; ---------------------------------------------------------------------------------------------------- G10 L2 P1 X0.00 Y0.00 Z0.00 G10 L2 P2 X0.00 Y0.00 Z0.00 G10 L2 P3 X0.00 Y0.00 Z0.00 G10 L2 P4 X0.00 Y0.00 Z0.00 G10 L2 P5 X0.00 Y0.00 Z0.00 G10 L2 P6 X0.00 Y0.00 Z0.00 G10 L2 P7 X0.00 Y0.00 Z0.00 G10 L2 P8 X0.00 Y0.00 Z0.00 G10 L2 P9 X0.00 Y0.00 Z0.00 ; ---------------------------------------------------------------------------------------------------- ; Z probe configuration ; -- M558: P is type (see below), H is dive height, F is probe speed, T is travel speed ; --- 0 = none ; --- 5 = NC switch on probe connection ; --- 9 = BL Touch ; -- G31 : X Y is offset from nozzle, Z is height when triggered, P is trigger value ; ---------------------------------------------------------------------------------------------------- M98 P"probe_config.g" ; configure probe using probe mode ; ---------------------------------------------------------------------------------------------------- ; external buttons (P = pin #, T = trigger #, R = when to trigger (0 = always, 1 = printing), S = what edge (I->A = 1, A->I = 0, -1 = ignored) ; --- T0 does emergency stop ; --- T1 does pause (see M25) ; --- T# runs macro trigger#.g ; ---------------------------------------------------------------------------------------------------- M950 J1 C"^e0stop" M581 P1 T2 R0 S0 ; little button runs trigger2.g M950 J2 C"!^duex.e6stop" M581 P2 T0 R0 S0 ; big button does emergency stop ; ---------------------------------------------------------------------------------------------------- ; ---------------------------------------------------------------------------------------------------- ;T0 ; set tool 0 active ; ---------------------------------------------------------------------------------------------------- ; run config-override.g ; ---------------------------------------------------------------------------------------------------- ;M501 ; ---------------------------------------------------------------------------------------------------- ; end of file for MarkForged #1 - firmware v3 ; ----------------------------------------------------------------------------------------------------
-
@fcwilt said in Z homing fails often after update from 3.1.1 to 3.2:
That says to be that the problem is related to the change, not my unchanged configuration files.
Yes, but if it is a bug we'd still need to see the config that invokes it.
Let us know if reverting to 3.1.1 resolves.
-
@Phaedrux said in Z homing fails often after update from 3.1.1 to 3.2:
Let us know if reverting to 3.1.1 resolves.
I have held off on reverting in case you wanted me to perform additional tests using 3.2.
My gut feeling is that it is related to handling of the multiple Z end stop sensors as that is the unique element here.
For all my printers, including this one, every other end stop configuration is for an axis that has a single stepper.
Frederick
-
Well the only other thing I might ask you to check on 3.2 would be M98 P"config.g" and sending M574 to see if it echoes back to expected endstops.
-
@Phaedrux said in Z homing fails often after update from 3.1.1 to 3.2:
Well the only other thing I might ask you to check on 3.2 would be M98 P"config.g" and sending M574 to see if it echoes back to expected endstops.
Results of m98 p"config.g"
FTP is enabled on port 21
TELNET is enabled on port 23
Print will be terminated if a heater fault is not reset within 10 minutesFrederick
-
@Phaedrux said in Z homing fails often after update from 3.1.1 to 3.2:
Well the only other thing I might ask you to check on 3.2 would be M98 P"config.g" and sending M574 to see if it echoes back to expected endstops.
Results of M574
Endstop configuration:
X: low end switch connected to pin xstop
Y: high end switch connected to pin ystop
Z: low end switches connected to pins !duex.e2stop !duex.e3stop !duex.e4stopFrederick
-
Thanks. Please revert to 3.1.1 and see if the problem goes away again.
I note from your config that you are using active low endstop switches for Z. If they are simple normally-open switches, this is against our advice to use normally-closed switches, because it has two consequences that you need to be aware of:
-
A bad connection to one of them would exhibit this behaviour (i.e. endstop switch not triggered). Is it always the same Z motor that continues to run? If so then I suggest you check the connections to the corresponding endstop switch. It wouldn't be the first time that a bad connection started causing a problem by chance at the same time that a firmware upgrade was installed.
-
The cables connected to normally-open endstop switches are sensitive to capacitive pickup from nearby sources of noise, for example stepper motor cables in the same wiring bundle. However, I would not expect the sensitivity to interference to have changed between firmware versions.
If they are not simple microswitches (for example, they are optical sensors, or makerbot-style switches mounted on a PCB with one LED and two resistors) then item #2 does not apply.
-
-
@dc42 said in Z homing fails often after update from 3.1.1 to 3.2:
Thanks. Please revert to 3.1.1 and see if the problem goes away again.
Prior to reverting I tried homing 5 times under 3.2.
It failed 3 times. The behavior was for one of the steppers to keep moving even though the LED on the end stop sensor board turned on at the appropriate location. It was not always the same stepper. It was never more than one stepper. it always failed on the second G1 Z-25 F300 H1 - see below.
G91 ; relative moves G1 Z-399 F300 H1 ; move up until endstop switch is activated G1 Z20 F600 ; move down a bit G1 Z-25 F300 H1 ; move up until endstop switch is activated
I realize 5 times is not enough but I wanted to get back to you.
I reverted to 3.1.1 which, as I mentioned, I had been using for months and months without any problems.
I tried homing 5 times under 3.1.1.
No failures.
I will be glad to "upgrade" again to 3.2 and run more tests if needed.
Frederick
-
I don't want to be a pest but do you have any idea if dc42 has had to chance to investigate this issue?
I have continued to run homing tests - 3.1.1 simply does not fail whereas 3.2.0 fails "without fail".
Thanks.
Frederick
-
I believe he is aware, but I'm not sure beyond that.
Would you be able to test the 3.2.1 beta release to see if the issue is resolved?
https://www.dropbox.com/sh/1lwimb98k6hzz3z/AAApVr_P6roUjnya4riDbGAba?dl=0
-
@Phaedrux said in Z homing fails often after update from 3.1.1 to 3.2:
Would you be able to test the 3.2.1 beta release to see if the issue is resolved?
Will do.
Frederick
-
@Phaedrux said in Z homing fails often after update from 3.1.1 to 3.2:
I believe he is aware, but I'm not sure beyond that.
Would you be able to test the 3.2.1 beta release to see if the issue is resolved?
https://www.dropbox.com/sh/1lwimb98k6hzz3z/AAApVr_P6roUjnya4riDbGAba?dl=0
Before installing 3.2.1 I ran 50 more homing tests under 3.1.1 - they all worked.
Sadly after installing 3.2.1 the second test failed in the same way as 3.2.0.
G1 H1 Z-300 F300 <== slow speeds so I can hit the emergency stop button before a crash
G1 H2 Z+25 F300
G1 H1 Z-30 F300 <== to date it has always failed on this move never on the first oneBack to 3.1.1 for now so I can use my printer.
I miss the Object Model Viewer from 3.2.0 but I cannot stand by the printer every time it homes Z.
Frederick
-
Sorry to bother you but I was wondering if this problem of mine was in the queue?
As suggested I tried the 3.2.1 binaries and I was successful in getting it installed.
Under 3.1.1 I had run 50 homing tests and they all worked.
Under 3.2.1 I tried to run the same 50 homing tests. The 1st worked - the 2nd failed.
For now I am stuck on 3.1.1.
Thanks.
Frederick
-
Thanks for the detail. I have added this to my investigations list. It's likely connected to the way in which endstops connected to a DueX are read.
-
@dc42 said in Z homing fails often after update from 3.1.1 to 3.2:
Thanks for the detail. I have added this to my investigations list. It's likely connected to the way in which endstops connected to a DueX are read.
I will repeat this just in case you missed it.
- The behavior was for one of the steppers to keep moving even though the LED on the end stop sensor activated.
- It was not always the same stepper.
- It was never more than one stepper.
- It always failed on the second G1 Z-25 F300 H1 - see below.
G91 ; relative moves G1 Z-399 F300 H1 ; move up until endstop switch is activated G1 Z20 F600 ; move down a bit G1 Z-25 F300 H1 ; move up until endstop switch is activated
Thanks much.
Frederick
-
Thanks. I suspect the issue may be that when two endstop switches connected to a DueX trigger almost simultaneously, only the first one is detected. I will try to replicate this.