Using variables with M584 doesn't work
-
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.
-
@carlosr No, it does not.
-
When is the use of arrays expected to be implemented in SBC mode? In 3.4 version?
This is what we need to be able to fully operate our machine with the dynamic selection printheads.Why are there such differences in functionality between standalone and SBC with the same version?
@CarlosR tried to make it work with other methods but a lot of functionality is lost. (By the way, he's in our developing team).
Would the use of array variables work in version 3.3 in standalone mode, or would it not work either?
-
@marcossf The upcoming version v3.4-b2 will support array expressions in the form
M584 E{123,456,global.paramXYZ}
both in standalone and SBC mode. The reason this already worked in standalone is because RRF parses text-based G-codes whereas DSF in SBC mode reads them and then wraps them into binary format for performance reasons.