Filters 1.0
LPF, HPF, BPF, BSF, SRL
Loading...
Searching...
No Matches
srl.tpp
Go to the documentation of this file.
2
3template <typename T>
5{
6 reset();
7}
8
9template <typename T>
10void 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
15template <typename T>
16void 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
23template <typename T>
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
53template <typename T>
55{
56 bool start = false;
57 y_k_1 = 0;
58}
59
60template <typename T>
62{
63 dt = dt_;
64}
65
66template <typename T>
68{
69 dx_dt_min = dx_dt_min_;
70}
71
72template <typename T>
74{
75 dx_dt_max = dx_dt_max_;
76}
77
78template <typename T>
80{
81 return dt;
82}
83
84template <typename T>
86{
87 return dx_dt_min;
88}
89
90template <typename T>
92{
93 return dx_dt_max;
94}
95
96template <typename T>
98{
99 return 1.0 / dt;
100}
T update(T x_k)
Processes a new input sample.
Definition srl.h:25
void set_dx_dt_min(T dx_dt_min_)
Sets the minimum slew rate.
Definition srl.h:68
T get_dt()
Gets the sampling time.
Definition srl.h:80
void config(T dt_, T dx_dt_min_, T dx_dt_max_)
Configures the slew-rate limiter.
Definition srl.h:11
T get_dx_dt_max()
Gets the maximum slew rate.
Definition srl.h:92
T get_fs()
Gets the sampling frequency.
Definition srl.h:98
void set_param(T dt_, T dx_dt_min_, T dx_dt_max_)
Sets the limiter parameters.
Definition srl.h:17
void set_dt(T dt_)
Sets the sampling time.
Definition srl.h:62
T get_dx_dt_min()
Gets the minimum slew rate.
Definition srl.h:86
SRL()
Constructs a slew-rate limiter.
Definition srl.h:5
void reset()
Resets the limiter state.
Definition srl.h:55
void set_dx_dt_max(T dx_dt_max_)
Sets the maximum slew rate.
Definition srl.h:74
Slew-rate limiter.