Filters
1.0
LPF, HPF, BPF, BSF, SRL
Toggle main menu visibility
Loading...
Searching...
No Matches
srl.tpp
Go to the documentation of this file.
1
#include "
../../include/limiter/srl.h
"
2
3
template
<
typename
T>
4
filter::limiter::SRL<T>::SRL
()
5
{
6
reset();
7
}
8
9
template
<
typename
T>
10
void
filter::limiter::SRL<T>::config
(T dt_, T dx_dt_min_, T dx_dt_max_)
11
{
12
set_param(dt_, dx_dt_min_, dx_dt_max_);
13
}
14
15
template
<
typename
T>
16
void
filter::limiter::SRL<T>::set_param
(T dt_, T dx_dt_min_, T dx_dt_max_)
17
{
18
dt = dt_;
19
dx_dt_min = dx_dt_min_;
20
dx_dt_max = dx_dt_max_;
21
}
22
23
template
<
typename
T>
24
T
filter::limiter::SRL<T>::update
(T x_k)
25
{
26
T y_k = 0.0;
27
if
(start ==
false
)
28
{
29
start =
true
;
30
y_k = x_k;
31
}
32
else
33
{
34
if
(x_k > (y_k_1 + dx_dt_max * dt))
35
{
36
y_k = y_k_1 + dx_dt_max * dt;
37
}
38
else
if
(x_k < (y_k_1 + dx_dt_min * dt))
39
{
40
y_k = y_k_1 + dx_dt_min * dt;
41
}
42
else
43
{
44
y_k = x_k;
45
}
46
}
47
48
y_k_1 = y_k;
49
50
return
y_k;
51
}
52
53
template
<
typename
T>
54
void
filter::limiter::SRL<T>::reset
()
55
{
56
bool
start =
false
;
57
y_k_1 = 0;
58
}
59
60
template
<
typename
T>
61
void
filter::limiter::SRL<T>::set_dt
(T dt_)
62
{
63
dt = dt_;
64
}
65
66
template
<
typename
T>
67
void
filter::limiter::SRL<T>::set_dx_dt_min
(T dx_dt_min_)
68
{
69
dx_dt_min = dx_dt_min_;
70
}
71
72
template
<
typename
T>
73
void
filter::limiter::SRL<T>::set_dx_dt_max
(T dx_dt_max_)
74
{
75
dx_dt_max = dx_dt_max_;
76
}
77
78
template
<
typename
T>
79
T
filter::limiter::SRL<T>::get_dt
()
80
{
81
return
dt;
82
}
83
84
template
<
typename
T>
85
T
filter::limiter::SRL<T>::get_dx_dt_min
()
86
{
87
return
dx_dt_min;
88
}
89
90
template
<
typename
T>
91
T
filter::limiter::SRL<T>::get_dx_dt_max
()
92
{
93
return
dx_dt_max;
94
}
95
96
template
<
typename
T>
97
T
filter::limiter::SRL<T>::get_fs
()
98
{
99
return
1.0 / dt;
100
}
filter::limiter::SRL::update
T update(T x_k)
Processes a new input sample.
Definition
srl.h:25
filter::limiter::SRL::set_dx_dt_min
void set_dx_dt_min(T dx_dt_min_)
Sets the minimum slew rate.
Definition
srl.h:68
filter::limiter::SRL::get_dt
T get_dt()
Gets the sampling time.
Definition
srl.h:80
filter::limiter::SRL::config
void config(T dt_, T dx_dt_min_, T dx_dt_max_)
Configures the slew-rate limiter.
Definition
srl.h:11
filter::limiter::SRL::get_dx_dt_max
T get_dx_dt_max()
Gets the maximum slew rate.
Definition
srl.h:92
filter::limiter::SRL::get_fs
T get_fs()
Gets the sampling frequency.
Definition
srl.h:98
filter::limiter::SRL::set_param
void set_param(T dt_, T dx_dt_min_, T dx_dt_max_)
Sets the limiter parameters.
Definition
srl.h:17
filter::limiter::SRL::set_dt
void set_dt(T dt_)
Sets the sampling time.
Definition
srl.h:62
filter::limiter::SRL::get_dx_dt_min
T get_dx_dt_min()
Gets the minimum slew rate.
Definition
srl.h:86
filter::limiter::SRL::SRL
SRL()
Constructs a slew-rate limiter.
Definition
srl.h:5
filter::limiter::SRL::reset
void reset()
Resets the limiter state.
Definition
srl.h:55
filter::limiter::SRL::set_dx_dt_max
void set_dx_dt_max(T dx_dt_max_)
Sets the maximum slew rate.
Definition
srl.h:74
srl.h
Slew-rate limiter.
src
limiter
srl.tpp
Generated by
1.17.0