MATLAB

您所在的位置:网站首页 pid的输入和输出 MATLAB

MATLAB

2023-08-21 04:49| 来源: 网络整理| 查看: 265

增量式PID介绍  

pid算法中位置型和增量型有什么区别,分析两者优缺点

比例P : e(k)-e(k-1) 这次误差-上次误差

积分I : e(i) 误差

微分D : e(k) - 2e(k-1)+e(k-2) 这次误差-2*上次误差+上上次误差

du为增量,error前3偏差计算出来即可算出du;相对于位置式PID要稳定一些

代码:

%增量式PID clc % 清屏 clear all; % 删除workplace变量 close all; % 关掉显示图形窗口 %% %建立传递函数 ts=0.001; %采样时间 sys=tf(400,[1,50,0]);%建立传递函数模型,sys = tf(Numerator,Denominator) dsys=c2d(sys,ts,'z');%连续函数离散化,sysd = c2d(sys,Ts,method) [num,den]=tfdata(dsys,'v');%获得分子分母,[num,den] = tfdata(sys) %% %PID控制量 u_1=0.0;u_2=0.0;u_3=0.0; y_1=0;y_2=0;y_3=0; x=[0,0,0]';%’是转置,储存PID的计算值 %% %误差 error_1=0; error_2=0; for k=1:1:1000 time(k)=k*ts;%时间轴,画图用 yd(k)=2.0;%控制目标(理想位置) %PID参数 kp=8; ki=0.2; kd=10; du(k)=kp*x(1)+kd*x(2)+ki*x(3);%PID控制值增量 u(k)=u_1+du(k);%PID控制器输出的控制量 %避免PID值饱和,限制输出 if u(k)>10 u(k)=10; end if u(k)P * (iError - sptr->Last_Error) //比例P + pid->I * iError //积分I + pid->D * (iError - 2 * sptr->Last_Error + sptr->Previous_Error); //微分D sptr->Previous_Error = sptr->Last_Error; // 更新前次误差 sptr->Last_Error = iError; // 更新上次误差 return Increase; // 返回增量 }

参考:位置式PID与增量式PID区别浅析_Z小旋-CSDN博客_增量式pid

simulink PID仿真:

模型建立:

PID参数设置:

 

运行结果:

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3