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.
Toggle main menu visibility
Loading...
Searching...
No Matches
i.tpp
Go to the documentation of this file.
1
#include "
../../include/integral/i.h
"
2
3
template
<
typename
T>
4
control_system::integral::I<T>::I
()
5
{
6
dt = 0.0;
7
u_k_1 = 0.0;
8
Ki = 0.0;
9
}
10
11
template
<
typename
T>
12
void
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
17
template
<
typename
T>
18
void
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
26
template
<
typename
T>
27
T
control_system::integral::I<T>::update
(T x_0, T x)
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
36
template
<
typename
T>
37
void
control_system::integral::I<T>::reset
()
38
{
39
u_k_1 = 0.0;
40
}
41
42
template
<
typename
T>
43
void
control_system::integral::I<T>::merge
(T u_k_1_)
44
{
45
u_k_1 = u_k_1_;
46
}
47
48
template
<
typename
T>
49
void
control_system::integral::I<T>::set_dt
(T dt_)
50
{
51
dt = dt_;
52
}
53
54
template
<
typename
T>
55
void
control_system::integral::I<T>::set_Ki
(T Ki_)
56
{
57
Ki = Ki_;
58
}
59
60
template
<
typename
T>
61
void
control_system::integral::I<T>::set_u_0
(T u_k_1_)
62
{
63
u_k_1 = u_k_1_;
64
}
65
66
template
<
typename
T>
67
void
control_system::integral::I<T>::set_u_max
(T u_max_)
68
{
69
u_max = u_max_;
70
}
71
72
template
<
typename
T>
73
T
control_system::integral::I<T>::get_dt
()
74
{
75
return
dt;
76
}
77
78
template
<
typename
T>
79
T
control_system::integral::I<T>::get_Ki
()
80
{
81
return
Ki;
82
}
83
84
template
<
typename
T>
85
T
control_system::integral::I<T>::get_u_k_1
()
86
{
87
return
u_k_1;
88
}
89
90
template
<
typename
T>
91
T
control_system::integral::I<T>::get_u_max
()
92
{
93
return
u_max;
94
}
control_system::integral::I::set_u_0
void set_u_0(T u_k_1_)
Sets the previous controller output.
Definition
i.h:62
control_system::integral::I::init
void init(T dt_, T Ki_, T u_k_1_, T u_max_)
Initializes the integral controller.
Definition
i.h:13
control_system::integral::I::I
I()
Constructs an integral controller.
Definition
i.h:5
control_system::integral::I::set_u_max
void set_u_max(T u_max_)
Sets the maximum controller output.
Definition
i.h:68
control_system::integral::I::update
T update(T x_0, T x)
Computes the integral control output.
Definition
i.h:28
control_system::integral::I::set_dt
void set_dt(T dt_)
Sets the controller sampling time.
Definition
i.h:50
control_system::integral::I::get_dt
T get_dt()
Gets the controller sampling time.
Definition
i.h:74
control_system::integral::I::set_Ki
void set_Ki(T Ki_)
Sets the integral gain.
Definition
i.h:56
control_system::integral::I::get_u_max
T get_u_max()
Gets the maximum controller output.
Definition
i.h:92
control_system::integral::I::get_u_k_1
T get_u_k_1()
Gets the previous controller output.
Definition
i.h:86
control_system::integral::I::get_Ki
T get_Ki()
Gets the integral gain.
Definition
i.h:80
control_system::integral::I::merge
void merge(T u_k_1_)
Merges an external controller output into the integral state.
Definition
i.h:44
control_system::integral::I::reset
void reset()
Resets the integral controller state.
Definition
i.h:38
control_system::integral::I::set_param
void set_param(T dt_, T Ki_, T u_k_1_, T u_max_)
Sets the integral controller parameters.
Definition
i.h:19
i.h
Integral (I) controller.
saturate
constexpr T saturate(T x, T x_min, T x_max)
Saturates a value within a specified range.
Definition
utility.h:51
src
integral
i.tpp
Generated by
1.17.0