Using variables with M584 doesn't work
-
Hi all,
We are trying to make use of variables inside a M584 command for map the E drives dynamically like this:
M584 E{var.driverZero}:{var.driverOne}:{var.driverTwo}
and also
M92 E{var.stepsDriverZero}:{var.stepsDriverOne}:{var.stepsDriverTwo}
We need this because we are trying to autodetect different printheads that can be set in 3 different docks. So we detect (by using 2 microswitches in each printhead) in which dock is each printhead and we use this value to map the extrude drivers.
The commands don't work.
Any ideas about how to make it work?Thank you.
-
@carlosr which board and FW are you using?
-
@cosmowave Board: Duet 3 MB6HC
Firmware version: 3.3 -
I have the same issue and it's prior to variables, object model nodes also don't work
In standalone mode works as expected but not in SBC mode.Example:
-
@carlosr Do you have an extension board?
-
Perhaps you need to explain in more detail exactly what doesn't work (with more detailed examples).
I don't have multiple extruders, but a quick test of M92 produced thisBoard: Duet 2 WiFi (2WiFi)
Firmware: RepRapFirmware for Duet 2 WiFi/Ethernet 3.4.0beta1-inputshaping (2021-07-11)
Duet WiFi Server Version: 1.26If you are in fact using var, then the scope is only in that macro.
If you use globals then they can be (re)called "globally"
-
@owend I think the problem is when using ":" to concatenate different extruder drives. The command only detects the first value. When using only one value, without the ":" character, it works.
-
@owend said in Using variables with M584 doesn't work:
I don't have multiple extruders
The problem is the way multiple extruders are configured, i think DSF doesn't understand well the "M92 E--:-- " way of configuring them.
-
@cosmowave Yes, we have a 1LC v1 extension board.
-
@carlosr said in Using variables with M584 doesn't work:
@owend I think the problem is when using ":" to concatenate different extruder drives. The command only detects the first value. When using only one value, without the ":" character, it works.
Then you can write the commands in separate lines! Or not?
In the gcode-wiki is written:
In RRF3, M584 works the same way as in RRF2, with exception that on Duet 3 the driver on expansion boards are assigned with <board address>.<driver number>. -
@cosmowave said in Using variables with M584 doesn't work:
Then you can write the commands in separate lines! Or not?
No.
-
@cosmowave If you write the command in different lines, the first drive value is overwritten.
-
@ja ok... yes. M92 is not possible in single line.
-
@cosmowave Can it be that there is a problem of the format of your variable?
e.g. the variable is a string, but M92 needs a "float"... -
@cosmowave as @JA said, i think DSF doesn't understand well the "M92 E--:-- " syntax when using variables.
-
-
@carlosr Array expressions aren't yet supported by RRF in SBC mode but something like
M584 E{123:{myVar}}
should be already passed to RRF correctly. I'll discuss with dc42 how we can add support for this. -
@chrishamm I declare 3 variables and assign them 3 different values (integers):
var driverZero = 20
var driverOne = 21
var driverTwo = 22Tried:
- M584 E{var.driverZero}:{var.driverOne}:{var.driverTwo}
- M584 E{{var.driverZero}:{var.driverOne}:{var.driverTwo}}
- M584 E20:{var.driverOne}:{var.driverTwo}
And none of them worked. The following commands show this error message:
-
@carlosr As I said RRF does not support array expressions in SBC mode yet, although
M584 E{{var.bla}:..}
would be passed through correctly. Before this can work further improvements in RRF are required. -
I think I'm not understanding correctly (i'm not an english speaker).
Do you mean that M584 E{{var.bla}:..} should work right now (in 3.3 version)? Because it isn't.