资源简介
Matlab增量式PID算法仿真 ,包含m文件和simulink仿真文件,希望对大家有帮助
代码片段和文件信息
%设一被控对象G(s)=50/(0.125s^2+7s)
%用增量式PID控制算法编写仿真程序
%(输入分别为单位阶跃、正弦信号,采样时间为1ms,控制器输出限幅:[-33]
% 仿真曲线包括系统输出及误差曲线)。
ts=0.001; %采样时间
sys=tf(50[0.1257 0]); %tf是传递函数 即被控对象函数G();
dsys=c2d(systs‘z‘); %把控制函数离散化取Z变换n阶定常离散系统差分方程
%在零初始条件下取Z变换:
%dsys即Y(z)/U(z)
[numden]=tfdata(dsys‘v‘);% 离散化后提取分子、分母
u_1=0.0;
u_2=0.0;
y_1=0.0;
y_2=0.0;
x=[000]‘;
error_1=0;
error_2=0;
%核心代码
for k=1:1:1000
time(k)=k*ts; %采样次数
S=1;
if S==1 %阶跃输入
kp=6.5;ki=0.1;kd=1; %初始化PID
rin(k)=1; %Step Signal
elseif S==2 %正弦输入
kp=10;ki=0.1;kd=15;
rin(k)=0.5*sin(2*pi*k*ts); %Sine Signal 即实际输入
end
du(k)=kp*x(1)+kd*x(2)+ki*x(3); %PID Controller 控制系数
u(k)=u_1+du(k); %真正的PID输出应该为du+前一时刻的输出
if u(k)>=3
u(k)=3;
end
if u(k)<=-3
u(k)=-3;
end
%Linear model 难点就是把传递函数转化为差分方程,以实现PID控制。
yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2; %实际输出 num为dsys分子多项式系数,den为dsys分母多项式系数,从n阶定常离散系统差分方程变化来的。
error(k)=rin(k)-yout(k); % 误差 输入-输出
u_2=u_1; %保存上上次输入 为下次计算
u_1=u(k); %保存上一次控制系数 为下次计算
y_2=y_1; %保存上上次次输出 为下次计算
y_1=yout(k); %保存上一次输出 为下次计算
x(1)=error(k)-error_1; %KP的系数
x(2)=error(k)-2*error_1+error_2; %KD的系数
x(3)=error(k); %KI的系数
error_2=error_1; %上次的变上上次误差
error_1=error(k); %这次的变上次的误差
end
figure(1);
plot(timerin‘b‘timeyout‘r‘); %输入 和实际控制输出
xlabel(‘time(s)‘)ylabel(‘rinyout‘);
figure(2);
plot(timeerror‘r‘) %时间误差输出曲线
xlabel(‘time(s)‘);ylabel(‘error‘);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 15284 2018-04-06 10:53 PIDsimulikn.slx
文件 2859 2018-04-05 21:29 Incremental PID.m
相关资源
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
- k近邻算法matlab实现
- matlab识别系统
- 神经网络分类matlab程序
- matlab正弦信号发生器的设计
评论
共有 条评论