GregValiant 1,342
What printer?
This line is from your printer definition file. It sets these values in Cura.
"retraction_speed": { "value": 25, "maximum_value": 40 },
So the default is 25mm/sec and the max is 40mm/sec. If you set the speed above 40 then the box will turn red and you won't be able to slice.
As I tried to explain - that only affects Cura settings. The printer is separate and may have a different value for Maximum E Speed. There is no way for Cura to know what the printer setting might be unless you check the printer and then manually update the "Printer Settings / Maximum Feedrate" to match. In a perfect world, the max in the printer is also 40 but that isn't necessarily true.
For example:
If the printer has in it's memory (in M203) that the Maximum E speed is "10" then whatever you enter in Cura is thrown out the window when the printer receives a gcode command that asks it to go faster. The printer will override the Gcode and although you may have entered "40" in Cura the printer will calculate it's moves at 10mm/sec for the Extruder. That is why you should match the "Maximum Feedrate" in Cura to what your printer has in M203.
19 hours ago, GregValiant said:This line is from your printer definition file. It sets these values in Cura.
"retraction_speed": { "value": 25, "maximum_value": 40 },
So the default is 25mm/sec and the max is 40mm/sec. If you set the speed above 40 then the box will turn red and you won't be able to slice.
As I tried to explain - that only affects Cura settings. The printer is separate and may have a different value for Maximum E Speed. There is no way for Cura to know what the printer setting might be unless you check the printer and then manually update the "Printer Settings / Maximum Feedrate" to match. In a perfect world, the max in the printer is also 40 but that isn't necessarily true.
For example:
If the printer has in it's memory (in M203) that the Maximum E speed is "10" then whatever you enter in Cura is thrown out the window when the printer receives a gcode command that asks it to go faster. The printer will override the Gcode and although you may have entered "40" in Cura the printer will calculate it's moves at 10mm/sec for the Extruder. That is why you should match the "Maximum Feedrate" in Cura to what your printer has in M203.
Thanks a lot Greg.
As I reminded, before Cura 4.10 there was no anycubic mega s/pro profile, only the mega standard one. So yesterday evening I tried to use that printer definition file and in that I can use a faster retraction speed.
Something curious happens also. With the same settings, also for retraction speed ( 40 mm/s) with the standard mega profile the time for the print was 23 minutes, with the cura mega s/pro profile was 33 minutes. Everything was the same, only the definition configuration changed.
Can you explain to me how a definition file is made?
Thanks
@nallath would be better to ask since he is part of the Cura team. I'll try to stumble through what I believe to be true.
Cura has a standard printer definition file called "fdmprinter.def.json". Almost all printers start with the settings in that file. If you were to install a Custom FFF Printer in Cura it is the file Cura uses to start you off. The files are in "...\Ultimaker Cura 4.X.X\resources\definitions". There are also Extruder definitions and Nozzle (variant) definitions.
Then a manufacturer comes out with a new printer model and when they (or an owner - a "member of the community") test it with Cura they find that the settings are not optimal. So the manufacturer or owner creates a printer definition file specific to that model printer. Whoever created that definition file then submits it to Ultimaker for inclusion in Cura. Cura supports over 300 printers.
Printer definition files are Python files and can be opened with a text editor like Notepad and they can be altered (carefully). If you alter a definition file (like in your case increasing the Machine_Max_Speed_E) then the next time you were to re-install Cura or upgrade your Cura version, it would revert back to the definition file that comes with Cura. You can always go back, copy your custom file, and paste it into the new Cura folder. The next time you start Cura it will read in the current definition.
So this is from your Mega S definition file "anycubic_i3_mega_s.def.json":
"version": 2,
"name": "Anycubic i3 Mega S/Pro",
"inherits": "fdmprinter",
"metadata":
{
"visible": true,
"author": "Nils Hendrik Rottgardt",
The line "inherits": "fdmprinter" indicates that the definition does indeed start with the generic definition. You also can see that the author has signed their work. In regards to the author - I'm pretty sure he does not work for Ultimaker as that would seem to be a conflict-of-interest. As I like to note; "Open Source" does not equate to "Non-Profit".
If you scroll through the code of your definition file you will see a lengthy "overrides" section. Those are the changes that your specific definition file makes to the generic settings of "fdmprinter.def.json". You may notice that there is no override for "machine_max_feedrate_e" but there is for "retraction_speed". My guess is that when your printer firmware was installed it included a Max E Speed of 40mm/sec and the Author knew that. You can change that in the printer by adding something like "M203 E50" to any gcode file you print. If you were to follow that line with "M500" then the setting would be saved and become the new default within the printer. (You might also be able to make that change via the LCD menus). You would also need to change the setting in Cura's Printer Settings so the printer and Cura match. Again...unless you tell Cura about your printer, it doesn't know what you have. That is the basic function of a definition file.
My printer is a Creality machine. The definition file is "creality_ender3pro.def.json" which inherits "creality_base.def.json" which in turn inherits "fdmprinter.def.json". In Creality's case they use the basic "fdm" printer definition, then make changes for their entire line of printers, and then make specific changes for my printer. I have in-turn customized all three of those files (along with some others) and when I upgrade Cura I have a separate installation routine I run to copy all my custom files to the new version of Cura.
This has been a two cup-of-coffee post. I hope I got some of it right.
11 minutes ago, GregValiant said:Printer definition files are Python files and can be opened with a text editor like Notepad and they can be altered (carefully).
They are JSON files, not python. The distinction being that json can only store data and python is an actual programing language. Although in this case the json can contain python snippets that are interpreted by the software again, so I see why you confused them 🙂
We also have a few wiki entries about this:
https://github.com/Ultimaker/Cura/wiki/Profiles-&-Settings
https://github.com/Ultimaker/Cura/wiki/Adding-new-machine-profiles-to-Cura
https://github.com/Ultimaker/Cura/wiki/Definition-Files-Explained
Thank you @nallath. The poor old Visual Basic guy stands corrected.
@AndreaG85 I almost forgot...
Print time can be hugely affected by retraction/prime speed and the retraction distance. One poster here was complaining about their print time. It turned out they were retracting 7mm at 1mm/sec and so every retraction/prime took 14 seconds.
Z-hops can also have a large effect depending on the number of retractions. A Z hop height of 1mm would take somewhat over .1 seconds to complete at 10mm/sec so that is .2 seconds for an up-down move. A medium print might have over 5000 retractions with Z-hops in it so that would be an additional 9 minutes for 1mm Z-hops. It all adds up.
10 hours ago, GregValiant said:Thank you @nallath. The poor old Visual Basic guy stands corrected.
@AndreaG85 I almost forgot...
Print time can be hugely affected by retraction/prime speed and the retraction distance. One poster here was complaining about their print time. It turned out they were retracting 7mm at 1mm/sec and so every retraction/prime took 14 seconds.
Z-hops can also have a large effect depending on the number of retractions. A Z hop height of 1mm would take somewhat over .1 seconds to complete at 10mm/sec so that is .2 seconds for an up-down move. A medium print might have over 5000 retractions with Z-hops in it so that would be an additional 9 minutes for 1mm Z-hops. It all adds up.
Yes. But for my try with both mega and mega s/pro printer profile I used the same settings I use for petg printing. That's why I think there are some major differences in the printer profiles
On 11/9/2021 at 11:47 PM, AndreaG85 said:Yes. But for my try with both mega and mega s/pro printer profile I used the same settings I use for petg printing. That's why I think there are some major differences in the printer profiles
There are some firmware out restricted in retract speed to this limited as @GregValiant mentioned. I am sure that is also the reason for the increased print time. As there are also versions out with 60mm/s I changed the profile from hard limit to a warning at 60mm/s. But if the printer is limited then it does not matter like explained.
As printer profiles are limited to the Cura releases you can download an actual version here with also some other optimizations: https://github.com/NilsRo/Cura_Anycubic_MegaS_Profile
Edited by augur
Recommended Posts
GregValiant 1,342
Usually the printer definition file will contain the Maximum Speeds for the axes. This is from the Ender 3 Pro definition file:
"machine_max_feedrate_x": { "value": 500 },
"machine_max_feedrate_y": { "value": 500 },
"machine_max_feedrate_z": { "value": 10 },
"machine_max_feedrate_e": { "value": 25 },
If you have the "Printer Settings" plugin loaded (it can be found in the MarketPlace) then you can change those settings in Cura and that will affect when the other "speed" boxes turn orange or red. An orange box indicates that the number you entered is getting close to the max or min for that setting. If the box is red then you have entered an illegal value for the setting and Cura often will not slice if there is an illegal setting.
It will not have any effect on what might be saved in M203 in the printer.
Within my printers response to M503 is this:
echo:Maximum feedrates (units/s):
echo: M203 X500.00 Y500.00 Z45.00 E50.00
As you can see, I have altered the max Z speed and maximum E speed IN THE PRINTER. So you can change the printer settings in Cura but it will effect Cura only (I did that to match the new values in my printer). To modify the settings in the printer you would need to send M203 E??? and then M500 to save the new setting. Some printers allow a user to change the Max Feedrates, Max Accel, and Max Jerk via an LCD menu.
Edited by GregValiantLink to post
Share on other sites
AndreaG85 0
I'm not sure I understand it all.
But what is strange is that I have this problem with cura 4.11, not with the old 4.9 version. As I remember.
So I think is a cura problem not a printer problem
Link to post
Share on other sites