位置式PID学习
将PID公式离散化,e(t)== 目标值-实际值(target_value - measured_value)偏差值, ∫e(t) dt == 误差累加(integral += bias)偏差累计,de(t)/dt == 当前误差值 - 上一次的误差值 (bias - pre_bias)偏差变化趋势。PID控制器参数整定是至关重要的,因为它直接影响到控制系统的性能。是系统的偏差、误差数值与时间的曲
·
PID公式为:
其中,u(t) 是控制器的输出,e(t) 是系统的偏差、误差数值与时间的曲线公式(设定值与实际值之差),Kp、Ki 和 Kd 是比例、积分和微分系数。
将PID公式离散化,e(t) == 目标值-实际值(target_value - measured_value)偏差值, ∫e(t) dt == 误差累加(integral += bias)偏差累计,de(t)/dt == 当前误差值 - 上一次的误差值 (bias - pre_bias)偏差变化趋势。
PID控制器的工作方式如下:
- 比例环节Kp:根据当前的偏差信号调整输出,偏差越大,输出越大,从而快速减小偏差。
- 积分环节Ki:对过去的偏差进行积分,以消除长期的偏差。积分环节有助于提高控制精度。
- 微分环节Kd:预测偏差的变化趋势,提前进行控制调整,以减小超调。微分环节有助于提高系统的动态性能。
PID控制器参数整定是至关重要的,因为它直接影响到控制系统的性能。常用的参数整定方法有临界比例法、反应曲线法和Ziegler-Nichols法等。这些方法基于系统的响应特性,通过调整Kp、Ki 和 Kd 三个参数,以达到理想的控制效果。
typedef struct
{
double Kp; // 比例系数
double Ki; // 积分系数
double Kd; // 微分系数
double IntegralBias; // 积分项
double PreBias; // 上一次的误差值
} PID_Controller;
// PID控制器初始化
void PID_Init(PID_Controller* Pid, double Kp, double Ki, double Kd)
{
Pid->Kp = Kp;
Pid->Ki = Ki;
Pid->Kd = Kd;
Pid->IntegralBias = 0;
Pid->PreBias= 0;
}
// PID控制器更新
double PID_Update(PID_Controller* Pid, double TargetValue, double MeasuredValue)
{
double Bias , Derivative ,Output;
Bias = TargetValue- MeasuredValue; // 计算误差
Pid->IntegralBias += Bias; // 更新积分项
Derivative = Bias - Pid->PreBias; // 计算微分项
Output = Pid->Kp * Bias + Pid->Ki * Pid->IntegralBias + Pid->Kd * Derivative;
Pid->PreBias= Bias ; // 保存误差值用于下一次计算
return Output;
}
更多推荐


所有评论(0)