My quad carriage machine is failing on Tools. AGAIN.
-
Dc42, thank you. Yes, those tools... don’t even have tfree, tpost, etc files . WIP.
while this obviously causes something while printing - using tools, when they will be configured...why would it cause stepper motors 5&6 (first motors on duex and their endstops) to “stutter” occasionaly on homing Z ?
Before rewiring, when those stepper drivers were mapped for X carriages for tools T1 and T2, those axes stuttered mid print.
It was hard to see. Was seen on print once you know what too look...
After rewiring, using and mapping those motors to Z, it’s easier to reproduce and hopefully debug -
@MaracMB said in My quad carriage machine is failing on Tools. AGAIN.:
why would it cause stepper motors 5&6 (first motors on duex and their endstops) to “stutter” occasionaly on homing Z ?
I don't think it's related. I'm still looking through your other files.
-
So your package of config files currently has the A axis configured as the second Z axis. Are you wanting to keep it this way for independent jogging? If it's just for homing it would be better to remove it entirely.
Here's a modified config.g with the recommended changes (removes A axis entirely, uses x16 microstepping with interpolation across the board, and changes the Z endstops to use both switches for homing/leveling, and fixes that error in M567.)
; Configuration file for Duet WiFi (firmware version 3) ; executed by the firmware on start-up ; by MaracMB ; General preferences G90 ; send absolute coordinates... M83 ; relative extruder moves M550 P"MarX-Quad" ; set printer name ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0 S0 ; physical drive 0 X goes backwards - X0 M569 P1 S1 ; physical drive 1 Y goes forwards - X1 M569 P2 S1 ; physical drive 2 Z goes forwards - Y M569 P3 S1 ; Physical drive 3 E0 goes forwards - X2 M569 P4 S1 ; Physical drive 4 E1 goes forwards - X3 M569 P5 S1 ; Physical drive 5 E2 goes forwards - Z1 M569 P6 S1 ; Physical drive 6 E3 goes forwards - Z2 M569 P7 S0 ; physical drive 7 E4 goes backwards - e1 M569 P8 S0 ; physical drive 8 E5 goes backwards - e2 M569 P9 S0 ; physical drive 9 E6 goes backwards - e3 M569 P10 S0 ; physical drive 10 Ext1 goes backwards - e4 ;Mapping drives M584 X0 Y2 Z5:6 U1 V3 W4 ; Extruder mapping M584 E7:8:9:10 ; Extruder mapping M350 X16 Y16 Z16 U16 V16 W16 I1 ; Configure microstepping movement M350 E16:16:16:16 I1 ; Configure microstepping extruders ; Motion parameters M92 X80 Y80 Z800 U80 V80 W80 ; Set steps per mm motion M92 E396:396:396:396 ; Set steps per mm extruders M566 X420 Y420 Z15 U420 V420 W420 ; set maximum instantaneous speed changes motion (mm/min) M566 E320:320:320:320 ; set maximum instantaneous speed changes extruders(mm/min) M203 X12000 Y12000 Z1200 U12000 V12000 W12000 ; set maximum speeds motion (mm/min) M203 E7200:7200:7200:7200 ; set maximum speeds extruders(mm/min) M201 X880 Y880 Z240 U880 V880 W880 ; set accelerations motion (mm/s^2) M201 E7200:7200:7200:7200 ; set accelerations extruders (mm/s^2) M906 X950 Y1050 Z1050 U950 V950 W950 I30 ; set motor currents (mA) and motor idle factor in per cent motion M906 E950:950:950:950 I30 ; set motor currents (mA) and motor idle factor in per cent extruders M84 S30 ; idle time ; Axis Limits M208 X-170 Y-165 Z0 U-112 V-157 W-112 S1 ; Set axies minimas M208 X115 Y155 Z350 U168 V112 W158 S0 ; Set axies maximas ; Endstops M574 X1 S1 P"!xstop" ; configure active-low endstop for low end M574 Y1 S1 P"!zstop" ; configure active-low endstop for low end M574 Z1 S1 P"!duex.e2stop+!duex.e3stop" ; configure active-low endstop for low end M574 U2 S1 P"!ystop" ; configure active-low endstop for high end M574 V1 S1 P"!e0stop" ; configure active-low endstop for low end M574 W2 S1 P"!e1stop" ; configure active-low endstop for high end ; Z-Probe ;M558 P0 H5 F120 T6000 ; disable Z probe but set dive height, probe speed and travel speed ;M557 X-125:125 Y-125:125 S125 ; define mesh grid ; Heaters and sensors M308 S0 P"bedtemp" Y"thermistor" T100000 B3950 ; configure sensor 0 M308 S1 P"duex.e2temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 M308 S2 P"duex.e3temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 2 M308 S3 P"duex.e4temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 3 M308 S4 P"duex.e5temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 4 M308 S5 Y"mcu-temp" A"MCU" ; Configure sensor for MCU M308 S6 Y"drivers" A"DRIVERS" ; configure sensor 6 as temperature warning and overheat flags on the TMC2660 on Duet M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0 M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M143 H0 S120 ; set temperature limit for heater 0 to 120C M140 H0 ; map heated bed to heater 0 M950 H1 C"duex.e2heat" T1 ; create nozzle heater output on duex.e3heat and map it to sensor 1 M143 H1 S300 ; set temperature limit for heater 1 to 300C M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M950 H2 C"duex.e3heat" T2 ; create nozzle heater output on duex.e4heat and map it to sensor 2 M143 H2 S300 ; set temperature limit for heater 2 to 300C M307 H2 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M950 H3 C"duex.e4heat" T3 ; create nozzle heater output on duex.e5heat and map it to sensor 3 M143 H3 S300 ; set temperature limit for heater 3 to 300C M307 H3 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M950 H4 C"duex.e5heat" T4 ; create nozzle heater output on duex.e6heat and map it to sensor 4 M143 H4 S300 ; set temperature limit for heater 4 to 300C M307 H4 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit ; Fans M950 F0 C"duex.fan4" Q1000 ; create fan 1 on pin duex.fan4 and set its frequency TOOL FAN 0 M106 P0 S0 H-1 ; set fan 1 value. Thermostatic control is turned off TOOL FAN 0 M950 F1 C"duex.fan5" Q1000 ; create fan 2 on pin duex.fan5 and set its frequency TOOL FAN 1 M106 P1 S0 H-1 ; set fan 2 value. Thermostatic control is turned off TOOL FAN 1 M950 F2 C"duex.fan6" Q1000 ; create fan 3 on pin duex.fan6 and set its frequency TOOL FAN 2 M106 P2 S0 H-1 ; set fan 3 value. Thermostatic control is turned off TOOL FAN 2 M950 F3 C"duex.fan8" Q1000 ; create fan 4 on pin duex.fan8 and set its frequency TOOL FAN 3 M106 P3 S0 H-1 ; set fan 4 value. Thermostatic control is turned off TOOL FAN 3 M950 F4 C"fan0" Q1000 ; create fan 5 on pin fan0 and set its frequency HOTEND FAN tool 0 M106 P4 S0 H1 T45 ; set fan 5 value. Thermostatic control is turned on HOTEND FAN tool 0 M950 F5 C"fan1" Q1000 ; create fan 6 on pin fan1 and set its frequency HOTEND FAN tool 1 M106 P5 S0 H2 T45 ; set fan 6 value. Thermostatic control is turned on HOTEND FAN tool 1 M950 F6 C"fan2" Q1000 ; create fan 7 on pin fan2 and set its frequency HOTEND FAN tool 2 M106 P6 S0 H3 T45 ; set fan 7 value. Thermostatic control is turned on HOTEND FAN tool 2 M950 F7 C"duex.fan3" Q1000 ; create fan 3 on pin duex.fan3 and set its frequency HOTEND FAN tool 3 M106 P7 S0 H4 T45 ; set fan 3 value. Thermostatic control is turned on HOTEND FAN tool 3 ;Extra fan ports ;external stepper - PWMed M950 F8 C"duex.fan7" Q500 ; fan 8 on pin duex.fan7 EXTRA FAN M106 P8 S0 H-1 C"extFan" ; set fan 8 value. Thermostatic control is turned off ;LED strip ;M950 F5 C"duex.pwm" ; create port for LEDs on pin duex.fan8 ;M106 P5 S0 C"LIGHTS" ; LED control ; Tools M563 P0 X0 D0 H1 F0 ; define tool 0 G10 P0 X0 Y0 Z0 U0 V0 W0 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C M563 P1 X3 D1 H2 F1 ; define tool 1, ports X axis to U G10 P1 X0 Y0 Z0 U0.45 V0 W0 ; set tool 1 axis offsets G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C M563 P2 X4 D2 H3 F2 ; define tool 3, ports X axis to A G10 P2 X0 Y161.85 Z0 U0 V0.35 W0 ; set tool 2 axis offsets G10 P2 R0 S0 ; set initial tool 1 active and standby temperatures to 0C M563 P3 X5 D3 H4 F3 ; define tool 3, ports X axis to A G10 P3 X0 Y175.2 Z0 U0 V0 W0.32 ; set tool 3 axis offsets G10 P3 R0 S0 ; set initial tool 1 active and standby temperatures to 0C ; DITTO TOOLs M563 P4 S"DITTOFront" D0:1 H1:2 X0:5 F0:1 ; Tool 2 uses extruders 1 and 2, hotend heaters 1 and 2, maps X to X and U, uses tool fans 4 and 5 G10 P4 X77 Y0 U-77 ; Set tool offsets and temperatures for tool 2 - moves X 77 left and U 77 right G10 P4 R0 S0 M567 P4 E1:1 ; Set mix ratio 100% on both front extruders M563 P5 S"QUAD" D0:1:2:3 H1:2:3:4 X0:3:5:6 F0:1:2:3 ; Tool 6 uses extruders 1,2,3and4, hotend heaters 1,2,3and4, maps X to U,A and B, and tool fans 4,5,6 and 7 G10 P5 Y0 X0 U-155 V0 W-155 ; Set tool offsets and temperatures for tool 2 - moves X 77 left and U 77 right G10 P5 R0 S0 M567 P5 E1:1:1:1 ; Set mix ratio 100% on all extruders M563 P6 S"DD left" D0:2 H1:3 X0:4 F0:2 G10 P6 X0 Y0 U0 V0 W0 G10 P6 R0 S0 M563 P7 S"DD right" D1:3 H2:4 X3:5 F1:3 G10 P7 X0 Y0 U0 V0 W0 G10 P7 R0 S0 ;Firmware retractions M207 P0 S0.70 F2100 T2500 Z0.4 M207 P1 S0.70 F2100 T2500 Z0.4 M207 P2 S0.70 F2100 T2500 Z0.4 M207 P3 S0.70 F2100 T2500 Z0.4 ;Filament runout sensors ; Automatic saving after power loss is enabled M911 S23.00 R23.50 P"M913 X0 Y0 U0 V0 W0 G91 M83 G1 Z2 E-4 F3000" ; Set voltage thresholds and actions to run on power loss ; MISC M501
And a simplified homeall/homez
; homeall.g ; called to home all axes ; ; scripted by Marac G91 ; relative positioning G1 H2 Z2 F360 ; lift Z relative to current position G1 H1 X-400 Y-450 U400 V-400 W400 F3600 ; move quickly to X and Y axis endstops and stop there (first pass) G1 X5 Y5 U-5 V5 W-5 F3600 ; go back a 5 mm G1 H1 X-10 Y-10 U10 V-10 W10 F360 ; second pass M400 M98 Phomez.g ; call homing script for Z axes G90
; homez.g ; called to home the Z axis G91 ; relative positioning G1 Z-405 F900 H1
Can you give those a try? Send M98 P"config.g" first just to check for any syntax errors I may have inadvertently introduced.
Also, just a note for all of your homing files: Only use H2 modifier when you want to move an axis that isn't already homed. Using it otherwise can hide errors because it will allow an axis to move when it isn't homed.
example: G1 U-2 F600 H2 ; go back a few mm
That move is supposed to happen after the axis has been homed, so the H2 shouldn't be needed. If there was a failure to home the H2 would hide that failure and force movement anyway.
Normally it's just used to life the Z axis slightly before move the XY axis for clearance.
-
@Phaedrux thank you.
tried proposed config. nothing new. same results.
it homes all the first time.
but then when i call to homeall again, it fails to home. It either does not move left or right Z motor, or it fails to trigger the endstop. -
correction, as i can't see both endstop states i sent home all from phone and monitored Endstops triggered from Settings>machine specific on the screen.
Ran homeall until it fails to home correctly.It shows endstop as triggered but motor (in this case left Z) keeps grinding and does not stop. It also does this in it's own random pattern on the right side.
Endstops are OMRON optical endstops, fed by 5V from the CONN_SD.
I set the endstops voltage jumper select on the Duex5 to 5V. The endstops on duex are now wired and fed from their designated pins. Same results no matter how i connect them. No matter what the endstop voltage jumper position is. -
after failed homing:
as said, on failed Z homing, while motors grinding and the endstop for Z showed as triggered. I hit emergency stop, board restarts. Endstop for Z shows as not triggered -
Any i2c errors being reported in M122 when it fails to home?
-
@jay_s_uk when i hit homeall, and again until it fails (it's like a 3rd or fourth attempt) it grinds until i hit emergency stop.
Running m122 right after restart gives:=== Diagnostics === RepRapFirmware for Duet 2 WiFi/Ethernet version 3.1.1 running on Duet WiFi 1.02 or later + DueX5 Board ID: 08DGM-9T6BU-FG3SN-6J9F6-3SN6L-KUWVG Used output buffers: 3 of 24 (18 max) === RTOS === Static ram: 27980 Dynamic ram: 97812 of which 44 recycled Exception stack ram used: 264 Never used ram: 4972 Tasks: NETWORK(ready,348) HEAT(blocked,1224) DUEX(suspended,160) MAIN(running,1816) IDLE(ready,80) Owned mutexes: WiFi(NETWORK) === Platform === Last reset 00:00:14 ago, cause: software Last software reset at 2020-11-09 12:27, reason: User, spinning module GCodes, available RAM 4700 bytes (slot 0) Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0441f000 BFAR 0xe000ed38 SP 0xffffffff Task MAIN Error status: 0 MCU temperature: min 35.3, current 35.8, max 36.2 Supply voltage: min 24.1, current 24.2, max 24.3, under voltage events: 0, over voltage events: 0, power good: yes Driver 0: standstill, SG min/max not available Driver 1: standstill, SG min/max not available Driver 2: standstill, SG min/max not available Driver 3: standstill, SG min/max not available Driver 4: standstill, SG min/max not available Driver 5: standstill, SG min/max not available Driver 6: standstill, SG min/max not available Driver 7: standstill, SG min/max not available Driver 8: standstill, SG min/max not available Driver 9: standstill, SG min/max not available Date/time: 2020-11-09 12:28:02 Cache data hit count 23635152 Slowest loop: 6.31ms; fastest: 0.13ms I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0 === Storage === Free file entries: 10 SD card 0 detected, interface speed: 20.0MBytes/sec SD card longest read time 1.1ms, write time 0.0ms, max retries 0 === Move === Hiccups: 0(0), FreeDm: 169, MinFreeDm: 169, MaxWait: 0ms Bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1 === AuxDDARing === Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1 === Heat === Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1 -1 -1 === 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 Daemon is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty. === Network === Slowest loop: 15.71ms; fastest: 0.00ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions HTTP sessions: 1 of 8 - WiFi - Network state is active WiFi module is connected to access point Failed messages: pending 0, notready 0, noresp 0 WiFi firmware version 1.23 WiFi MAC address 84:f3:eb:83:45:0d WiFi Vcc 3.43, reset reason Unknown WiFi flash size 4194304, free heap 23352 WiFi IP address 192.168.0.125 WiFi signal strength -48dBm, reconnections 0, sleep mode modem Socket states: 0 0 0 0 0 0 0 0 === DueX === Read count 1, 4.07 reads/min
so, i'd say no.
-
@Phaedrux said in My quad carriage machine is failing on Tools. AGAIN.:
;Mapping drives M584 X0 Y2 Z5:6 U1 V3 W4 ; Extruder mapping M584 E7:8:9:10 ; Extruder mapping
I think we've defined too many drivers, haven't we?
5 on the duet, 5 on the duex. 0-9 for 10 total, Driver10 doesn't exist.So you have both Z motors and 3 extruders on the Duex? And XYUVW on the Duet?
When you test the endstops individually and check them with M119 they all work and match the expected axis?
-
Yes @Phaedrux, all endstops work at mapped axis.
It has 11 motors, so there is motor 10 since you count from 0. not sure how would i count and set them otherwise?
(5) XYUVW is on duet
(2) Z1 and Z2 are on duex
(3) Then there are 3 extruders at motors 7,8,9
(1) and the 4th extruder is external wired to CONN_LCD5+2+3+1=11
-
@MaracMB said in My quad carriage machine is failing on Tools. AGAIN.:
(1) and the 4th extruder is external wired to CONN_LCD
I didn't see you you were using an external driver as well.
-
Does homeZ by itself work? G28 Z
-
@Phaedrux yes. But with occasional “glitching” as described.
-
One thing I can think of to help narrow down the issue is to change over the motor mappings to have the Z motors on the Duet and move 2 of the carriages over to the Duex. If the problem homing moves to the motors on the Duex then we can be reasonably certain it's a comms issue between the duex and duet.
-
@Phaedrux this was already done. Having Z motors on duex instead of second and fourth X axis got me to here.
-
@MaracMB have you managed to isolate whether it is endstop related or motor related?
I'm wondering if you could keep the Z motors on the Duex, but swap the endstops to the Duet? Not sure if there's any firmware/hardware limitations to stop you? I know RRF3 gives you some more freedom...
Equally, have you tried swapping either the motor or endstops to different drivers/pins on the Duex?
Might give some indication of if it is comms or a hardware/board issue.
-
@engikeneer i suspect it’s endstop related because on a single color print the layers are perfect and motors in question move nicely.
Can’t use just the Duet board for the endstops as there are 7 endstops needed for movement.
I will try moving and remapping the endstops if it’s something board specific
and also swap the PSU, but doubt that will do any difference. Will see.
If that does not work, i’ll revert to v2 firmware and see if that does any good.Optical enstops is what i like due to accuracy and lack of mechanical clicking. But maybe these Omrons aren’t best choice for duet as they are normally closed and need inverted logic... not sure why it works on everything else.
It is just that i got to 99%, started planing a kit, parts sourcing and suppliers, BOM list for DIY’ers, but having such a glitch is unacceptable and stopped my work.
Troubleshooting this little glitch is taking more time than getting all the way to here.
-
After almost giving up with this, i reverted to RRF 2.5.1
I suspect that something is wrong with having current versions of RRF3 in duet2 board. While i was unable to find a reason for homing glitches, i did experience slight temperature fluctuations of about +-0.2 C. Almost as there was a noise in the readings. I first suspected suboptimal PID tuning, but the fluctuations were there even at reboot, heaters in idle and at room temperature.
And that actually was the only thing that seemed wrong and gave it away. M122 said nothing.
Many have advised, not a single thing helped.
I have rewired everything 3 times (A LOT OF WIRING), fluctuations persisted on all thermistors.
Having rerouted the cables to boards, not a single thread crossed a ribbon cable between the Duet and Duex. Nothing changed.
I have disconnected everything and only kept VIN power and bed thermistor Still, fluctuation and glitches persisted.
This behaviour (homing twitches and temperature redings noise) was observed on all RRF3 versions.
Not a single variation of config.g did any good.Then, i reverted to 2.5.1
Temperature readings are now stable, slowest i2c loop is well under 5ms. I have no doubt the occasional homing glitches experienced are also gone. will test this today, but i am very optimistic.
So i guess RRF3 is just not made (well..?) for duet2 boards.
With reverting to RRF2 I will loose conditionals, one axis with two endstops homing, flexibility with connecting stuff, new PID... but i can live with that if the machine at least works as expected and i can print with it.
It is sad that this took so long. it is not that i was the only person using RRF3 with duet2.
-
@MaracMB said in My quad carriage machine is failing on Tools. AGAIN.:
I have no doubt the occasional homing glitches experienced are also gone. will test this today, but i am very optimistic.
Please let us know what you find.
-
This is a long thread and various things have been changed/reported. I think the problem you are having is that when using RRF3, the axes that use endstop switches connected to the DueX5 don't always home reliably. Is that correct?
I have it on my list to add code re-establish the endstop states on the DueX immediately prior to any homing move. I will try implement this in time for RRF 3.2beta5.