Disable Bed Compensation (M561) disabled / greyed out
-
Hi
On the Dashboard under Compensation & Calibration, the field "Disable Bed Compensation (M561)" is constantly disabled. As far as I understand, ones one does a calibration with G32 ( not a Mesh Compensation), this field should be active and one should be able to deactivate the previous calibration.
Screenshot 2023-04-04 at 13.34.55.pngLooking into the source code, under MovementPanel.vue, this field is disabled if: "!move.compensation.type || move.compensation.type.indexOf('Point') === -1". So if the mesh grid compensation is active, this field should be available. But even then, the field is disabled because ".indexOf('Point')" always returns -1, because type can only be "none" or "mesh". This behaviour is probably wrong anyway, because this button corresponds to the G32 calibration and not to the mesh compensation. Or am I not seeing something here? So if after calibration the type would be set to "Point", it would work but then again as far as I understand, this would be in the wrong category. So one needs a property "Type" under move.calibration, not move.compensation, as this are two different categories, right? And to be completely correct, shouldn't it say something like "Disable Bed Calibration" to differentiate between this and mesh compensation?
So with the proper values in the object model, this will be an easy fix. But as long as they are not available, one can't do anything about it.
I have updated the system today and run Duet Web Control 3.4.5. I use Duet3D with a Delta 3D printer.
Thanks very much in advance
-
@Sevimuelli whats probably misleading is that M561 and G29 S2 do the same thing.
I would really be proposing that one got removed.so to sum up, M561 is only enabled when a mesh is loaded with G29
-
@Sevimuelli G32 runs bed.g, which is used for delta calibration, or bed levelling. This is not compensation; it’s getting the bed plane level to the XY axes. Mesh compensation then runs after that, compensating for any unevenness in the bed plane.
The only other compensation is Orthogonal axis compensation https://docs.duet3d.com/en/User_manual/Tuning/Orthogonal_axis_compensation
I think if this is applied, it also counts as a compensation type, but I might be wrong.Ian
-
@droftarts @jay_s_uk Thanks for the replies. Yes I understand how it should work and what's the difference between calibration and compensation. The issue here is that this button can never be enabled because it is only enabled if the object property "move.compensation.type" is set to "Point". That's how they have done it in DuetWebControl:
<v-list-item :disabled="!move.compensation.type || move.compensation.type.indexOf('Point') === -1" @click="sendCode('M561')"> <v-icon class="mr-1">mdi-border-none</v-icon> {{ $t('panel.movement.disableBedCompensation') }} </v-list-item>
But if you check the source code of reprapfirmware, the type will only ever be set to either "none" if no mesh bed compensation ( no matter what about the calibration) or to "mesh" if a mesh bed compensation is active. There is no option for "Point".
So the main issue is that right now you have a button which never can be active. It is not possible. Yeah sure one option is to just remove this button, but in my opinion, it would be really helpful to have some sort of indication if a calibration is active or not. Use this button for what is originally was intended for.
I would make a new issue on GitHub, but I'd like to know what it's actually about this button. I could even make a pull request for DuetWebControl, it's an easy fix. But for this to work one needs a corresponding property in the object model and to be honest, I feel less comfortable changing something in the reprap firmware.
Sevi
-
@Sevimuelli the button activates if you load a mesh though...
You also can't disable a bed calibration -
@Sevimuelli This does seem to be a bug in DWC 3.4.5, but does seem to have been fixed in the DWC 3.5 beta version I'm running. This is DWC 3.4.5:
This is from DWC 3.5.0-beta.3+pre2
Thanks for pointing it out!Ian
-
@droftarts ah, I'm running 3.5b2.
Still seems a bit pointless when both buttons do the same thing. You can't disable a compensation -
@jay_s_uk Yes, M561 and G29 S2 do the same thing as far as I'm aware. I can't remember if it's different on a delta, but I don't think so. Also, M556 Orthogonal Axis Compensation (or axis skew compensation) doesn't count as a 'compensation in use' when set, and isn't cleared by M561 or G29 S1. I'll ask @dc42 if that is intentional.
@Sevimuelli I think the 'Point' compensation might be the old 'bed probing using G32' method. This is now obsolete, and I think support for it has been removed from the firmware. The only reference to it now is on the old Dozuki pages (which may not last too much longer); see
http://web.archive.org/web/20221202023413/https://duet3d.dozuki.com/Wiki/Setting_up_automatic_probing_of_the_print_bed#Section_Obsolete_informationIan
-
@droftarts Thanks for the explanation! Ok now it makes sense because I am running DWC 3.4.5 and it never worked.
I have to agree with @jay_s_uk that it's a bit pointless if both do the "same" thing. Looking at the dev-version, both buttons are now active only when the mesh compensation is active. And yes you can disable the bed calibration as it just resets the bed probing as described in the G Code reference but for this to be useful it needs to be active as soon as a calibration is active. But then again you can just home the printer and it has the same effect. Don't get me wrong but I feel like now it's more confusing than helpful. But that's not my place to decide.Sevi
-
@Sevimuelli I agree that the "Disable bed compensation" button should be removed. One for @chrishamm.
-
@dc42 @Sevimuelli Done.