Basic_Frame_TypeC_2023_Omni
Loading...
Searching...
No Matches
pid.h
1
29
30#ifndef INC_PID_H_
31#define INC_PID_H_
32
33#include "control_types.hpp"
34
35// TODO Convert to structs or classes.
36//declare pid functions
37void pid_param_init(PID_t* pid, int32_t max_out, float max_i_out, float max_err,
38 float kp, float ki, float kd);
39float pid_calculate(PID_t* pid, float get, float set, float dt);
40float pid_single_loop_control(float target_val, PID_t* pid, float cur_val,
41 float dt);
42float pid_dual_loop_control(float f_tar_val, PID_t* f_pid, PID_t* s_pid,
43 float f_cur_val, float s_cur_val, float dt);
44
45void pid2_init(PID2_t& pid, float k_p, float k_i, float k_d, float beta,
46 float yeta, float min_out, float max_out);
47void pid2_set_limits(PID2_t& pid, float new_min_out, float new_max_out);
48float pid2_calculate(PID2_t& pid, float sp, float pv, float dt);
49float pid2_single_loop_control(PID2_t& pid, float sp, float pv, float dt);
50float pid2_dual_loop_control(PID2_t& f_pid, PID2_t& s_pid, float sp, float f_pv,
51 float s_pv, float f_dt, float s_dt);
52float pid2_triple_loop_control(PID2_t& outer_pid, PID2_t& middle_pid,
53 PID2_t& inner_pid, float sp, float outer_pv,
54 float middle_pv, float inner_pv, float outer_dt,
55 float middle_dt, float inner_dt);
56
57void prescaled_pid2_init(Prescaled_PID2_t* prescaled, uint32_t prescalar,
58 float k_p, float k_i, float k_d, float beta,
59 float yeta, float min_out, float max_out);
60
62 float pv, float dt);
63
64#endif
float pid_single_loop_control(float target_val, PID_t *pid, float cur_val, float dt)
Calculates iteration of single-loop PID controller.
Definition pid.cpp:134
float pid2_single_loop_control(PID2_t &pid, float sp, float pv, float dt)
Caculate an iteration of a single-loop PID2 controller.
Definition pid.cpp:266
void pid2_init(PID2_t &pid, float k_p, float k_i, float k_d, float beta, float yeta, float min_out, float max_out)
Initializes a PID2_t controller.
Definition pid.cpp:172
float pid_dual_loop_control(float f_tar_val, PID_t *f_pid, PID_t *s_pid, float f_cur_val, float s_cur_val, float dt)
Calculate an iteration of dual-loop cascade PID controller.
Definition pid.cpp:151
float pid2_calculate(PID2_t &pid, float sp, float pv, float dt)
Calculates PID2 output for one time-step.
Definition pid.cpp:230
void pid2_set_limits(PID2_t &pid, float new_min_out, float new_max_out)
Sets new output limits for PID2_t controller.
Definition pid.cpp:210
float pid_calculate(PID_t *pid, float cur_val, float target_val, float dt)
Computes a single PID iteration for one time-step.
Definition pid.cpp:67
float pid2_dual_loop_control(PID2_t &f_pid, PID2_t &s_pid, float sp, float f_pv, float s_pv, float f_dt, float s_dt)
Calculates an iteration of a dual-loop PID2 controller.
Definition pid.cpp:283
float pid2_triple_loop_control(PID2_t &outer_pid, PID2_t &middle_pid, PID2_t &inner_pid, float sp, float outer_pv, float middle_pv, float inner_pv, float outer_dt, float middle_dt, float inner_dt)
Calculates an iteration for a triple-loop PID2 controller.
Definition pid.cpp:305
void pid_param_init(PID_t *pid, int32_t max_out, float max_i_out, float max_err, float kp, float ki, float kd)
Initializes a PID_t structure with provided parameters.
Definition pid.cpp:30
void prescaled_pid2_init(Prescaled_PID2_t *prescaled, uint32_t prescalar, float k_p, float k_i, float k_d, float beta, float yeta, float min_out, float max_out)
Initializes a Prescaled_PID2_t structure with provided parameters.
Definition pid.cpp:329
void prescaled_pid2_single_loop_control(Prescaled_PID2_t *prescaled, float sp, float pv, float dt)
Calculate an iteration for prescaled single-loop PID2 controller.
Definition pid.cpp:350
Enhanced PID controller structure with additional parameters.
Definition control_types.hpp:57
Basic PID controller structure.
Definition control_types.hpp:29
Prescaled PID controller for different frequency control loops.
Definition control_types.hpp:123