Always calculate extruder temperature PID d term (PR#2432)
This commit is contained in:
parent
87a872e103
commit
7268d46508
@ -476,6 +476,8 @@ float get_pid_output(int e) {
|
|||||||
#ifdef PIDTEMP
|
#ifdef PIDTEMP
|
||||||
#ifndef PID_OPENLOOP
|
#ifndef PID_OPENLOOP
|
||||||
pid_error[e] = target_temperature[e] - current_temperature[e];
|
pid_error[e] = target_temperature[e] - current_temperature[e];
|
||||||
|
dTerm[e] = K2 * PID_PARAM(Kd,e) * (current_temperature[e] - temp_dState[e]) + K1 * dTerm[e];
|
||||||
|
temp_dState[e] = current_temperature[e];
|
||||||
if (pid_error[e] > PID_FUNCTIONAL_RANGE) {
|
if (pid_error[e] > PID_FUNCTIONAL_RANGE) {
|
||||||
pid_output = BANG_MAX;
|
pid_output = BANG_MAX;
|
||||||
pid_reset[e] = true;
|
pid_reset[e] = true;
|
||||||
@ -494,7 +496,6 @@ float get_pid_output(int e) {
|
|||||||
temp_iState[e] = constrain(temp_iState[e], temp_iState_min[e], temp_iState_max[e]);
|
temp_iState[e] = constrain(temp_iState[e], temp_iState_min[e], temp_iState_max[e]);
|
||||||
iTerm[e] = PID_PARAM(Ki,e) * temp_iState[e];
|
iTerm[e] = PID_PARAM(Ki,e) * temp_iState[e];
|
||||||
|
|
||||||
dTerm[e] = K2 * PID_PARAM(Kd,e) * (current_temperature[e] - temp_dState[e]) + K1 * dTerm[e];
|
|
||||||
pid_output = pTerm[e] + iTerm[e] - dTerm[e];
|
pid_output = pTerm[e] + iTerm[e] - dTerm[e];
|
||||||
if (pid_output > PID_MAX) {
|
if (pid_output > PID_MAX) {
|
||||||
if (pid_error[e] > 0) temp_iState[e] -= pid_error[e]; // conditional un-integration
|
if (pid_error[e] > 0) temp_iState[e] -= pid_error[e]; // conditional un-integration
|
||||||
@ -505,7 +506,6 @@ float get_pid_output(int e) {
|
|||||||
pid_output = 0;
|
pid_output = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
temp_dState[e] = current_temperature[e];
|
|
||||||
#else
|
#else
|
||||||
pid_output = constrain(target_temperature[e], 0, PID_MAX);
|
pid_output = constrain(target_temperature[e], 0, PID_MAX);
|
||||||
#endif //PID_OPENLOOP
|
#endif //PID_OPENLOOP
|
||||||
|
Loading…
Reference in New Issue
Block a user