欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 串型PID与并行PID

串型PID与并行PID

2025/2/23 8:29:30 来源:https://blog.csdn.net/qq_28149763/article/details/145797605  浏览:    关键词:串型PID与并行PID

文章目录

  • 1、理想PID(Ideal PID)
  • 2、并行PID(Parallel PID)
  • 3、算法实现与验证
    • 3.1 理想PID验证
    • 3.2 并行PID验证

1、理想PID(Ideal PID)

在这里插入图片描述
理想PID的C语言实现


// 定义PID控制器结构体
typedef struct {double Kvp;       // 比例增益double Kvi;       // 积分增益double Kvd;       // 微分增益double Ts;        // 采样周期double integral;  // 积分累计值double prev_error; // 上一次误差double output_max; // 输出上限double output_min; // 输出下限
} SeriesPID;// 串联PID控制器更新函数
double pid(SeriesPID *pid, double setpoint, double measurement) {double error = setpoint - measurement; // 计算误差// 临时积分项,乘以 Kvidouble integral_temp = pid->integral +  error * pid->Ts;// 微分项计算,乘以 Kvddouble derivative =  (error - pid->prev_error) / pid->Ts;// 计算控制器输出(暂时不更新积分项)double output_temp = pid->Kvp * error +pid->Kvp * pid->Kvi*integral_temp +pid->Kvp *  pid->Kvd *derivative;// 检查输出是否超出限制if (output_temp > pid->output_max) {output_temp = pid->output_max;} else if (output_temp < pid->output_min) {output_temp = pid->output_min;} else {// 如果输出未饱和,则更新积分项pid->integral = integral_temp;}// 保存当前误差用于下一次计算微分项pid->prev_error = error;return output_temp;
}

2、并行PID(Parallel PID)

在这里插入图片描述
并行PID的C语言实现

// 定义PID控制器结构体
typedef struct {double Kp;         // 比例增益double Ki;         // 积分增益double Kd;         // 微分增益double Ts;         // 采样周期double integral;   // 积分累计值double prev_error; // 上一次误差double output_max; // 输出上限double output_min; // 输出下限
} ParallelPID;// 并联PID控制器更新函数
double pid(ParallelPID *pid, double setpoint, double measurement) {double error = setpoint - measurement; // 计算误差// 临时积分项,乘以 Kidouble integral_temp = pid->integral +  error * pid->Ts;// 微分项计算,乘以 Kddouble derivative =  (error - pid->prev_error) / pid->Ts;// 计算控制器输出(暂时不更新积分项)double output_temp = pid->Kp * error +pid->Ki*integral_temp +pid->Kd*derivative;// 检查输出是否超出限制if (output_temp > pid->output_max) {output_temp = pid->output_max;} else if (output_temp < pid->output_min) {output_temp = pid->output_min;} else {// 如果输出未饱和,则更新积分项pid->integral = integral_temp;}// 保存当前误差用于下一次计算微分项pid->prev_error = error;return output_temp;
}

3、算法实现与验证

以基于刚性等级的双闭环模型为例,其中速度环就是采用理想PID,电流环采用并行PID。
模型下载地址: 基于刚性等级的双闭环PMSM环路控制模型,其中速度环PI采用串行型PID(理想PID),电流环采用并行PID
在这里插入图片描述

3.1 理想PID验证

在这里插入图片描述
simulink自带pid配置
在这里插入图片描述
自己实现算法:

function [u, prev_e, integral] = pidController(e, Kp, Ki, Kd, Ts, u_min, u_max, prev_e, integral)% PID 控制器实现% 输入:%   e: 当前误差%   Kp, Ki, Kd: PID 参数%   Ts: 采样时间%   prev_e: 上一次的误差%   integral: 积分项的累积值%   u_min: 控制输出下限%   u_max: 控制输出上限% 输出:%   u: 当前控制输出 (限幅后)%   prev_e: 更新后的上一次误差%   integral: 更新后的积分项% 比例项P = e;% 积分项integral = integral + e * Ts;I = Ki * integral;% 微分项derivative = (e - prev_e) / Ts;D = Kd * derivative;% 控制输出u = Kp*(P +I+ D);% 限幅u = max(min(u, u_max), u_min);% 更新上一次的误差prev_e = e;
end

在这里插入图片描述
者完全重合。

3.2 并行PID验证

在这里插入图片描述
simulink自带pid配置
在这里插入图片描述
自己实现算法:

function [control_signal,integral_term, prev_error ]= pid_controller(error, Kp, Ki, Kd, dt,max_output,integral_term,prev_error)% PID 控制器实现% 输入:%   setpoint: 设定值%   measurement: 测量值%   Kp: 比例增益%   Ki: 积分增益%   Kd: 微分增益%   dt: 采样时间% 输出:%   control_signal: 控制信号% % persistent integral_term prev_error% if isempty(integral_term)%     integral_term = 0; % 初始化积分项%     prev_error = 0;     % 初始化前一次误差% end% 计算积分项%integral_term = integral_term + error * dt;%使用梯形法计算积分项integral_term = integral_term + (error + prev_error) * dt / 2;% 计算微分项derivative_term = (error - prev_error) / dt;% 计算控制信号control_signal = Kp * error + Ki * integral_term + Kd * derivative_term;% 积分抗饱和if control_signal > max_outputcontrol_signal = max_output;integral_term = integral_term - (error + prev_error) * dt / 2; % 回退积分elseif control_signal < -max_outputcontrol_signal = -max_output;integral_term = integral_term - (error + prev_error) * dt / 2; % 回退积分end% 更新前一次误差prev_error = error;
end

在这里插入图片描述
两者完全重合。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词