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