PID控制算法简介

PID控制算法简介PID 简介位置式 PID 增量式 PID 前馈 PID 积分分离 PID 变速积分 PID 不完全微分 PID 微分先行 PID pid 控制算法

大家好,欢迎来到IT知识分享网。

PID简介

PID(Proportion-Integral-Differential),即比例-积分-微分,是一种常用的闭环控制器。

PID在计算机程序(数字量)中,有传统(位置式)PID和增量式PID两种实现形式。

传统(位置式)PID

示例代码:

typedef struct { 
    float kp; // 比例系数 float ki; // 积分系数 float kd; // 微分系数 float err; // 误差 float last_err; // 上次误差 float proportion; // 比例项 float integral; // 积分项 float differential; // 微分项 float integral_limit; // 积分限幅 } PID; PID pid = { 
    .kp = 1, .ki = 1, .kd = 1, .integral_limit = 1023, }; void pid_controler(float target, float feedback, float *output) { 
    // 更新误差 pid.last_err = pid.err; pid.err = target - feedback; // 计算比例项 pid.proportion = pid.kp * pid.err; // 计算积分项、积分限幅 pid.integral += pid.ki * pid.err; if(pid.integral > pid.integral_limit) pid.integral = pid.integral_limit; if(pid.integral < -pid.integral_limit) pid.integral = -pid.integral_limit; // 计算微分项 pid.differential = pid.kd * (pid.err - pid.last_err); // 计算输出量 *output = pid.proportion + pid.integral + pid.differential; } 

增量式PID

从公式上可以看出,增量式PID和传统(位置式)PID可以互相推导,也就意味着增量式PID和传统(位置式)PID只是数据的计算顺序不同,数据的计算结果和控制效果是相同的。增量式PID的优点就是不需要考虑积分饱和问题,也不再需要积分限幅。

示例代码:

typedef struct { 
    float kp; // 比例系数 float ki; // 积分系数 float kd; // 微分系数 float err; // 误差 float last_err; // 上次误差 float last_last_err; // 上上次误差 float proportion; // 比例项 float integral; // 积分项 float differential; // 微分项 } PID; PID pid = { 
    .kp = 1, .ki = 1, .kd = 1, }; void pid_controler(float target, float feedback, float *output) { 
    // 更新误差 pid.last_last_err = pid.last_err; pid.last_err = pid.err; pid.err = target - feedback; // 计算比例项 pid.proportion = pid.kp * (pid.err - pid.last_err); // 计算积分项 pid.integral = pid.ki * pid.err; // 计算微分项 pid.differential = pid.kd * (pid.err - 2 * pid.last_err + pid.last_last_err); // 计算输出量 *output += pid.proportion + pid.integral + pid.differential; } 

PID的变种

前馈PID

前馈PID能够让控制系统更快速的达到稳态,减少积分环节消耗的时间。

积分分离PID

积分分离PID的核心思想是,在系统误差较大时暂停积分作用,当误差减小到一定程度时再重新启用积分作用。这样做的目的是,避免因为在误差较大时积分项累积过多而导致的系统超调。

变速积分PID

变速积分PID的核心思想是,在系统误差较大时减小积分累积的速度,而在误差较小时增大积分累积的速度。这样做的目的是,避免因为在误差较大时积分项累积过多而导致的系统超调。变速积分PID可以看成是积分分离PID的升级版。

不完全微分PID

不完全微分PID通过引入一个低通滤波器来平滑微分项的计算结果,从而减少对高频噪声的敏感性。这样做的目的是,防止微分项因为对高频噪声敏感而产生过度调节的问题。

微分先行PID

在传统PID控制器中,微分项是基于误差(即目标量与反馈量之差)的变化率来计算的,而在微分先行PID控制器中,微分项是基于反馈量的变化率来计算的。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/135726.html

(0)
上一篇 2025-07-02 18:00
下一篇 2025-07-02 18:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信