该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

我照着网上的程序自己改出来的程序是这样的

clc;

clear ;

ts=0.001; %采样时间

sys=tf(-53,[19926,100],'ioDelay',540); %tf是传递函数,用来实现G(s); 在自动控制领域经常用到,

dsys=c2d(sys,ts,'z'); %把控制函数离散化,转化为拆分方程

[num,den]=tfdata(dsys,'v'); % 离散化后提取分子、分母 ,提取拆分方程系数

u_0=0.0;

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:1000000

time(k)=k*ts; %采样次数

S=1; %选择需要跟踪的函数

if S==1

kp=-2.5237;ki=-025316;kd=18.2627; %初始化PID

rin(k)=1; %Step Signal ,阶跃信号

end

if S==2

kp=x;ki=x;kd=x;

rin(k)=0.5*sin(2*pi*k*ts); %Sine Signal 正弦信号

end

if S==3 %三角波信号

kp=x;ki=x;kd=x;

if mod(time(k),2)<1

rin(k)=mod(time(k),1);

else

rin(k)=1-mod(time(k),1);

end

rin(k)=rin(k)-0.5;

end

if S==4 %锯齿波信号

kp=x;ki=x;kd=x; %测试得合适参数,如果输出过冲,可将kd调小。

rin(k)=mod(time(k),1);

end

du(k)=kp*x(1)+kd*x(2)+ki*x(3); %PID Controller 控制系数

u(k)=u_1+du(k);

%Linear model

yout(k)=-den(2)*y_1+num(1)*u_0+num(2)*u_1; %实际输出

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');

axis([0,1000,0,1.2]);

% figure(2);

% plot(time,error,'r') %输入与输出误差输出曲线

% xlabel('time(s)');ylabel('error');

得到的图形是这样的

我用Simulink得到的图是这样的

有大佬告诉我一下我的程序哪里出错了吗

一阶滞后环节matlab,一个一阶惯性带有滞后环节的PID仿真程序相关推荐

  1. 典型环节matlab仿真,实验一典型环节的matlab仿真

    实验一典型环节的matlab仿真 0实验一 典型环节的 MATLAB 仿真一.实验目的1.熟悉 MATLAB 桌面和命令窗口,初步了解 SIMULINK 功能模块的使用方法.2.通过观察典型环节在单位 ...

  2. MATLAB测试一阶惯性滞后系统、PID参数采用Simulink整定结果

    注意: 注释代码是基于采样周期ts=20s形式- :频域到时域变化请参考 MATLAB编程测试传递函数的响应曲线(系统辨识第一篇). https://blog.csdn.net/weixin_3792 ...

  3. 频域串联滞后校正matlab,控制工程基础(基于Matlab的线性系统串联校正)

    <控制工程基础(基于Matlab的线性系统串联校正)>由会员分享,可在线阅读,更多相关<控制工程基础(基于Matlab的线性系统串联校正)(16页珍藏版)>请在人人文库网上搜索 ...

  4. 控制系统的滞后校正matlab,自动控制原理课程设计__用MATLAB进行控制系统的滞后校正设计...

    自动控制原理课程设计__用MATLAB进行控制系统的滞后校正设计 1滞后校正特性及校正方法 1.1滞后校正特性 滞后校正就是在前向通道中串联传递函数为的校正装置来校正控制系统,的表达式如下所示. (1 ...

  5. 频域串联滞后校正matlab,基于MATLAB的串联超前校正、滞后校正和串联滞后-超前校正设计.pdf...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspmatlab 基于MATLAB的串联超前校正.滞后校正和串联滞后 ...

  6. matlab的死区环节,基于SIMULINK对非线性系统死区环节进行仿真.doc

    基于SIMULINK对非线性系统死区环节进行仿真.doc 基于SIMULINK对非线性系统死区环节进行仿真 摘要:主要是针对非线性系统死区环节进行SIMULINK仿真,通过仿真分析来实现控制系统的优化 ...

  7. matlab的死区环节,基于SIMULINK对非线性系统死区环节进行仿真

    龙源期刊网 http://www.wendangwang.com 基于SIMULINK对非线性系统死区环节进行仿真 作者:赵丽 来源:<价值工程>2010年第03期 摘要:主要是针对非线性 ...

  8. matlab典型环节性能仿真,实验一典型环节的matlab仿真

    实验一典型环节的matlab仿真 实验一 典型环节的 MATLAB 仿真一.实验目的1.熟悉 MATLAB 桌面和命令窗口,初步了解 SIMULINK 功能模块的使用方法.2.通过观察典型环节在单位阶 ...

  9. matlab比例环节代码,典型环节MATLAB仿真.doc

    实验一 典型环节的MATLAB仿真 一.实验目的 1.熟悉MATLAB桌面和命令窗口,初步了解SIMULINK功能模块的使用方法. 2.通过观察典型环节在单位阶跃信号作用下的动态特性,加深对各典型环节 ...

  10. matlab patch 透明度,怎么利用Matlab工具生成带有透明度对象的矢量图

    从很早的版本开始MATLAB就支持对 patch.surface 等对象设定透明属性,有些示意图也必须使用透明的对象才能充分展示所要表达的含义.对透明对象支持最好的通用图片格式就是 .png 了,但是 ...

最新文章

  1. 第一次写blog,哈哈
  2. Virtual Box 安装过程(卸载Vmware后)
  3. Lintcode165 Merge Two Sorted Lists solution 题解
  4. Python3——简单的UDP实例
  5. Java里的并发容器与安全共享策略总结
  6. 基于libpcan库can总线操作的Barrett 机械手控制及腕部六维力传感器驱动
  7. python写机器人程序_从Python写入机器人框架控制台
  8. Word2016怎么和mathtype兼容
  9. 计算机科学技术专业词汇,计算机专业一些单词
  10. 防护IOS APP安全的几种方式(详解)
  11. JAVA写入与读取GPX文件工具类
  12. 软件测试之黑盒、白盒的测试方法?
  13. python def是什么意思-python里面def是什么意思
  14. SDRAM内存条时序特点
  15. java 非科学计数法_Java设置大数非科学计数法显示
  16. 感谢csdn 2021年中秋月饼礼盒
  17. 网口灯电路——反相器
  18. 后台管理系统项目搭建
  19. 2019上半年各大手机销量榜单:华为第一,苹果第五,三星没落!
  20. 独立个人博客有什么用?建独立博客有何意义?

热门文章

  1. VS2013的C# Winform怎么添加Windows Media Player控件 详细图解 代码示例及运行效果
  2. 单文件小型数据库的选择
  3. Axure share 二三事
  4. 你真的分得清系统误差、随机误差和偶然误差吗?(含例题)
  5. ADS(Advanced Design system)仿真测试元器件输入阻抗
  6. 10-4 linux可视化界面卡住问题等
  7. BP神经网络代码和原理
  8. 小甲鱼【C语言】《带你学C带你飞》笔记
  9. ZZULIOJ 1030~1039(oj入门题)
  10. C#-WinForm-打印控件