My quad carriage machine is failing on Tools. AGAIN.
-
@dc42
it's a dual IDEX. Carthesian style. Two X gantries, both double carriages. One gantry in front, second gantry in the back of Z towers.X is front left
U is front right
V is back left
W is back rightA is second Z motor.
-
-
@dc42 do you need any more info? Should i downgrade firmware? As mentioned I did try 3.1 and didn’t work. If i have to go with RRF 2.05 then this would really screw thing up for future plans i have.
Weird part is, i am experiencing iterations of these glitches if i rewire stuff. But anyway i wire it, something is messed up. It has mismatched tools and it homes unreliably in any combination.The only “unusual” is that i have Y motor on Z driver and Z driver for Y as i would like (waiting for parts) to have a dual bed with dual motor that would enable me to utilize the power of quad X to it’s full potential.
If it turns out this can’t be driven with Duet2 it would be a real bummer.
Thank you.
-
Can you share your other config files as well? Tool change, homing, bed, etc.
-
What is the current problem? Homing not working reliably, or tools not moving as they should?
I suggest you proceed as follows:
- Check that none of your homing files contains a G1 command that doesn't have the H1 or H2 modifier on it.
- Get homing of the individual axes working reliably, when no tool is selected. This tests the motor movement directions, and partially checks
- Check that when no tool is selected, homing all also works reliably.
- Check that after homing, if you select a tool then that tool moves correctly when you command X and Y movement. Repeat for all 4 individual tools.
- Check that with one of the tools selected, each axis still homes reliably.
If one of those steps fails, let us know which step it was and in what way it failed.
-
Thank you @Phaedrux ...
here are the other files.
homeall:
G91 G1 Z5 F6000 H2 G1 X-400 Y-450 U400 V-400 W400 F4800 H1 G1 X5 Y5 U-5 V5 W-5 F4200 G1 Y-10 F360 H1 G1 X-10 F360 H1 G1 U10 F360 H1 G1 V-10 F360 H1 G1 W10 F360 H1 M98 Phomez.g M300 S2210 P50
homex
G91 ; relative positioning G1 Z2 F6000 H2 ; lift Z relative to current position G1 H1 X-320 F1800 ; move quickly to X axis endstop and stop there (first pass) G1 X2 F6000 ; go back a few mm G1 H1 X-10 F360 ; move slowly to X axis endstop once more (second pass) G1 Z-2 F6000 H2 ; lower Z again G90 ; absolute positioning
homeu
G91 ; relative positioning G1 Z2 F600 H2 ; lift Z relative to current position G1 H1 U320 F1800 ; move quickly to X axis endstop and stop there (first pass) G1 U-2 F6000 ; go back a few mm G1 H1 U4 F360 ; move slowly to X axis endstop once more (second pass) G1 Z-2 F6000 H2 ; lower Z again G90 ; absolute positioning
homev
G91 ; relative positioning G1 Z2 F6000 H2 ; lift Z relative to current position G1 H1 V-320 F1800 ; move quickly to X axis endstop and stop there (first pass) G1 V2 F6000 ; go back a few mm G1 H1 V-10 F360 ; move slowly to X axis endstop once more (second pass) G1 Z-2 F6000 H2 ; lower Z again G90 ; absolute positioning
homew
G91 ; relative positioning G1 Z2 F600 H2 ; lift Z relative to current position G1 H1 W320 F1800 ; move quickly to X axis endstop and stop there (first pass) G1 W-2 F6000 ; go back a few mm G1 H1 W4 F360 ; move slowly to X axis endstop once more (second pass) G1 Z-2 F6000 H2 ; lower Z again G90 ; absolute positioning
homey
G91 ; relative positioning G1 Z5 F6000 H2 ; lift Z relative to current position G1 H1 Y-310 F1800 ; move quickly to Y axis endstop and stop there (first pass) G1 Y5 F6000 ; go back a few mm G1 H1 Y-310 F360 ; move slowly to Y axis endstop once more (second pass) G1 Z-5 F6000 H2 ; lower Z again G90 ; absolute positioning
homez
G91 ; relative positioning G1 H2 Z2 F6000 ; lift combined Z 2mm relative to current position M584 Z1 A4 P7 ; split Z to Z and A and show all 7 axes in the interface G1 H1 Z-405 A-405 F1200 ; move Z and V down independatly until the endstopa are triggered G1 Z2 A2 F600 G1 H1 Z-5 F60 G1 H1 A-5 F60 M584 Z1:4 P7 ; combine Z and V and show only 6 axes in interface G1 Z5 F1200 ; lift both Zs to 5 G90 ; absolute positioning
I don't use ABL since it's pointless, machine is manually levelled and adjusted so all 4 heads can print in quad. Or so it did. So bed.g makes no point, as obvious from config, but still:
M561 ; clear any bed transform G29 ; probe the bed and enable compensation
For toolchanges, stuff is disabled until it works again...
tfree0.g
;G1 E-12 F3600 ; retract 12mm G91 ; relative axis movement G1 Z2 F500 ; up 2mm G90 ; absolute axis movement G28 X ; park the U carriage home - slow ;M106 S0 ; turn off print cooling fan
tfree1.g
;G1 E-12 F3600 ; retract 12mm G91 ; relative axis movement G1 Z2 F500 ; up 2mm G90 ; absolute axis movement G28 U ; park the U carriage home - slow ;M106 S0 ; turn off our print cooling fan
etc.
post0.g
M106 R2 ; restore print cooling fan speed M116 P0 ; wait for tool 0 heaters to reach operating temperature G28 X ;G1 E12 F3600 ; extrude 12mm
post1.g
M106 R2 ; restore print cooling fan speed M116 P1 ; wait for tool 1 heaters to reach operating temperature G28 U ;G1 E12 F3600 ; extrude 12mm
etc.
preN.g scripts are empty.
-
@dc42 axes move and home as they should. Tools are mismatched.
again:
Tool 1 that selects but moves carriage that should be tool 3
Tool 2 that selects but moves carriage that should be tool 1
Tool 3 that selects but does not move anything!- posted one comment up for @Phaedrux . I think it's set corectly
- checked. works.
- Homeall works 85% of the time. 15% of the time U does not home. But homes when i send homeall again.
- this is the problem. i hope you understand now. It does not move the right carriage. T0 is ok, the rest is chaos.
- this prettymuch can't be done because of the issue we are trying to solve.
-
@dc42 just to be clear, this was working until saturday. Worked as, it was working, quad was working, tools T1 and T3 needed to have swapped motors mapped for it to work correctly but it did work. It was showcased on E3D facebook page god damnit. It is not that i am making this stuff up. The multicolored prints were showcased on my private Facebook group where 110 people follow and see it. Btw, MarX group. Welcome.
The problem was unreliable homing of tools in between multicolor prints, that resulted incrappyfailed prints. And the events of unreliable homing got increasingly more frequent until it came to a point where it failed so much it stopped the print.So today i reverted to firmware 2.05, then to 3.0, then to 3.1, then to 3.2b1, then to 3.2b2, then reset the config to remap the axes....
NOTHING helped. it is just messed up in different patterns regarding tools. Axes home and work as should. But tools don't.
-
this is only a not so distant memory. The time i miss
-
the topic was first opened here:
https://forum.duet3d.com/topic/19312/duet2-axies-and-tools-motor-mapping-mismatch/2?_=1604425183271 -
11th stepper is external, simple expansion breakout board (just as shown somewhere in the Wikis...) with original watterott tmc2209 until i get something better. Set to 16/256 microsteps and adjusted the jumpers accordingly for configuring it. That, motor 10 runs extruder for T3.
The tools do extrude correctly btw. If that helps. So only definitions/mapping for X carriages have gone crazy.
-
@MaracMB That is an impressive machine and I can certainly see that debugging it won't be easy!
Might help if you post your config-override too for completeness
In your homeu and homew, you only step back by 4mm before doing the slow home, while everywhere else (homex, v, all) you step back by 10mm. Just wondering if that's not enough and you're getting some failed homings on U and W during your tool changes which is messing them up? Might also explain why it seems intermittent if you're just on the limit?
I've noticed that in your homez file, you don't re-hide your A axis, you only re-assign driver 4 to Z:
M584 Z1:4 P7 ; combine Z and V and show only 6 axes in interface
TBH, it could be over-complicating things as you don't need to split the axis to use multiple endstops for multiple motors in RRF3 any more:
https://duet3d.dozuki.com/Wiki/Bed_levelling_using_multiple_independent_Z_motors#Section_Axis_levelling_using_endstops
Just thinking it will remove one layer of drive mapping/assignments, homing etc from the equation.Other unrelated thing, in your config, you have set you motor microstepping at 32 with interpolation, but the duet doesn't support this - it's only 16 with interpolation
-
@engikeneer this project really was just a space/machinecount optimization that went it’s own way... i have much cooler stuff ready for this. But first things first.
On endstops i retreat only 4 mm because of optical endstops. Triggering that is perfect. 4 mm is more than enough. Config is working version so a lot is unfinnished. It still needs a lot work.
Splitting the axes for the Z... yes, i am aware of that possibility to optimize that but didn’t consider it a thing that would needed to be done.
The interpolation on 32 microsteps is on because it makes less whine. Not that i would need 256interpolation... 2660 arent the quietest of tmc’s.
-
@engikeneer the P7 parameter for axis visibility is there because i, when this thing gets resolved, will hide second Z axis (A). For now, i just set it to all visible, yet left for later change back to P6
-
RESOLVED
For anyone, that might experience such headache and stumbles upon this:
one maps the axes, not the motors to the tools. and you count the axes, not specify motors... -
I'm glad you solved it! Have you any suggestions on how we can improve the documentation to help others to avoid the same issues?
-
@dc42 well, it’s still RTFM thing i guess. But it may be nice to just copy paste that section with asigning axes to tools in “Creating a tool that uses just one carriage”.
The instructions later on, when defining ditto tools clearly state
‘’’ Note that axes are mapped in the order XYZUVWABC, where X=0, Y=1, Z=2, U=3 etc, not by driver number, so X0:3 means 'map axis 0 (X) and 3 (U) to X'.’’’But this is minor. The extent of frustration, optimization and learning one goes through may just be beneficial
So tools definitions solved, and properly understood, i have to check homing reliability now. That may still be an issue.
I am stripping
m120
M84 Prime.g
M121
From my toolchange post scripts to see if that helps with tools homing reliability. That’s the only thing that’s left i guess. If it won’t, i’ll nag on. -
i have re-set my toolchange scripts. It worked for a while.
After 2-3 hours, the 4th axies failed to home when tool was deselected.Error G0/G1
M120
G91
G1 X50 F6000
G90
M121Where does this come from ? This is not in my homing files, not in my toolchange files, nowhere.
My tfree file now look like :
G1 E-12 F3600 ; retract 12mm G91 ; relative axis movement G1 Z2 F360 ; up 2mm G90 ; absolute axis movement G28 X ; park the U carriage home - slow M106 S0 ; turn off print cooling fan
My tpost look like:
M106 R2 ; restore print cooling fan speed M116 P0 ; wait for tool 0 heaters to reach operating temperature G91 G1 X1 H2 G90 G28 X G1 E12 F1200 ; extrude 12mm
I thought it worked. But then it didn't.
Also, when i homeall , all tools home normaly.
But when i homeall via gcode file (G28), second tool does not home correctly.homeu.g :
G91 ; relative positioning G1 Z2 F360 H2 ; lift Z relative to current position G1 U320 F3600 H1 ; move quickly to X axis endstop and stop there (first pass) G1 U-2 F600 H2 ; go back a few mm G1 U4 F360 H1 ; move slowly to X axis endstop once more (second pass) G1 Z-2 F360 H2 ; lower Z again G90 ; absolute positioning
Homeall.g :
G91 ; relative positioning G1 Z2 F360 H2 ; lift Z relative to current position G1 X-400 Y-450 U400 V-400 W400 F3600 H1 ; move quickly to X and Y axis endstops and stop there (first pass) G1 X5 Y5 U-5 V5 W-5 F3600 H2 ; go back a 5 mm G1 Y-10 X-10 U10 V-10 W10 F360 H1 ; second pass M98 Phomez.g ; call homing script for Z axes G90
-
-
Is it the U and/or W axes that failed to home? If so, it is just one of those, or both of them?
Those endstop switches are the ones connected to the DueX5 board. Keeping those switches up to date relies on I2C communications between the Duet and the DueX along with an interrupt. A M122 report taken when this happens will provide data on the status of the I2C interface.