Libary for control.

Dependencies:   FastPWM

Dependents:   RT2_Cuboid

Revision:
6:e93f67d98616
Parent:
4:1cbd6af9836c
Child:
8:3a2131231969
--- a/PID_Cntrl.h	Fri Apr 23 05:32:49 2021 +0000
+++ b/PID_Cntrl.h	Fri Apr 23 10:26:25 2021 +0000
@@ -1,9 +1,12 @@
 #ifndef PID_CNTRL_H_
 #define PID_CNTRL_H_
 
+#include "math.h"
+#define  pi 3.14159265358979323846
+
 class PID_Cntrl
 {
-    
+
 public:
 
     PID_Cntrl(float I, float Ts, float uMin, float uMax);
@@ -11,7 +14,7 @@
     PID_Cntrl(float P, float I, float D, float Ts, float uMin, float uMax);
     PID_Cntrl(float P, float I, float D, float tau_f, float Ts, float uMin, float uMax);
     PID_Cntrl(float P, float I, float D, float tau_f, float tau_ro, float Ts, float uMin, float uMax);
-    
+
     PID_Cntrl() {};
 
     float operator()(float e)
@@ -25,27 +28,30 @@
 
     virtual ~PID_Cntrl();
 
+    void    reset();
     void    reset(float initValue);
-    
-    void    setCoefficients(float I, float Ts, float uMin, float uMax);
-    void    setCoefficients(float P, float I, float Ts, float uMin, float uMax);
-    void    setCoefficients(float P, float I, float D, float Ts, float uMin, float uMax);
-    void    setCoefficients(float P, float I, float D, float tau_f, float Ts, float uMin, float uMax);
-    void    setCoefficients(float P, float I, float D, float tau_f, float tau_ro, float Ts, float uMin, float uMax);
-    
+
+    void    setup(float I, float Ts, float uMin, float uMax);
+    void    setup(float P, float I, float Ts, float uMin, float uMax);
+    void    setup(float P, float I, float D, float Ts, float uMin, float uMax);
+    void    setup(float P, float I, float D, float tau_f, float Ts, float uMin, float uMax);
+    void    setup(float P, float I, float D, float tau_f, float tau_ro, float Ts, float uMin, float uMax);
+
     void    setCoeff_P(float P);
     void    setCoeff_I(float D);
     void    setCoeff_D(float D);
-    
+
     void    scale_PIDT2_param(float scale);
-    
+
     float   update(float e);
     float   update(float e, float y);
-    
+
     bool    update_param(int cntrlr_param, float value);
-    
+
     void    set_limits(float uMin, float uMax);
-    
+
+    float   prewarp(float T, float Ts);
+
     float   get_ulimit();
     float   get_P_gain();
     float   get_bd();
@@ -58,12 +64,12 @@
     float   bi, bd, ad, bf, af;
     float   P_init, I_init, D_init;
 
-    void    setInternalCoefficients(float P, float I, float D, float tau_f, float tau_ro, float Ts);
-    
+    void    setCoefficients(float P, float I, float D, float tau_f, float tau_ro, float Ts);
+
     void    updateCoeff_I(float I, float Ts);
     void    updateCoeff_D(float D, float Ts, float tau_f);
     void    updateCoeff_RO(float Ts, float tau_ro);
-    
+
     float   saturate(float u, float uMin, float uMax);
 
 };