2nd Library
PIDT2_Cntrl.h@4:db615f5fa407, 2021-04-27 (annotated)
- Committer:
- altb2
- Date:
- Tue Apr 27 07:49:53 2021 +0000
- Revision:
- 4:db615f5fa407
- Parent:
- 3:e3b84ea63c0f
.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
altb2 | 3:e3b84ea63c0f | 1 | #ifndef PIDT2_CNTRL_H_ |
altb2 | 3:e3b84ea63c0f | 2 | #define PIDT2_CNTRL_H_ |
altb2 | 3:e3b84ea63c0f | 3 | |
altb2 | 3:e3b84ea63c0f | 4 | #include "mbed.h" |
altb2 | 3:e3b84ea63c0f | 5 | |
altb2 | 3:e3b84ea63c0f | 6 | class PIDT2_Cntrl |
altb2 | 3:e3b84ea63c0f | 7 | { |
altb2 | 3:e3b84ea63c0f | 8 | public: |
altb2 | 3:e3b84ea63c0f | 9 | |
altb2 | 3:e3b84ea63c0f | 10 | PIDT2_Cntrl(float P, float I, float D, float tau_f, float tau_ro, float Ts, float uMin, float uMax); |
altb2 | 3:e3b84ea63c0f | 11 | |
altb2 | 3:e3b84ea63c0f | 12 | PIDT2_Cntrl() {}; |
altb2 | 3:e3b84ea63c0f | 13 | |
altb2 | 3:e3b84ea63c0f | 14 | float operator()(float e) |
altb2 | 3:e3b84ea63c0f | 15 | { |
altb2 | 3:e3b84ea63c0f | 16 | return update(e); |
altb2 | 3:e3b84ea63c0f | 17 | } |
altb2 | 3:e3b84ea63c0f | 18 | float operator()(float e, float y) |
altb2 | 3:e3b84ea63c0f | 19 | { |
altb2 | 3:e3b84ea63c0f | 20 | return update(e, y); |
altb2 | 3:e3b84ea63c0f | 21 | } |
altb2 | 3:e3b84ea63c0f | 22 | |
altb2 | 3:e3b84ea63c0f | 23 | virtual ~PIDT2_Cntrl(); |
altb2 | 3:e3b84ea63c0f | 24 | |
altb2 | 3:e3b84ea63c0f | 25 | void reset(float initValue); |
altb2 | 3:e3b84ea63c0f | 26 | void setCoefficients(float P, float I, float D, float tau_f, float tau_ro, float Ts, float uMin, float uMax); |
altb2 | 3:e3b84ea63c0f | 27 | void setCoeff_P(float P); |
altb2 | 3:e3b84ea63c0f | 28 | void setCoeff_I(float D); |
altb2 | 3:e3b84ea63c0f | 29 | void setCoeff_D(float D); |
altb2 | 3:e3b84ea63c0f | 30 | void scale_PIDT2_param(float scale); |
altb2 | 3:e3b84ea63c0f | 31 | float update(float e); |
altb2 | 3:e3b84ea63c0f | 32 | float update(float e, float y); |
altb2 | 3:e3b84ea63c0f | 33 | void set_limits(float uMin, float uMax); |
altb2 | 3:e3b84ea63c0f | 34 | float get_ulimit(); |
altb2 | 3:e3b84ea63c0f | 35 | float get_P_gain(); |
altb2 | 3:e3b84ea63c0f | 36 | float get_I(); |
altb2 | 3:e3b84ea63c0f | 37 | float get_D(); |
altb2 | 3:e3b84ea63c0f | 38 | float get_bd(); |
altb2 | 3:e3b84ea63c0f | 39 | float get_ad(); |
altb2 | 3:e3b84ea63c0f | 40 | float get_bi(); |
altb2 | 3:e3b84ea63c0f | 41 | float get_bf(); |
altb2 | 3:e3b84ea63c0f | 42 | float get_af(); |
altb2 | 3:e3b84ea63c0f | 43 | |
altb2 | 3:e3b84ea63c0f | 44 | |
altb2 | 3:e3b84ea63c0f | 45 | private: |
altb2 | 3:e3b84ea63c0f | 46 | |
altb2 | 3:e3b84ea63c0f | 47 | float IPart, Dpart, d_old, u_old, uf; |
altb2 | 3:e3b84ea63c0f | 48 | float P, I, D, tau_f, tau_ro, Ts, uMin, uMax; |
altb2 | 3:e3b84ea63c0f | 49 | float bi, bd, ad, bf, af; |
altb2 | 3:e3b84ea63c0f | 50 | float P_init, I_init, D_init; |
altb2 | 3:e3b84ea63c0f | 51 | |
altb2 | 3:e3b84ea63c0f | 52 | void setCoefficients(float P, float I, float D, float tau_f, float tau_ro, float Ts); |
altb2 | 3:e3b84ea63c0f | 53 | float saturate(float u, float uMin, float uMax); |
altb2 | 3:e3b84ea63c0f | 54 | |
altb2 | 3:e3b84ea63c0f | 55 | }; |
altb2 | 3:e3b84ea63c0f | 56 | |
altb2 | 3:e3b84ea63c0f | 57 | #endif |