控制–PID设计

概述

考虑单位反馈系统:

PID时域:
u(t)=Kpe(t)+Ki∫e(t)dt+Kpde(t)dtu(t) = K_p e(t) + K_i \int e(t) dt + K_p \frac{de(t)}{dt}u(t)=Kp​e(t)+Ki​∫e(t)dt+Kp​dtde(t)​
拉普拉斯变换后:
Kds2+Kps+Kis\frac{K_d s^{2} + K_p s + K_i}{s} sKd​s2+Kp​s+Ki​​

Kp = 1;
Ki = 1;
Kd = 1;s = tf('s');
C = Kp + Ki / s + Kd * s
%or
C = pid(Kp,Ki,Kd)
tf(C)

P I D 各环节作用

例子

质量弹簧阻尼系统。

控制方程:
mx¨+bx˙+kx=Fm\ddot{x} + b\dot{x} + kx = Fmx¨+bx˙+kx=F
拉氏变换:
X(s)F(s)=1ms2+bs+k\frac{X(s)}{F(s)} = \frac{1}{ms^{2} + bs + k}F(s)X(s)​=ms2+bs+k1​

m = 1 kg;
b = 10 N s / m;
k = 20 N / m;
F = 1 N;

X(s)F(s)=1s2+10s+20\frac{X(s)}{F(s)} = \frac{1}{s^{2} + 10s + 20}F(s)X(s)​=s2+10s+201​

开环阶跃响应
s = tf('s');
P = 1/(s^2 + 10*s + 20);
step(P)


阻尼比:10/220=1.1810/2\sqrt{20} = 1.1810/220​=1.18
增益:1/20 稳态误差 0.95 太大。
上升时间、稳定时间长。

比例控制

加比例控制后,单位反馈系统的闭环传递函数为:
X(s)R(s)=Kps2+10s+(20+Kp)\frac{X(s)}{R(s)} = \frac{K_p}{s^{2} + 10s +(20+K_p)}R(s)X(s)​=s2+10s+(20+Kp​)Kp​​

Kp = 100;
C = pid(Kp)
T = feedback(C*P,1)t = 0:0.01:2;
step(T,t)


若KpK_pKp​改变

Kp = 300;
C = pid(Kp)
T = feedback(C*P,1)t = 0:0.01:2;
step(T,t)

比例控制器减小了上升时间和稳态误差,增加了过冲,并将稳定时间减少了一小部分。

比例-微分控制

X(s)R(s)=Kds+Kps2+(10+Kd)s+(20+Kp)\frac{X(s)}{R(s)} = \frac{K_ds+K_p}{s^{2} + (10+K_d)s +(20+K_p)}R(s)X(s)​=s2+(10+Kd​)s+(20+Kp​)Kd​s+Kp​​

Kp = 300;
Kd = 10;
C = pid(Kp,0,Kd)
T = feedback(C*P,1)t = 0:0.01:2;
step(T,t)

增加微分项减少了过冲和稳定时间,并且对上升时间和稳态误差的影响可忽略不计。

比例-积分控制

X(s)R(s)=Kps+Kis3+10s2+(20+Kp)s+Ki\frac{X(s)}{R(s)} = \frac{K_ps+K_i}{s^{3} + 10s^{2}+(20+K_p)s +K_i}R(s)X(s)​=s3+10s2+(20+Kp​)s+Ki​Kp​s+Ki​​

Kp = 30;
Ki = 70;
C = pid(Kp,Ki)
T = feedback(C*P,1)t = 0:0.01:2;
step(T,t)


我们减小了比例增益(KpK_pKp​),因为积分还减少了上升时间并增加了过冲(同比例项的作用)。上述响应表明,在这种情况下,积分控制器消除了稳态误差。

比例-积分-微分控制

X(s)R(s)=Kds2+Kps+Kis3+(10+Kd)s2+(20+Kp)s+Ki\frac{X(s)}{R(s)} = \frac{K_ds^{2}+K_ps+K_i}{s^{3} + (10+K_d)s^{2}+(20+K_p)s +K_i}R(s)X(s)​=s3+(10+Kd​)s2+(20+Kp​)s+Ki​Kd​s2+Kp​s+Ki​​

Kp = 350;
Ki = 300;
Kd = 50;
C = pid(Kp,Ki,Kd)
T = feedback(C*P,1);t = 0:0.01:2;
step(T,t)

设计PID的一般提示

在为给定系统设计PID控制器时,请按照下面显示的步骤获得所需的响应。

  1. 获得开环响应并确定需要改进的内容
  2. 添加比例控制以改善上升时间
  3. 添加微分控制以减少过冲
  4. 添加积分控制以减少稳态误差
  5. 每次调整的增益KpK_pKp​,KIK_IKI​以及KDK_DKD​直到你获得所需的整体响应。

最后,请记住,如果不需要,您不需要将所有三个控制器(比例,微分和积分)实现到单个系统中。例如,如果PI控制器满足给定的要求(如上例所示),那么您不需要在系统上实现派生控制器。保持控制器尽可能简单。

