New Edge firmware 1.18beta1
-
Thanks for doing the comparison. However, I think you have made a mistake, because the M307 model parameters you list for 1.17e and 1.18beta1 are identical, which is too much of a coincidence.
-
Thanks for doing the comparison. However, I think you have made a mistake, because the M307 model parameters you list for 1.17e and 1.18beta1 are identical, which is too much of a coincidence.
Apologies for the elementary copy-paste schoolboy error; thanks for spotting it. I actually made an even bigger mistake in putting the 1.17 and 1.18 chart images in the wrong location due to mis-renaming the screen captures while trying to post just before dinner. Less haste, better work. Next time.
The errors in my earlier post have been rectified and I expanded a little on what I first wrote, adding some background and a conclusion.
Regarding "identical parameters", a question: Are the 'Heater 1 model' parameters reported by the Marlin run actually being used in any way, or are the subsequently specified M301 PID settings completely overriding the M307 model parameters, effectively rendering them superfluous? If so, why the need for the M307 command prior to a M301 command (in config.g)?
i.e. these lines echoed in DWC (the "mode: custom PID" is the only give-away that the Heater 1 model is being over-ridden):
M307 H1 Heater 1 model: gain 693.0, time constant 218.0, dead time 4.5, max PWM 1.00, mode: custom PID Computed PID parameters for setpoint change: P26.0, I2.910, D57.8
And the actual config.g snippet:
M307 H1 A693.0 C218.0 D4.5 B0 ; (E3Dv6 40W cartridge tuned using M303 H1 P0.3 S240) Heater 1 model: gain 693.0, time constant 218.0, dead time 4.5, max PWM 1.00, mode: PID M301 H1 P25.95 I2.91 D57.82 ; Over-ride Auto-tune derived Kp Ki Kd values with old Marlin derived (Prusa Mendel) PID values.
-
Thanks, that makes more sense now.
When you use your own PID parameters by putting an M301 command later than the M307 command, the M307 parameters are still used to predict heating rates and thereby detect heating faults.
The temperature graph from Marlin looks to me to be only marginally stable.
Can you try reverting to the M307 parameters found by 1.18beta1 except reduce the D parameter to about 3 and see how that performs?
-
Thanks for the clarification. I do now vaguely recall reading something similar on the forum. After re-reading the wiki documentation I didn't find the explanation(s) to be quite as clear or concise. Perhaps you might consider editing the following pages mentioning M301, to reflect your very clear explanation above.
https://duet3d.com/wiki/Tuning_the_heater_temperature_control
https://duet3d.com/wiki/Configuring_RepRapFirmware_for_a_Cartesian_printer
https://duet3d.com/wiki/G-code#M301:_Set_PID_parametersThe temperature graph from Marlin looks to me to be only marginally stable.
True, but I believe it's convergent instability rather than divergent instability - which AFAIU, (and interpret from the images) results in a slightly more responsive system. i.e. the Marlin PID settings do provide convergence with set point temp, albeit in a marginally unstable manner, under increasing or decreasing load. Compared to RRF auto tune, the settling times (to ±0.1°C) that Marlin PID settings provided were almost identical during initial heat-up, somewhat faster after load increase (fan ON) and about the same after unload (fan OFF).Below are three further runs made today using the RRF1.18beta1 auto tune settings, adjusting only the D parameter:
- D3.0
- D2.8
- D2.5
1.18beta1 M307 auto tune parameters, with adjusted D=3.0
M307 H1 with
Heater 1 model: gain 723.0, time constant 232.2, dead time 3.0, max PWM 1.00, mode: PID
Computed PID parameters for setpoint change: P19.1, I0.082, D40.1
Computed PID parameters for load change: P19.1, I1.884, D40.1
1.18beta1 M307 auto tune parameters, with adjusted D=2.8
M307 H1
Heater 1 model: gain 723.0, time constant 232.2, dead time 2.8, max PWM 1.00, mode: PID
Computed PID parameters for setpoint change: P20.5, I0.088, D40.1
Computed PID parameters for load change: P20.5, I2.126, D40.1
1.18beta1 M307 auto tune parameters, with adjusted D=2.5
M307 H1
Heater 1 model: gain 723.0, time constant 232.2, dead time 2.5, max PWM 1.00, mode: PID
Computed PID parameters for setpoint change: P22.9, I0.099, D40.1
Computed PID parameters for load change: P22.9, I2.592, D40.1
GIF animation comparison
six image gif animation of all runs to date, with RRF 1.18beta1 at start and Marlin custom PID at end:
Many thanks for your suggestion to adjust the D parameter. I think you'll agree from the images above there's now increasing similarity in responsiveness provided by the PID values derived from RRF auto tune model parameters, and Marlin's auto tune PID paramters. I'll try the D2.5 and/or D2.8 setting while printing next weekend and report back.
-
So here are my numbers:
Pre 1.18beta
M307 H0 A311.7 C649.8 D3.1 S1.00 B0
M307 H1 A423.4 C203.6 D5.1 S1.00 B0Post 1.18beta
M307 H0 A259.0 C444.7 D1.5 S1.00 B0
M307 H1 A425.3 C217.6 D7.0 S1.00 B0To be fair I had zero issues with heaters previously, it worked great before and works great now. a max of 0.8 deg C overshoot on either heater which in my books is no great shakes.
Interestingly the "overpowered heater" dire warning reckons my bed is only going to get to 278 deg C now before it reckoned 700! Luckily my thermal fuse will go long before that.
-
Interesting, the bed heater dead time has reduced but the hot end heater dead time has increased.
-
If you want to test baby stepping, then for now I suggest you create a "Baby step up" macro file containing command M290 S0.05 and a "Baby step down" macro containing M290 S-0.05. Change the value 0.05 to be a suitable value for the first layer height you normally use.
Many thanks for implementing Baby steps dc42 - a really wonderful feature to have easy access to!
Baby step macro naming tip:
After implementing I realised User-Defined Macros are sorted alphabetically, so initially the top of my macro list looked like this:Baby step down
Baby step up
.
.
.No big deal "down" appears before "up", but ▲ ▼ icons are faster to interpret and when sorted alphabetically, they display in a more intuitive order.
Now my macro list looks like this:
Baby step ▲
Baby step ▼
.
.
. -
PanelDue firmware 1.16beta1 and DWC 1.15beta2 have baby stepping buttons.
-
PanelDue firmware 1.16beta1 and DWC 1.15beta2 have baby stepping buttons.
Thanks. I'll take a look.
-
Just minor feedback regarding my heater tuning (as above) it does oscillate both the bed and hotend more now than it did before. Its only a +/- 1 degree for the bed, which is absolutely fine. Its around 2-3 degrees on the hotend. With the previous settings it was more stable. Not a gripe, as both settings are acceptable to me.
-
PanelDue firmware 1.16beta1 and DWC 1.15beta2 have baby stepping buttons.
Where can we find the DWC beta? Doesn't seem to be on github
-
Its in Chrishamm's repository https://github.com/chrishamm/DuetWebControl
-
Its in Chrishamm's repository https://github.com/chrishamm/DuetWebControl
I couldn't find DWC 1.15beta2 in either dc42's or Chrishamm's github repositories, including dev branches. Any ideas appreciated.
-
I'll add them to my repo when I publish firmware 1.18beta3 later today.