chose PID library implement PID (weight is NOT determined)

Dependents:   optWingforHAPS_Eigen hexaTest_Eigen

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers PIDcontroller.h Source File

PIDcontroller.h

00001 #ifndef PIDcontroller_H
00002 #define PIDcontroller_H
00003 
00004 #include "mbed.h"
00005  
00006  class PID {
00007 
00008  public:
00009 
00010     /**
00011     * Kp 比例ゲイン
00012     * Ki 積分ゲイン
00013     * Kd 微分ゲイン
00014     * tSample 制御周期
00015     */
00016     PID(float Kp, float Ki, float Kd, float tSample);
00017 
00018     /**
00019     * 入力値の範囲を設定
00020     *
00021     * InMin 入力の最小値 --> 0% 
00022     * InMax 入力の最大値 --> 100%
00023     */
00024     void setInputLimits(float inMin, float inMax);
00025 
00026     /**
00027     * 出力値の範囲を設定
00028     *
00029     * InMin 出力の最小値 --> 0% 
00030     * InMax 出力の最大値 --> 100%
00031     */
00032     void setOutputLimits(float outMin, float outMax);
00033 
00034     void setSetPoint(float sp); //目標の設定
00035  
00036     void setProcessValue(float pv); //現在値の設定
00037     
00038     void setGain(float Kp, float Ki, float Kd); //PIDゲインの設定
00039 
00040     void setBias(float Bias); //フィードフォワード制御有効 バイアス値の設定
00041 
00042     void setIncompleteDifferential(float u); //不完全微分(実用微分)有効,不完全微分係数の設定
00043 
00044     float compute(void); //PIDの計算 戻り値はoutMinからoutMaxの範囲
00045     float scaledParcent(float value);
00046 
00047     float calcIncompleteDifferential(void);
00048     
00049     void resetIntError();
00050 
00051  private:
00052     bool usingFeedForward; //フィードフォワード制御有効フラグ
00053     bool usingIncompleteDifferential; //不完全微分有効フラグ
00054 
00055     //PIDゲイン
00056     float Kp_, Ki_, Kd_;
00057  
00058     float setPoint_; //目標値
00059 
00060     float     controllerOutput_; //出力値(0.0~1.0)
00061     float prevControllerOutput_; //前回の出力値(0.0~1.0)
00062 
00063     float  inMin_,  inMax_,  inSpan_; //入力の最小値,最大値,範囲
00064     float outMin_, outMax_, outSpan_; //出力の最小値,最大値,範囲
00065 
00066     float  accError_; //偏差の積分値
00067 
00068     float     Error_; //現在の偏差
00069     float prevError_; //前回の偏差
00070     
00071     float tSample_; //制御周期
00072 
00073     float Bias_; //フィードフォワード制御バイアス値
00074 
00075     float processVariable_; //入力値
00076 
00077     float prevDiffOut; //前回の微分項の出力
00078 
00079     float u_; //不完全微分係数
00080 
00081  };
00082 
00083  #endif /* PIDcontroller_H */