可以在以下链接中找到在实际物理系统上调整PI控制器的示例。这个例子也开始说明实现控制的一些挑战,包括:控制饱和,积分器卷绕和噪声放大。

自动PID调整

(GUI)pidTuner

MatalbSimulink Control Tutorials笔记3-PID控制器设计相关推荐

  1. pid控制器matlab仿真研究,基于MATLAB仿真的PID控制器设计毕业设计

    基于MATLAB仿真的PID控制器设计毕业设计 基于 MATLAB 仿真的 PID 控制器设计 摘 要 本论文以温度控制系统为研究对象设计一个 PID 控制器.PID 控制是迄今为止最通用的控制方法, ...

  2. matlab数字pid控制仿真程序,基于MATLAB的数字PID控制器设计及仿真分析

    基于MATLAB的数字PID控制器设计及仿真分析 基于基于MATLABMATLAB的数字的数字PIDPID控制器设计及仿真分析控制器设计及仿真分析 摘摘 要要 PID控制作为历史最为悠久,生命力最强的 ...

  3. Matlab 仿真——单自由度倒立摆(3)PID控制器设计

    文章目录 0. 受控对象与设计要求 0.1 受控对象 0.2 设计要求 1. 控制系统结构 2. PID控制器设计 3. 那小车呢? 4. 几个问题 5. 参考 0. 受控对象与设计要求 这里列出上一 ...

  4. 基于bp神经网络的pid算法,神经网络pid控制器设计

    基于BP神经网络的PID控制器设计 参考一下刘金琨的<先进PID控制>这本书. 例子:被控对象yout(k)=a(k)yout(k-1)/(1+yout(k-1)^2)+u(k_1)其中a ...

  5. 强化学习4——基于Actor-Critic的自适应PID控制器设计

    注释:本博文内容来源于文献:Wang X, Cheng Y, Sun W, et al. A Proposal of Adaptive PID Controller Based on Reinforc ...

  6. 【Simulink教程案例1】基于Simulink的PID控制器设计与实现

    欢迎订阅<FPGA/MATLAB/SIMULINK系列教程> 目录 1.软件版本 2.PID控制器理论概述 3.基于Simulink的PID控制器设计

  7. 【老生谈算法】matlab实现磁悬浮系统建模及其PID控制器设计——磁悬浮

    磁悬浮系统建模及其PID控制器设计MATLAB 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]matlab磁悬浮系统建模及其 ...

  8. 基于matlab的磁悬浮控制系统,基于MATLAB的磁悬浮球系统PID控制器设计与实现

    摘  要: 介绍了磁悬浮球系统的结构和工作原理,建立了磁悬浮系统的数学模型并进行线性化处理:设计PID控制器,在Simulink环境下搭建控制系统的模型进行仿真研究,并在固高GML1001系列磁悬浮装 ...

  9. 基于simulink的PID控制器设计

    目录 1.PID算法的基本理论 1.1 PID 控制的基本概念 1.2 基本公式 1.3 PID控制系统原理图 2.在simulink中搭建PID控制器模型及调参 3.调参 1.PID算法的基本理论 ...

最新文章

  1. 【转】 Android中退出程序的提示框
  2. 完整iOS APP发布App Store上架流程
  3. python新建文件格式_python之文件操作
  4. 从源码层面带你实现一个自动注入注解
  5. Boost.MultiIndex 使用 multi_index_container::ctor_args_list 的示例
  6. Python_套接字、IPv4和简单的客户端/服务器编程
  7. jQuery点击图片弹出大图遮罩层
  8. 从 JVM 角度看 Spring 中方法执行过程和内存状态
  9. 电脑排行榜笔记本_热门笔记本电脑排行榜推荐_windows7教程
  10. Unable to find the requested .Net Framework Data Provider
  11. python 对两列互补的数据合并
  12. 万恶淫为首,你想知道的真相!
  13. 日本語トレーニング(二十一)
  14. Python爬虫selenium的使用实例爬取知乎首页数据!
  15. Jmeter - 从入门到精通高级篇 - jmeter使用监视器结果监控tomcat性能(详解教程)
  16. bam文件读取_bam格式文件处理大全(一)
  17. 用ansys出黑白等值线图
  18. 修改传奇私服服务器,传奇SF 肿么修改服务器时间
  19. [贪心]leetcode55:跳跃游戏(medium)
  20. MongoDB全面总结

热门文章

  1. JavaScript 爬虫
  2. PHP中文繁简转换-繁体-简体
  3. 手机虚拟按键始终隐藏 | 触摸屏幕时出现
  4. 2019年猪年海报PSD模板-第七部分
  5. oracle utf-8中文乱码,修改Oracle字符集为UTF-8 解决中文乱码 oracle
  6. java深入探究13-js,ajax
  7. Jquery 2.0+版本不支持IE8,如何解决?
  8. Vulnhub靶机实战——DC-5
  9. python膨胀卷积_Pytorch中膨胀卷积的用法详解
  10. 奇偶校验码 、循环冗余校验码(CRC)、 海明码