Didstopia / Marlin

Custom Marlin 3D Printer Firmware for Ender 3 V2 + BTT SKR Mini E3 V3.0
https://github.com/Didstopia/Marlin
GNU General Public License v3.0
1 stars 0 forks source link

Research and/or implement MPC instead of PID #4

Closed Dids closed 2 years ago

Dids commented 2 years ago

In a very recent commit, MPC was added as a potentially much better alternative to PID.

Enabling it should be straightforward, however it is still largely untested and there doesn't seem to be any UI support for it yet, at least not for DWIN/Jyers UI, which we would need to patch ourselves, or submit a PR upstream, unless someone else beats us to it.

Dids commented 2 years ago

Unfortunately MPC is a no go with Jyers UI at the moment.

Marlin/src/lcd/e3v2/jyersui/dwin.cpp: In static member function 'static void CrealityDWINClass::Menu_Item_Handler(uint8_t, uint8_t, bool)':
Marlin/src/lcd/e3v2/jyersui/dwin.cpp:2005:56: error: 'hotend_info_t' {aka 'struct MPCHeaterInfo'} has no member named 'pid'
 2005 |               Draw_Float(thermalManager.temp_hotend[0].pid.Kp, row, false, 100);
      |                                                        ^~~
Marlin/src/lcd/e3v2/jyersui/dwin.cpp:2008:58: error: 'hotend_info_t' {aka 'struct MPCHeaterInfo'} has no member named 'pid'
 2008 |               Modify_Value(thermalManager.temp_hotend[0].pid.Kp, 0, 5000, 100, thermalManager.updatePID);
      |                                                          ^~~
Marlin/src/lcd/e3v2/jyersui/dwin.cpp:2008:95: error: 'class Temperature' has no member named 'updatePID'
 2008 |               Modify_Value(thermalManager.temp_hotend[0].pid.Kp, 0, 5000, 100, thermalManager.updatePID);
      |                                                                                               ^~~~~~~~~
In file included from Marlin/src/lcd/e3v2/jyersui/dwin.cpp:37:
Marlin/src/lcd/e3v2/jyersui/dwin.cpp:2013:69: error: 'hotend_info_t' {aka 'struct MPCHeaterInfo'} has no member named 'pid'
 2013 |               Draw_Float(unscalePID_i(thermalManager.temp_hotend[0].pid.Ki), row, false, 100);
      |                                                                     ^~~
Marlin/src/lcd/e3v2/jyersui/../../../module/temperature.h:196:35: note: in definition of macro 'unscalePID_i'
  196 |   #define unscalePID_i(i) ( float(i) / PID_dT )
      |                                   ^
Marlin/src/lcd/e3v2/jyersui/dwin.cpp:2016:58: error: 'hotend_info_t' {aka 'struct MPCHeaterInfo'} has no member named 'pid'
 2016 |               Modify_Value(thermalManager.temp_hotend[0].pid.Ki, 0, 5000, 100, thermalManager.updatePID);
      |                                                          ^~~
compilation terminated due to -fmax-errors=5.
*** [.pio/build/STM32G0B1RE_btt/src/src/lcd/e3v2/jyersui/dwin.cpp.o] Error 1