add methods to inspect individual terms

This commit is contained in:
Enrico Gueli 2017-05-13 21:16:16 +02:00
parent 75dba97d45
commit d095a43697
2 changed files with 15 additions and 2 deletions

View File

@ -59,8 +59,11 @@ bool PID::Compute()
else if(ITerm < outMin) ITerm= outMin;
double dInput = (input - lastInput);
/*Compute PID Output*/
double output = kp * error + ITerm- kd * dInput;
/*Compute PID Output and store last values*/
lastPTerm = kp * error;
lastITerm = ITerm;
lastDTerm = -kd * dInput;
double output = lastPTerm + lastITerm + lastDTerm;
if(output > outMax) output = outMax;
else if(output < outMin) output = outMin;
@ -192,3 +195,7 @@ double PID::GetKi(){ return dispKi;}
double PID::GetKd(){ return dispKd;}
int PID::GetMode(){ return inAuto ? AUTOMATIC : MANUAL;}
int PID::GetDirection(){ return controllerDirection;}
double PID::GetLastPTerm() { return lastPTerm; }
double PID::GetLastITerm() { return lastITerm; }
double PID::GetLastDTerm() { return lastDTerm; }

View File

@ -51,6 +51,10 @@ class PID
int GetMode(); // inside the PID.
int GetDirection(); //
double GetLastPTerm();
double GetLastITerm();
double GetLastDTerm();
private:
void Initialize();
@ -72,6 +76,8 @@ class PID
unsigned long lastTime;
double ITerm, lastInput;
double lastPTerm, lastITerm, lastDTerm; // last P/I/D terms calculated
unsigned long SampleTime;
double outMin, outMax;
bool inAuto;