add methods to inspect individual terms
This commit is contained in:
parent
75dba97d45
commit
d095a43697
11
PID_v1.cpp
11
PID_v1.cpp
@ -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; }
|
||||
|
6
PID_v1.h
6
PID_v1.h
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user