Not sure if this is a bug or intended behaviour
-
As title (but if it's intended behaviour, it's very strange).
Short version - if 6 extruders are defined but only 4 are assigned to tools, then no extruders will move when commanded to do so through DWC - whether that be using "mix" or individual extruders. If extrusion is attempted, the motor will vibrate slightly as if the motor current is a fraction of what it should be.
Long version. I had a 6 input hot end but have just fitted a 4 input version. I thought I could simply change my M584 from .....E2.0:2.1:2.2:2.3:2.4:2.5 to E2.0:2.2:2.3:2.5 (i.e leave out drives 2.1 and 2.4 as these are the physical extruders which are not connected to this hot end). Then define my tools to only use drives 0 to 3 inclusive, rather than 0 to 5. However, when I tried to load filament by extruding from each drive using DWC, nothing happened apart from a slight vibration which can just about be felt with a finger tip. After checking all the obvious stuff and ensuring that I had good Vin on that board, I tried commenting out the M569 commands for the "unused" extruder drives - same result - no extrusion. Eventually, I removed all references to the unused extruders from M92 (steps per mm), M566 (jerk), M203 (max speed), M201 (accels), M906 (motor currents) and M350 (micro-stepping) and that did the trick - extrusion happened as expected. To be clear, I still have those commands but with only 4 sets of extruder parameters - not 6.
I'm not sure which of the above commands was the offending one, or if they all are, but I can add them back in one at a time if that's any help.
Firmware version is 3.4.3+. Hardware wise, this is with a 6HC as an expansion board and this is the board to which the extruders are connected.
@DC42, Is this intended behaviour? If not, I'm happy to run any tests and report back via the other comms channel.
-
@deckingman did you try running M98 P"config.g" when it wasn't working, to check for errors in config.g? If you did, I think you may have seen some "array too long" errors.
-
@dc42 said in Not sure if this is a bug or intended behaviour:
@deckingman did you try running M98 P"config.g" when it wasn't working, to check for errors in config.g? If you did, I think you may have seen some "array too long" errors.
Not specifically. But I edited the file on the machine and when I saved it, I was prompted to start which I duly did. I also cycled the power a few times during my fault finding exercises and never noticed any errors.
But why should I have array errors? The extruder drives are all physically in place and connected so they all exist. It's just that I've only assigned 4 of the 6 available extruders to tools.
-
@deckingman you've only defined 4 extruders (not 6) in M584, so arrays of E values should have 4 entries (or 1 entry which will be replicated to all extruders).
-
@dc42 said in Not sure if this is a bug or intended behaviour:
@deckingman you've only defined 4 extruders (not 6) in M584, so arrays of E values should have 4 entries (or 1 entry which will be replicated to all extruders).
Understood. Your comment in brackets is interesting. For all these years I've been using the format Enn:Enn:Enn etc for things like jerk, max speeds, accels, motor currents etc. Are you saying that I could simply use one value where the extruders are identical?
Ref extruder drive mapping, the extruders are physically mounted in two banks of 3 with the centre ones being higher up than the outer ones. For this 4 input hot end, I want to only use the lower (outer) ones which means leaving out the inner ones of each bank. The reason for removing two of the drives from M584 was so that the primary extruder for Tool 0 would be drive 0, Tool 1 is drive 1, tool 2 is drive 2 and tool 3 uses drive 3. Had I left M584 as it was, tool 0 would use drive 0, but tool 1 would use drive 2, tool 2 would use drive 3 and tool 3 would use drive 5 which isn't very logical. But thinking about it some more, I guess I could leave all 6 extruders defined but simply change the driver order in M584. The 6 input config uses the form E2.0:2.1:2.2:2.3:2.4:2.5. If I change that to be E2.0:2.2:2.3:2.5:2.1:2.4 then extruder 0 would use the motor connected to driver 0, extruder1 would be the motor connected to driver 2, extruder 2 would use the motor connected to driver 3 and extruder 4 would use the motor connected to driver 5 would it not? And the unused extruders would use drivers 2 and 4.
So then I could leave the config as is, with parameters for all 6 extruders, and configure tool 0 to use drive 0 (primarily), tool 1 would use drive 1, tool 2 drive 2 etc. And leave extruders 4 and 5 unassigned to any tools. That would work would it not?
-
@deckingman perhaps an even simpler way is to leave the M584, M92, M203 etc. commands with all 6 extruder configured, and change the M563 tool definitions to use only the extruders that you want them to. You don't have to use consecutive extruder numbers in the M563 D parameters.
-
@dc42 Yes but if I did that, tool 0 would use extruder 0 as its primary extruder which is fine, but tool 1 would use 2, tool 2 would use 3, and tool 3 would use 5 which isn't very logical. But then again, swapping the order of drivers in M584 isn't logical either. It's complicated by the fact that I still have two, 6 input hot ends as well as a dual input one and a single input one and I swap between them and use M505 to change configs. Not sure which method to use which will be the most consistant across my various configs. I'll have to give it some thought.......