该文转自博客园:

https://www.cnblogs.com/kui-sdu/p/9048534.html

  1. %PID Controller
  2. clear, clc, close all;
  3.  
  4. ts=0.001; %采样时间=0.001s
  5. sys=tf(5.235e005,[1,87.35,1.047e004,0]); %建立被控对象传递函数
  6. dsys=c2d(sys,ts,'z'); %把传递函数离散化
  7. [num,den]=tfdata(dsys,'v'); % 离散化后提取分子、分母
  8.  
  9. u_1=0.0;u_2=0.0;u_3=0.0; %输入向量 的初始状态
  10. y_1=0.0;y_2=0.0;y_3=0.0; %输出的初始状态
  11. x=[0,0,0]'; %PID的3个参数Kp Ki Kd组成的数组
  12. error_1=0; %初始误差
  13. S=input('请选择输入信号的形式:1 阶跃信号 2 方波信号 3 正弦信号\n');
  14. for k=1:1:500
  15. time(k)=k*ts; % 仿真时间500ms
  16. if S==1
  17. kp=1.50;ki=0.01;kd=0.01;
  18. yd(k)=1; % 指令为阶跃信号
  19. elseif S==2
  20. kp=0.50;ki=0.001;kd=0.001;
  21. yd(k)=sign(sin(2*2*pi*k*ts)); % 指令为方波信号
  22. elseif S==3
  23. kp=1.5;ki=1.0;kd=0.01; % 指令为正弦信号
  24. yd(k)=0.5*sin(2*2*pi*k*ts);
  25. end
  26.  
  27. u(k)=kp*x(1)+kd*x(2)+ki*x(3); % PID控制器
  28. % 限制控制器的输出
  29. if u(k)>=10
  30. u(k)=10;
  31. end
  32. if u(k)<=-10
  33. u(k)=-10;
  34. end
  35. % 近似线性模型
  36. y(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(2)*u_1+num(3)*u_2+num(4)*u_3;
  37.  
  38. error(k)=yd(k)-y(k);
  39.  
  40. % 返回pid参数
  41. u_3=u_2;u_2=u_1;u_1=u(k);
  42. y_3=y_2;y_2=y_1;y_1=y(k);
  43.  
  44. x(1)=error(k); % 计算 P
  45. x(2)=(error(k)-error_1)/ts; % 计算 D
  46. x(3)=x(3)+error(k)*ts; % 计算 I
  47.  
  48. error_1=error(k);
  49. end
  50. figure(1);
  51. set(0,'defaultfigurecolor','w') % 设置图像背景为白色
  52. plot(time,yd,'r',time,y,'b','linewidth',2);
  53. xlabel('time(s)');ylabel('信号输出');
  54. legend('理想信号','追踪信号');

  

  

利用Matlab实现PID控制仿真的更多相关文章

  1. MATLAB-离散系统的数字PID控制仿真

    %PID Controller clear all; close all; ts=0.001; %采样时间=0.001s  sys=tf(,]); %建立被控对象传递函数 dsys=c2d(sys,t ...

  2. 专家PID控制仿真学习

    目录 专家控制 专家系统 专家控制 学习笔记,用于记录学习 资料:<智能控制>(第四版)--刘金琨 专家系统 一.专家系统的定义 专家系统是一类包含知识和推理的智能计算机程序,其内部包含某 ...

  3. 两轮自平衡小车双闭环PID控制设计

                                                                                            两轮自平衡小车的研究意义 ...

  4. 经典PID控制及应用体会总结

    经典PID控制及应用体会总结 PID控制原理 PID是一种线性控制器,它根据给定值rin(t)与实际输出值yout(t)构成控制方案: 重点关注相关算法是如何对偏差进行处理的: PID控制器各校正环节 ...

  5. 四轴飞行器飞行原理与双闭环PID控制

    四轴轴飞行器是微型飞行器的其中一种,相对于固定翼飞行器,它的方向控制灵活.抗干扰能力强.飞行稳定,能够携带一定的负载和有悬停功能,因此能够很好地进行空中拍摄.监视.侦查等功能,在军事和民用上具备广泛的 ...

  6. 数字式PID控制的应用总结

    PID控制是一个二阶线性闭环控制器,通过调整比例.积分和微分三项参数,使得大多数的工业控制系统获得良好的闭环控制性能.PID控制优点:a. 技术成熟,b. 易被人们熟悉和掌握,c. 不需要建立数学模型 ...

  7. PID控制最通俗的解释与PID参数的整定方法

    转自->这里 PID是比例.积分.微分的简称,PID控制的难点不是编程,而是控制器的参数整定.参数整定的关键是正确地理解各参数的物理意义,PID控制的原理可以用人对炉温的手动控制来理解.阅读本文 ...

  8. 专家PID控制

    1.专家PID控制原理 PID专家控制的实质是,基于受控对象和控制规律的各种知识,无需知道被控对象的精确模型,利用专家经验来设计PID参数.专家PID控制是一种直接型专家控制器. 典型的二阶系统单位阶 ...

  9. PID控制及整定算法

    一.PID控制算法 PID是比例.积分.微分的简称,PID控制的难点不是编程,而是控制器的参数整定.参数整定的关键是正确地理解各参数的物理意义,PID 控制的原理可以用人对炉温的手动控制来理解.阅读本 ...

随机推荐

  1. js 符号转换 html代码

    S转换HTML转义符 //去掉html标签 function removeHtmlTab(tab) { return tab.replace(/<[^<>]+?>/g,''); ...

  2. learning java FileWriter

    import java.io.FileWriter; import java.io.IOException; public class FileWriterTest { public static v ...

  3. 【批处理】for命令

    for 命令 学习:https://www.cnblogs.com/Braveliu/p/5081087.html FOR这条命令基本上都被用来处理文本,但还有其他一些好用的功能! 看看他的基本格式( ...

  4. SuperHyperMarket(优先队列+重载)

    SuperHyperMarket(优先队列+重载) 具体见代码注释 /* */ #include <iostream> #include <cstring> #include ...

  5. 缺陷的严重程度(Severity)

    该bug对用户造成的影响有多大.(1)Urgent 死机重启等致命bug(2)Veryhigh 非常严重的bug(3)High 严重的bug(4)Medium 中等程度的bug(5)Low 小的bug

  6. 3ds Max学习日记(十一)——如何给模型上贴图

    参考链接:https://jingyan.baidu.com/article/e4511cf38a810b2b845eaf1f.html   之前一直都不知道怎么在3dsMax里给模型上材质和贴图,被 ...

  7. Servlet快速入门及运行流程

    一.Servlet快速入门 1.创建一个web工程 2.在JavaResource中src下创建一个包名称为com.myxq.servlet 3.在创建的servlet包当中创建一个class文件起名 ...

  8. 第07组 Alpha事后诸葛亮

    1.请在博客开头给出组长博客链接(3.1 2分) 团队:摇光 队长:杨明哲 组长博客:这里 2.参考邹欣老师的问题模板进行总结思考(3.2 27分) 设想和目标(2分) 1.我们的软件要解决什么问题? ...

  9. 【软工实践】Beta冲刺(4/5)

    链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 新增数据分析展示等功能API 服务器后端部署,API接口的beta版实现 展示 ...

  10. composer.json和composer.lock有什么区别?

    我们在做项目的时候,总是要安装一些依赖.composer给我们提供了很多方便.直接运行composer install.   当我们运行composer install 将会读取composer.lo ...