mbedのPIDライブラリを改良したものです 主な変更 ・PIDゲインを独立に調整可能 ・実行中に入力値と出力値の範囲を変更する機能の削除 ・微分制御に不完全微分を追加 ・PIDゲインを設定する機能を追加 ・各種ゲッターを削除
Fork of PID by
PIDcontroller.h
- Committer:
- porizou
- Date:
- 2016-02-01
- Revision:
- 0:eeb41e25a490
File content as of revision 0:eeb41e25a490:
#ifndef PIDcontroller_H #define PIDcontroller_H #include "mbed.h" class PID { public: /** * Kp 比例ゲイン * Ki 積分ゲイン * Kd 微分ゲイン * tSample 制御周期 */ PID(float Kp, float Ki, float Kd, float tSample); /** * 入力値の範囲を設定 * * InMin 入力の最小値 --> 0% * InMax 入力の最大値 --> 100% */ void setInputLimits(float inMin, float inMax); /** * 出力値の範囲を設定 * * InMin 出力の最小値 --> 0% * InMax 出力の最大値 --> 100% */ void setOutputLimits(float outMin, float outMax); void setSetPoint(float sp); //目標の設定 void setProcessValue(float pv); //現在値の設定 void setGain(float Kp, float Ki, float Kd); //PIDゲインの設定 void setBias(float Bias); //フィードフォワード制御有効 バイアス値の設定 void setIncompleteDifferential(float u); //不完全微分(実用微分)有効,不完全微分係数の設定 float compute(void); //PIDの計算 戻り値はoutMinからoutMaxの範囲 float scaledParcent(float value); float calcIncompleteDifferential(void); private: bool usingFeedForward; //フィードフォワード制御有効フラグ bool usingIncompleteDifferential; //不完全微分有効フラグ //PIDゲイン float Kp_, Ki_, Kd_; float setPoint_; //目標値 float controllerOutput_; //出力値(0.0~1.0) float prevControllerOutput_; //前回の出力値(0.0~1.0) float inMin_, inMax_, inSpan_; //入力の最小値,最大値,範囲 float outMin_, outMax_, outSpan_; //出力の最小値,最大値,範囲 float accError_; //偏差の積分値 float Error_; //現在の偏差 float prevError_; //前回の偏差 float tSample_; //制御周期 float Bias_; //フィードフォワード制御バイアス値 float processVariable_; //入力値 float prevDiffOut; //前回の微分項の出力 float u_; //不完全微分係数 }; #endif /* PIDcontroller_H */