You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.6 KiB
56 lines
1.6 KiB
9 years ago
|
#ifndef PID_AutoTune_v0
|
||
|
#define PID_AutoTune_v0
|
||
|
#define LIBRARY_VERSION 0.0.1
|
||
|
|
||
|
class PID_ATune
|
||
|
{
|
||
|
|
||
|
|
||
|
public:
|
||
|
//commonly used functions **************************************************************************
|
||
|
PID_ATune(double*, double*); // * Constructor. links the Autotune to a given PID
|
||
|
int Runtime(); // * Similar to the PID Compue function, returns non 0 when done
|
||
|
void Cancel(); // * Stops the AutoTune
|
||
|
|
||
|
void SetOutputStep(double); // * how far above and below the starting value will the output step?
|
||
|
double GetOutputStep(); //
|
||
|
|
||
|
void SetControlType(int); // * Determies if the tuning parameters returned will be PI (D=0)
|
||
|
int GetControlType(); // or PID. (0=PI, 1=PID)
|
||
|
|
||
|
void SetLookbackSec(int); // * how far back are we looking to identify peaks
|
||
|
int GetLookbackSec(); //
|
||
|
|
||
|
void SetNoiseBand(double); // * the autotune will ignore signal chatter smaller than this value
|
||
|
double GetNoiseBand(); // this should be acurately set
|
||
|
|
||
|
double GetKp(); // * once autotune is complete, these functions contain the
|
||
|
double GetKi(); // computed tuning parameters.
|
||
|
double GetKd(); //
|
||
|
|
||
|
private:
|
||
|
void FinishUp();
|
||
|
bool isMax, isMin;
|
||
|
double *input, *output;
|
||
|
double setpoint;
|
||
|
double noiseBand;
|
||
|
int controlType;
|
||
|
bool running;
|
||
|
unsigned long peak1, peak2, lastTime;
|
||
|
int sampleTime;
|
||
|
int nLookBack;
|
||
|
int peakType;
|
||
|
double lastInputs[101];
|
||
|
double peaks[10];
|
||
|
int peakCount;
|
||
|
bool justchanged;
|
||
|
bool justevaled;
|
||
|
double absMax, absMin;
|
||
|
double oStep;
|
||
|
double outputStart;
|
||
|
double Ku, Pu;
|
||
|
|
||
|
};
|
||
|
#endif
|
||
|
|