1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- /**
- ******************************************************************************
- * @file : studio_pid_c.h
- * @author : wangyingjie
- * @brief : None
- * @attention : None
- * @date : 2025/5/23
- ******************************************************************************
- */
- #ifndef STUDIO_PID_C_H
- #define STUDIO_PID_C_H
- #include <stdint.h>
- typedef struct
- {
- double initval; // 初始值
- double goal; // 目标值
- double error; // 当前误差(目标值 - 当前值)
- double Kp; // 比例常数
- double Ki; // 积分常数
- double Kd; // 微分常数
- double prev_error; // 前一个误差
- double inte_error; // 积分误差
- double dif_error; // 微分误差
- double integral_limit; // 积分项限幅值
- double output_limit; // 输出限幅值
- } studio_pid;
- // 初始化PID结构体
- void init_pid(studio_pid *pid, double init_v, double goal_v, double p, double i, double d,
- double integral_limit_val, double output_limit_val);
- // 计算PID输出
- double compute_pid(studio_pid *pid, double current_value);
- // 设置PID参数
- void set_pid_params(studio_pid *pid, double p, double i, double d);
- // 设置积分限幅
- void set_integral_limit(studio_pid *pid, double limit);
- // 设置输出限幅
- void set_output_limit(studio_pid *pid, double limit);
- // 获取目标值
- double get_goal(const studio_pid *pid);
- // 重置PID状态
- void reset_pid(studio_pid *pid);
- // 设置目标值并重置PID状态
- void set_goal(studio_pid *pid, double goal_v);
- #endif
|