All Positions "n/a" after"G30 Z-99999" ?
-
Hi *,
Duet 3 Mini 5+ Mini5plus 3.5.2 Duet 3 Expansion TOOL1LC TOOL1LC 3.5.2 Duet WiFi Server n/a 2.1.0 Duet Web Control DWC 3.5.2
I see this:
After I did a "G30 Z-99999" in my homing routing. I think that this is a unwanted behaviour.
I'm not 100% sure where that comes from:M558 P8 H10 A0 S0.000 F700:120 C"^121.io2.in" T8000 B0 R0
Maybe from the A0 but anyway, the behaviour is not nice. Y is at 0 after I homed X than, but is is actually at 127.2. So somethings seams to run wild when I use A0 at M558.
Why did I try A0? I try to find a way to make the probe to probe one once and not two times what it does when I use A1.
Any other idea how to make the tool to probe the bed only once? <edit: I just learned that only one parameter for "F" will do that>Cheers, Chriss
-
@Chriss What are you expecting the G30 Z-99999 to do? I'm not sure that using Z-99999 is actually valid without a P parameter (though I'd hope it would not mess things up, but the G30 command is very complex internally).
-
Do not confuse me more an more here. I use "G30 Z-999999" since almost 5 years now to home my z. On more than 5 printers now, do not tell me that this is not the way to go. And you may want to review the examples in the the G-Code dictionary, there are at least 4 examples without a "P".
Let me explain my situation a bit more:
I have a file which is called "activate_z_probe.g", I call this file at various steps with various parameters. Her is how it looks:
M558 P8 H{global.probe_settingsH} A{global.probe_settingsA} S0.003 F{global.probe_settingsF1}:{global.probe_settingsF2} C"^121.io2.in" T8000 B0 R0 G31 X0 Y0 Z{global.probe_offset} ; z-offset for the Klicky only
So I can set the variables for H, A and the two Fs whenever I need other values and re-execute the script to change the behaviour of probing. (Some settings are static for sure, like the probe type and the IO.) Anyway, long story short:
We agree that we want as precise measurement as we can on Z. But we pay that with the reduction of speed. So I want to probe only once very fast to get a ruff estimation where the bed is. (Voron 2.4) I have a other variable where I store the gantry level status in, so I do a quad gantry level next, if it is not yet leveld. Next is I want to do a very precise measurement. Or I do the precise IF the gantry was leveld before.This looks like that at the moment:
; Home Z if not yet homed if !move.axes[2].homed M98 P"/macros/print_scripts/goto_center.g" set global.probe_settingsH=30 set global.probe_settingsA=0 ;M98 P"/macros/print_scripts/activate_z_probe.g" M558 P8 H30 A1 F1200 C"^121.io2.in" T8000 B0 R0 ; Configure the probe for a simple home finding G30 Z-99999 ; Make the QGL if it has not done yet if global.qgl_done = false M98 P"/macros/print_scripts/do_qgl.g" set global.sb_leds="homing" ; Do the z-home again to be on the safe side: set global.probe_settingsH=2.0 set global.probe_settingsA=30 M98 P"/macros/print_scripts/goto_center.g" M98 P"/macros/print_scripts/do_z_probe_probe.g"
You see that line 6 is not active anymore because the S parameter makes the probe always touching the bed twice, which is not a surprise because of "S". BUT of often it will to to reach "S" is controlled by A, so my idea was to keep S and reduce A to stop touching the bed twice at the first run. This ended up in the screenshot I showed and that can not be the expected result.
Again: I do not say that my approach was the right one! But the behaviour is not correct to. It should reject a "A0" saying: "Value to low", or it should not confuse the homing state as it does at the moment, don't you think so?
Btw: The A is is bit confusing too:
The docu says:Annn Maximum number of times to probe each point, default 1. Maximum, as of 2.03, is 31. Setting M558 A parameter to anything >31 set it to 0 instead of to 31
OK, so I can probe from 0 to 31 times. Cool, but it probes 2 times when "Sxxx" in a combination with "A1" is in place. I know, that does not make much sense, why should I try to be below a tolerance when I probe only once? But this is exactly my usecase. I think that S is overwriting "A1" here and probes at least two times, that is logical when you keep in mind that the behaviour is perfect (one probe move only) when "S" is not configured at all.
What I do not understand is A0 than, why would somebody wants to have A0? Do not do execute G30 when you do not want to probe at all.My learning is: There is no combination of A and S you can have to move the probe only once. The only way I found was to execute again M558 without the S parameter, that is what I did to work around. My intentions was only to tell you about the loophole that you can set the axes into this strange status. There may be a good reason for that but it feels to me more like a unexpected behaviour.
Sorry for the long text, I tried to make myself as clear as possible
Cheers, Chriss
-
@Chriss said in All Positions "n/a" after"G30 Z-99999" ?:
you may want to review the examples in the the G-Code dictionary
I just have, as far as I can see there are no examples that show G30 without a P parameter but also with a Z-99999 parameter.and the only mention of Z with a -9999 (or lower) parameter is in the section "G30 with a P parameter".
I'm not saying that G32 P-99999 is causing a problem, just that as far as I know G30 P-99999 is not really a valid combination. Given the complexity of G30 it is probably best to avoid undocumented combinations.
As to your probe doing two "taps" when you have the A parameter set to 1 I think this was actually being caused by you also having two values set using the F parameter. If you have two F values set and the second F value is lower (slower) than the first then G30 will always perform an initial fast probe followed by one or more slow probes with only the slow probes being used as part of the actual measurement.
I think this action is documented correctly. From the M558 docs:
From RRF 3.3 you can provide two F parameters instead of one, where the second is lower than the first, for example F1000:500. When doing a plain G30 command, an additional probe will be done using the first speed to establish the approximate bed position, before one or more additional probes are done using the second speed. The first speed will not be used when probing at a defined point or when mesh bed probing.
-
@Chriss is this a delta printer? When a coordinate is shown as n/a it usually means that the positions of the motors computed by RRF do not yield valid Cartesian coordinates.
-
@Chriss what firmware version is this on?
Having two F parameters in your M558 means it will always probe twice, once fast, once slow. I think the first probe result is ignored.
As far as I’m aware, using G30 … Z-99999 should only be used with a P parameters. At best, it’s being ignored, at worst, it’s causing unintended consequences, eg n/a on all axes. Ideally if it’s used incorrectly it should report an error. One for dc42. If this is a recent change in behaviour, it may be linked to this change in 3.6.0-alpha.5+1:
The XY positioning move of a G30 command with P parameter was not segmented as it should be, which could result in incorrect movement on delta printers (fixed in the -alpha.5+1 main board binaries)
If there are examples of using -Z99999 without P, can you post a link? As far as I can see there aren’t any in the GCode dictionary entry: https://docs.duet3d.com/User_manual/Reference/Gcodes#g30-single-z-probe
I’m not sure what setting M558 … A0 does, or why it is allowed.
It would be good to clarify the above for the documentation.
Ian
-
@dc42 Nope is is a CoreXY.
-
@Chriss what firmware version is this on?
The very latest stable.. what is that 3.5.2? I just downgraded from Alpha which was not very much a joyride.
Having two F parameters in your M558 means it will always probe twice, once fast, once slow. I think the first probe result is ignored.
Yes, all is fine but still, it makes not much much sense how it is at the moment. What you say is "A1 and F49:49" would make the probe probe twice as we have learned. But Why? I have a max I move why would I overrule it be the speed parameter? That sounds a bit odd. You saw it in my usecase. I was totally confused when I saw my printer ignoring the A1 just fo none obvious reason. So I ended in this confusion the "A0" produced.
As far as I’m aware, using G30 … Z-99999 should only be used with a P parameters.
That is totally new to me, and that can not be the case so long, I understood it more like a optional thing.
If there are examples of using -Z99999 without P, can you post a link? As far as I can see there aren’t any in the GCode dictionary entry: https://docs.duet3d.com/User_manual/Reference/Gcodes#g30-single-z-probe
Four out seven I would say.
I’m not sure what setting M558 … A0 does, or why it is allowed.
I guess that it is a glitch... That is all. It makes no sense at all , specially when not when it has no effect when you have F1:2. The A1 makes sense to me, when you have a guy like me who wants a single top at the fest place only. And here is the behaviour of F not ideal..
Btw: is it possible to use the same probe twice? So two M558 lines sharing the io settings than. That could help.
Cheers, Chriss
-
@Chriss said in All Positions "n/a" after"G30 Z-99999" ?:
Four out seven I would say
None of those examples show the use of Z-9999? As I mentioned above the only documented use of Z with a special value of -9999 (or below) is in the section "G30 with a P parameter"
The use of two (different) speeds supplied via the F parameter adds an extra "fast" probe to the probing process, this first probe is always discarded (as it it will probably be less accurate) and the number of probes as defined by the A parameter are then performed. The reason for this is to allow a fast initial move to get the probe near to the target (which is not always the bed) followed by the actual probing movements (which are performed from the dive height). This typically allows for a faster probing operation when the probe is a long way from the target. Makes sense to me.
If you do not want this initial fast probe then just specify a single value to the F parameter in a M558 setting. I'm fairly sure you can change the F and A settings without needing to specify the other M558 parameters.
-
@gloomyandy said in All Positions "n/a" after"G30 Z-99999" ?:
@Chriss said in All Positions "n/a" after"G30 Z-99999" ?:
Four out seven I would say
None of those examples show the use of Z-9999? As I mentioned above the only documented use of Z with a special value of -9999 (or below) is in the section "G30 with a P parameter"
Oh yes, that is true, we misunderstood us here.
The use of two (different) speeds supplied via the F parameter adds an extra "fast" probe to the probing process, this first probe is always discarded (as it it will probably be less accurate) and the number of probes as defined by the A parameter are then performed. The reason for this is to allow a fast initial move to get the probe near to the target (which is not always the bed) followed by the actual probing movements (which are performed from the dive height). This typically allows for a faster probing operation when the probe is a long way from the target. Makes sense to me.
Yes, all of that makes sense to me too. The problem is that you have two parameters colliding here. F1:2 specifies at least two probing moves, and a A1 which wants only one probing move. The scope may be different, I understand that A is the hard stop for the S parameter. But this is not fully logical to me than too. I would expect that the A has an impact of the 2nd F parameter only. So you have one fast move to have a "guess" where the end is and than two ore more precise moves till you have a low derivation.
Long story short, what I would not expect in any of this cases that t he axis run into a "n/a" state after one probe when you do a "A0" which I tired. It may helps to simply deny the use of "A0" or understand "A0" as: "Te user do not want to reprobe" and ignore the 2nd F parameter. Putting the axis inIf you do not want this initial fast probe then just specify a single value to the F parameter in a M558 setting. I'm fairly sure you can change the F and A settings without needing to specify the other M558 parameters.
I have learned in the past that this is/was not a good idea. I had some strange behaviours when I executed M558 without the full set of wanted parameters. I think that I lost some of the parameters than from time to time.
Why should it make any difference to the behaviour of the probing move whether I specify a P when I use Z-99999? As far as I remember was Z-99999 supported before the P parameter was implemented. I may have a wrong understanding but I think that I need to use the Z-99999 at every other G30 if Z is already homed, or is this the wrong understanding already?
In my world is there no relation between P and Z-99999 but I may be wrong.Cheers, Chriss