M500 saves
-
In the specific case of G10, G54, etc, etc, the NIST standard states that work coordinate system offsets are persistent across restarts and power cycles of the controller.
It states this in two parts:
Section 3.2.1 states:
In the RS274/NGC language view, a machining center maintains an array of 5400 numerical
parameters. Many of them have specific uses. The parameter array should persist over time, even
if the machining center is powered down.Section 3.2.2 states:
Data for coordinate systems is stored in parameters.
Therefore, and M500 is not required to save work coordinate system offsets; they are always persistent.
P.S. I do not have a Duet handy at the moment to check if this is properly implemented.
-
Thanks for the info Danal, But I'm not looking to store work offsets. I want to save tool offsets for multiple carriages. I think I found my answer with M585.
I'm not completely sure how it works but plan to experiment with it tonight. It looks like I can set X Y tool offsets and save them through M500. I'm wanting to automate setting up my tools when I change hotend nozzles. I really need it to perform a hole edge find routine for better accuracy versus just a single edge detection in one direction.
I can see this being more of a need when more printers are created with tool changing heads. The only other way to align tool heads right now it to print rows of arrows and adjust based on visual results. This method works, I'm just looking at a quicker more automated way.
-
Tim,
Documentation says this https://duet3d.dozuki.com/Wiki/GCode#Section_M500_Store_parameters.
So G31 probe offsets but maybe not G10 tool offsets (but wouldn't they just be set in config.g?)
-
Wow.
I just read the RepRap discussion page on G10. Too bad there were no machinists involved in that discussion back in 2012/2013. Anyway…
It seems that G10 with no "L" parameter sets a "Tool Offset", for the tool defined by "Pn", with very little word to how that is accomplished. This is not part of the NIST standard; it seems to have been invented by people who did not understand how the standard usage (see below) would accomplish the same goal.
And G10 WITH L2 or L20 sets a "Coordinate System offset", for the coordinate system defined by "Pn" (where 1 is G54, 2 is G55…). This is part of the NIST standard. And, it is the thing to which I was referring is standard to be persistent.
Ahh... time to experiment on a Duet!! To find out how these interact.
-
Clarification: G10 L2 … is NIST standard. G10 L20 ... is not; it is a de-facto extension.
G10 L2 P1 X0 sets the offset G54 X offset to be equivalent to "Machine Zero - Current Position". Which makes it hard for a controller (or HMI/Console) that may not know the current position.
G10 L20 P1 X0 sets the G54 X offset to the current position. Which makes it very easy to implement a "Zero Work" button. Which is why this extension was added.
Anyway... L2 is NIST, L20 is not.
-
Tim,
Documentation says this https://duet3d.dozuki.com/Wiki/GCode#Section_M500_Store_parameters.
So G31 probe offsets but maybe not G10 tool offsets (but wouldn't they just be set in config.g?)
Thanks Ian,
I'm going to try out the M585 https://duet3d.dozuki.com/Wiki/GCode#Section_M585_Probe_Tool tonight to see how it works. Its kind of what I need except for only one direction probing. But it does save results with M500 I believe. I'll mess with it and see what I get.
-
Wow.
I just read the RepRap discussion page on G10. Too bad there were no machinists involved in that discussion back in 2012/2013. Anyway…
It seems that G10 with no "L" parameter sets a "Tool Offset", for the tool defined by "Pn", with very little word to how that is accomplished. This is not part of the NIST standard; it seems to have been invented by people who did not understand how the standard usage (see below) would accomplish the same goal.
And G10 WITH L2 or L20 sets a "Coordinate System offset", for the coordinate system defined by "Pn" (where 1 is G54, 2 is G55…). This is part of the NIST standard. And, it is the thing to which I was referring is standard to be persistent.
Ahh... time to experiment on a Duet!! To find out how these interact.
Danal, I haven't tried out the work offsets yet to see how they work on the Duet. I wasn't sure if you had to be in CNC mill mode to get them working. I'll mess with them tonight as well to see how they work as far as in printing mode. If they do work while in printing then that would be another way to set the XYZ for each of my carriages. I'll also have to see if/how they interact with a bed mesh loaded.
-
Danal, I haven't tried out the work offsets yet to see how they work on the Duet. I wasn't sure if you had to be in CNC mill mode to get them working.
They are applied in printer mode, I've checked.
I'll mess with them tonight as well to see how they work as far as in printing mode. If they do work while in printing then that would be another way to set the XYZ for each of my carriages. I'll also have to see if/how they interact with a bed mesh loaded.
I have not physically tested that… mesh bed SHOULD be applied no matter what else is going on. I'll double check.
-
Also, it is very easy to see what is and is not saved in M500. Its underlying "persistence mechanism" is the "config_override.g" file. You can view (and/or edit, but any edits would be overwritten at the next M500) in the normal web dialogs for configuration files (the system tab).
-
Yeah I confirmed the work offsets work while in printer mode. They work well, Great job David!
I wasn't able to save them with M500 though. I can manually add them to my config file, I was just looking for a way to automate the process as a macro when changing hotends.