没有合适的资源?快使用搜索试试~ 我知道了~
PID算法Matlab仿真程序和C程序
1星 需积分: 49 71 下载量 180 浏览量
2017-10-16
13:21:08
上传
评论 5
收藏 64KB DOC 举报
温馨提示
试读
5页
本文档详细介绍了增量式PID控制算法Matlab仿真程序、微分先行PID算法Matlab仿真程序以及不完全微分PID算法Matlab仿真程序和C语言PID演示程序的源代码,绝对物超所值
资源推荐
资源详情
资源评论
增量式 PID 控制算
法 Matlab 仿真程序
设 一 被 控 对 象 G ( s ) =50/
(0.125s^2+7s),用增量式 PID 控制算法
编写仿真程序(输入分别为单位阶跃、
正弦信号,采样时间为 1ms,控制器
输出限幅:[-5,5],仿真曲线包括系统
输出及误差曲线,并加上注释、图
例)。程序如下
clear all;
close all;
ts=0.001;
sys=tf(50,[0.125,7, 0]);
dsys=c2d(sys,ts,'z');
[num,den]=tfdata(dsys,'v');
u_1=0.0;u_2=0.0;
y_1=0.0;y_2=0.0;
x=[0,0,0]';
error_1=0;
error_2=0;
for k=1:1:1000
time(k)=k*ts;
S=2;
if S==1
kp=10;ki=0.1;kd=15;
rin(k)=1; %Step Signal
elseif S==2
kp=10;ki=0.1;kd=15; %Sine
Signal
rin(k)=0.5*sin(2*pi*k*ts);
end
du(k)=kp*x(1)+kd*x(2)+ki*x(3);
%PID Controller
u(k)=u_1+du(k);
%Restricting the output of controller
if u(k)>=5
u(k)=5;
end
if u(k)<=-5
u(k)=-5;
end
%Linear model
yout(k)=-den(2)*y_1-
den(3)*y_2+num(2)*u_1+num(3)*u_2;
error(k)=rin(k)-yout(k);
%Return of parameters
u_2=u_1;u_1=u(k);
y_2=y_1;y_1=yout(k);
x(1)=error(k)-error_1;
%Calculating P
x(2)=error(k)-2*error_1+error_2;
%Calculating D
x(3)=error(k); %Calculating I
error_2=error_1;
error_1=error(k);
end
figure(1);
plot(time,rin,'b',time,yout,'r');
xlabel('time(s)'),ylabel('rin,yout');
figure(2);
plot(time,error,'r')
xlabel('time(s)');ylabel('error');
微分先行 PID 算法
Matlab 仿真程序
%PID Controler with differential in
advance
clear all;
close all;
ts=20;
sys=tf([1],[60,1],'inputdelay',80);
dsys=c2d(sys,ts,'zoh');
[num,den]=tfdata(dsys,'v');
u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;
ud_1=0;
y_1=0;y_2=0;y_3=0;
error_1=0;error_2=0;
ei=0;
for k=1:1:400
time(k)=k*ts;
%Linear model
1
资源评论
- 小凤天下2019-07-17百度文库上都有可以免费下载
givemesteeringwheel
- 粉丝: 18
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功