Nagano kosen robocon

Dependencies:   mbed QEI

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  private:
00050     bool usingFeedForward; //フィードフォワード制御有効フラグ
00051     bool usingIncompleteDifferential; //不完全微分有効フラグ
00052 
00053     //PIDゲイン
00054     float Kp_, Ki_, Kd_;
00055  
00056     float setPoint_; //目標値
00057 
00058     float     controllerOutput_; //出力値(0.0~1.0)
00059     float prevControllerOutput_; //前回の出力値(0.0~1.0)
00060 
00061     float  inMin_,  inMax_,  inSpan_; //入力の最小値,最大値,範囲
00062     float outMin_, outMax_, outSpan_; //出力の最小値,最大値,範囲
00063 
00064     float  accError_; //偏差の積分値
00065 
00066     float     Error_; //現在の偏差
00067     float prevError_; //前回の偏差
00068     
00069     float tSample_; //制御周期
00070 
00071     float Bias_; //フィードフォワード制御バイアス値
00072 
00073     float processVariable_; //入力値
00074 
00075     float prevDiffOut; //前回の微分項の出力
00076 
00077     float u_; //不完全微分係数
00078 
00079  };
00080 
00081  #endif /* PIDcontroller_H */