PID Control 1.0
Discrete time implementation of P, PI, PD, PID. Including derivative filter, integral clamping, feed-forward, gain scheduling in standard and parallel form.
Loading...
Searching...
No Matches
i.tpp
Go to the documentation of this file.
2
3template <typename T>
5{
6 dt = 0.0;
7 u_k_1 = 0.0;
8 Ki = 0.0;
9}
10
11template <typename T>
12void control_system::integral::I<T>::init(T dt_, T Ki_, T u_k_1_, T u_max_)
13{
14 set_param(dt_, Ki_, u_k_1_, u_max_);
15}
16
17template <typename T>
18void control_system::integral::I<T>::set_param(T dt_, T Ki_, T u_k_1_, T u_max_)
19{
20 dt = dt_;
21 Ki = Ki_;
22 u_k_1 = u_k_1_;
23 u_max = u_max_;
24}
25
26template <typename T>
28{
29 T e_k = x_0 - x;
30 T u_k = u_k_1 + Ki * dt * e_k;
31 u_k = saturate(u_k, -u_max, u_max);
32 u_k_1 = u_k;
33 return u_k;
34}
35
36template <typename T>
38{
39 u_k_1 = 0.0;
40}
41
42template <typename T>
44{
45 u_k_1 = u_k_1_;
46}
47
48template <typename T>
50{
51 dt = dt_;
52}
53
54template <typename T>
56{
57 Ki = Ki_;
58}
59
60template <typename T>
62{
63 u_k_1 = u_k_1_;
64}
65
66template <typename T>
68{
69 u_max = u_max_;
70}
71
72template <typename T>
74{
75 return dt;
76}
77
78template <typename T>
80{
81 return Ki;
82}
83
84template <typename T>
86{
87 return u_k_1;
88}
89
90template <typename T>
92{
93 return u_max;
94}
void set_u_0(T u_k_1_)
Sets the previous controller output.
Definition i.h:62
void init(T dt_, T Ki_, T u_k_1_, T u_max_)
Initializes the integral controller.
Definition i.h:13
I()
Constructs an integral controller.
Definition i.h:5
void set_u_max(T u_max_)
Sets the maximum controller output.
Definition i.h:68
T update(T x_0, T x)
Computes the integral control output.
Definition i.h:28
void set_dt(T dt_)
Sets the controller sampling time.
Definition i.h:50
T get_dt()
Gets the controller sampling time.
Definition i.h:74
void set_Ki(T Ki_)
Sets the integral gain.
Definition i.h:56
T get_u_max()
Gets the maximum controller output.
Definition i.h:92
T get_u_k_1()
Gets the previous controller output.
Definition i.h:86
T get_Ki()
Gets the integral gain.
Definition i.h:80
void merge(T u_k_1_)
Merges an external controller output into the integral state.
Definition i.h:44
void reset()
Resets the integral controller state.
Definition i.h:38
void set_param(T dt_, T Ki_, T u_k_1_, T u_max_)
Sets the integral controller parameters.
Definition i.h:19
Integral (I) controller.
constexpr T saturate(T x, T x_min, T x_max)
Saturates a value within a specified range.
Definition utility.h:51