2nd Library

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers PIDT2_Cntrl.h Source File

PIDT2_Cntrl.h

00001 #ifndef PIDT2_CNTRL_H_
00002 #define PIDT2_CNTRL_H_
00003 
00004 #include "mbed.h"
00005 
00006 class PIDT2_Cntrl
00007 {
00008 public:
00009 
00010     PIDT2_Cntrl(float P, float I, float D, float tau_f, float tau_ro, float Ts, float uMin, float uMax);
00011 
00012     PIDT2_Cntrl() {};
00013 
00014     float operator()(float e)
00015     {
00016         return update(e);
00017     }
00018     float operator()(float e, float y)
00019     {
00020         return update(e, y);
00021     }
00022 
00023     virtual ~PIDT2_Cntrl();
00024 
00025     void    reset(float initValue);
00026     void    setCoefficients(float P, float I, float D, float tau_f, float tau_ro, float Ts, float uMin, float uMax);
00027     void    setCoeff_P(float P);
00028     void    setCoeff_I(float D);
00029     void    setCoeff_D(float D);
00030     void    scale_PIDT2_param(float scale);
00031     float   update(float e);
00032     float   update(float e, float y);
00033     void    set_limits(float uMin, float uMax);
00034     float   get_ulimit();
00035     float   get_P_gain();
00036         float   get_I();
00037         float   get_D();
00038     float   get_bd();
00039     float   get_ad();
00040         float   get_bi();
00041         float   get_bf();
00042         float   get_af();
00043         
00044 
00045 private:
00046         
00047     float   IPart, Dpart, d_old, u_old, uf;
00048     float   P, I, D, tau_f, tau_ro, Ts, uMin, uMax;
00049     float   bi, bd, ad, bf, af;
00050     float   P_init, I_init, D_init;
00051 
00052     void    setCoefficients(float P, float I, float D, float tau_f, float tau_ro, float Ts);
00053     float   saturate(float u, float uMin, float uMax);
00054 
00055 };
00056 
00057 #endif