文章目录

  • 0. 受控对象与设计要求
    • 0.1 受控对象
    • 0.2 设计要求
  • 1. 控制系统结构
  • 2. PID控制器设计
  • 3. 那小车呢?
  • 4. 几个问题
  • 5. 参考

0. 受控对象与设计要求

这里列出上一篇文章的结果

0.1 受控对象

Ppend(s)=Φ(s)U(s)=mlqss3+b(I+ml2)qs2−(M+m)mglqs−bmglq[radN]P_{pend}(s) = \frac{\Phi(s)}{U(s)}=\frac{\frac{ml}{q}s}{s^3+\frac{b(I+ml^2)}{q}s^2-\frac{(M+m)mgl}{q}s-\frac{bmgl}{q}} \qquad [ \frac{rad}{N}]Ppend​(s)=U(s)Φ(s)​=s3+qb(I+ml2)​s2−q(M+m)mgl​s−qbmgl​qml​s​[Nrad​]
Pcart(s)=X(s)U(s)=(I+ml2)s2−gmlqs4+b(I+ml2)qs3−(M+m)mglqs2−bmglqs[mN]P_{cart}(s) = \frac{X(s)}{U(s)} = \frac{ \frac{ (I+ml^2)s^2 - gml } {q} }{s^4+\frac{b(I+ml^2)}{q}s^3-\frac{(M+m)mgl}{q}s^2-\frac{bmgl}{q}s} \qquad [ \frac{m}{N}] Pcart​(s)=U(s)X(s)​=s4+qb(I+ml2)​s3−q(M+m)mgl​s2−qbmgl​sq(I+ml2)s2−gml​​[Nm​]
其中:
q=[(M+m)(I+ml2)−(ml)2]q=[(M+m)(I+ml^2)-(ml)^2]q=[(M+m)(I+ml2)−(ml)2]

0.2 设计要求

对于倒立摆,当小车受到1Nsec的冲激响应的时候:

  1. θ的稳定时间 < 5s
  2. |θ-θ0| < 0.05 radians

对于整个系统,当小车收到0.2m的阶跃信号的时候:

  1. x 与 θ 的稳定时间 < 5s
  2. x 的上升时间 < 0.5s
  3. |θ-θ0| < 0.05 radians (也就是20°)
  4. 对于x和θ来说,稳态误差 < 2%

1. 控制系统结构


上图是我们常用的控制器结构。但是因为这里我们希望倒立摆尽可能地抵抗干扰F,从而保持平衡在垂直位置,系统的输入为零。这种0输入,抵抗干扰的控制问题我们一般统称为 Regulator problem。通过简单的变形,我们得到新的控制系统框图:

该系统的转换方程为:
T(s)=Φ(s)F(s)=Ppend(s)1+C(s)Ppend(s)T(s) = \frac{\Phi(s)}{F(s)} = \frac{P_{pend}(s)}{1 + C(s)P_{pend}(s)} T(s)=F(s)Φ(s)​=1+C(s)Ppend​(s)Ppend​(s)​
在开始设计PID控制器之前,我们先在Matlab里面定义好我们的受控对象

M = 0.5;
m = 0.2;
b = 0.1;
I = 0.006;
g = 9.8;
l = 0.3;
q = (M+m)*(I+m*l^2)-(m*l)^2;
s = tf('s');
P_pend = (m*l*s/q)/(s^3 + (b*(I + m*l^2))*s^2/q - ((M + m)*m*g*l)*s/q - b*m*g*l/q);

2. PID控制器设计

通过观察控制系统框图,我们发现控制器在反馈线上,因此我们可以用Matlab自带的feedback函数来组成带有PID控制的新系统(这里我们先随机定三个PID参数):

Kp = 1;
Ki = 1;
Kd = 1;
C = pid(Kp,Ki,Kd);
T = feedback(P_pend,C);

干扰F在新系统里面变成了输入,现在我们看一下新系统受到冲激干扰时的响应:

t=0:0.01:10;
impulse(T,t)
title({'Response of Pendulum Position to an Impulse Disturbance';'under PID Control: Kp = 1, Ki = 1, Kd = 1'});

输出结果

系统依旧不收敛,我们尝试增大P参数

Kp = 100;
Ki = 1;
Kd = 1;
C = pid(Kp,Ki,Kd);
T = feedback(P_pend,C);
t=0:0.01:10;
impulse(T,t)
axis([0, 2.5, -0.2, 0.2]);
title({'Response of Pendulum Position to an Impulse Disturbance';'under PID Control: Kp = 100, Ki = 1, Kd = 1'});

输出结果

系统稳定了,有点震荡。对比我们的设计要求,稳态误差和稳定时间都满足了要求。但是超调很高,超出了0.05弧度的限制。对付超调我们可以通过适当增大D参数来实现。经过几轮尝试,我们最终确定Kp=100,Ki=1,Kd=20,新的输出:

此时,我们设计的PID控制器已经满足所有设计要求。

3. 那小车呢?

上述讨论中系统框图其实是不完整的,因为该系统是单输入双输出系统。而我们并没有考虑小车的位置,一个完整的系统框图其实如下:

重新整理一下框图得到;

因此我们可以得到加了PID控制器后的新系统中小车位置相对于扰动F的转换方程:
T2(s)=X(s)F(s)=Pcart(s)1+Ppend(s)C(s)T_2(s) = \frac{X(s)}{F(s)} = \frac{P_{cart}(s)}{1 + P_{pend}(s)C(s)}T2​(s)=F(s)X(s)​=1+Ppend​(s)C(s)Pcart​(s)​
其中Pcart(s)Pcart(s)Pcart(s)与C(s)C(s)C(s)已知,于是可以获得该系统转换方程以及冲激响应:

P_cart = (((I+m*l^2)/q)*s^2 - (m*g*l/q))/(s^4 + (b*(I + m*l^2))*s^3/q - ((M + m)*m*g*l)*s^2/q - b*m*g*l*s/q);
T2 = feedback(1,P_pend*C)*P_cart;
t = 0:0.01:5;
impulse(T2, t);
title({'Response of Cart Position to an Impulse Disturbance';'under PID Control: Kp = 100, Ki = 1, Kd = 20'});

输出:

小车几乎以恒定速度往负方向运动,可见虽然我们控制好了倒立摆的角度,但是小车的位置不收敛,所以尽管理论上可以控制好倒立摆,但实际情况下我们不可能有一个无限长的通道供小车一直运动。

4. 几个问题

  1. 这里我们的干扰是施加在小车上的,那万一干扰施加在倒立摆上面呢?要怎么确定新的模型框图?
  2. 动力学方程里面我们控制的是小车受到的力F,但实际上我们方便控制的是小车的位置X,或者往一个方向的速度加速度,这种情况咋办?

5. 参考

https://ctms.engin.umich.edu/CTMS/index.php?example=InvertedPendulum&section=ControlPID

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

  1. Matlab 仿真——单自由度倒立摆(4)根轨迹法控制器设计

    文章目录 0. 受控对象与设计要求 0.1 受控对象 0.2 设计要求 0.3 系统结构 1. 根轨迹设计 2. PID控制 3. 那小车呢? 4. 几个问题 5. 引用 0. 受控对象与设计要求 这 ...

  2. Matlab 仿真——单自由度倒立摆(1)系统建模

    文章目录 1. 受控对象与设计要求 2. 力分析与系统方程 2.1 转换方程 2.2 状态空间 3. Matlab表达 3.1 转换方程 3.2 状态空间 4. 引用 1. 受控对象与设计要求 该例的 ...

  3. Matlab 仿真——单自由度倒立摆(2)系统分析

    文章目录 0. 受控对象与设计要求 0.1 受控对象 0.2 设计要求 1. 开环冲激响应 2. 开环阶跃响应 3. 引用 0. 受控对象与设计要求 这里列出上一篇文章的结果 0.1 受控对象 Ppe ...

  4. 倒立摆:Simulink控制器设计

    倒立摆:Simulink控制器设计 问题设置和设计要求 在这个问题中,如下图所示,带有倒立摆的小车被冲击力"撞上"了. 对于此示例,我们假设 (M)推车质量0.5公斤 (m)摆质量 ...

  5. 单级倒立摆matlab仿真程序,单级倒立摆控制系统设计及MATLAB中的仿真..doc

    单级倒立摆控制系统设计及MATLAB中的仿真. 单级倒立摆控制及仿真单级倒立摆系统是一种广泛应用的物理模型.控制单级倒立摆载体的运动是保证倒立摆稳定 完成了对倒立摆载体的角度制导运动微分方程 Matl ...

  6. 单级倒立摆从建模到仿真

    把很久以前的草稿整理一下搬到博客上 1.动力学模型 如图1所示,单级倒立摆由系统由水平导轨,平移支座和摆杆构成.平移支座与摆杆无阻尼铰接(摆杆可自由摆动).平移支座可以在导轨上受控平移.摆杆的质量是, ...

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

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

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

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

  9. 【MATLAB】自适应果蝇优化算法整定PID控制器参数(六)—— 一阶带时延的被控对象

    [MATLAB]自适应果蝇优化算法整定PID控制器参数(六)-- 一阶带时延的被控对象 目录 [MATLAB]自适应果蝇优化算法整定PID控制器参数(六)-- 一阶带时延的被控对象 0研究背景 1自适 ...

最新文章

  1. 小程序点击按钮 关闭小程序
  2. MySql入门知识(一)
  3. 解密NTFS下经EFS加密的文件
  4. React 第六章 事件的绑定
  5. 记录是一段旅程:记录Scribus可获得3课
  6. JBPM中文乱码的一种解决方法
  7. 简单十步python使用django框架建立博客网站
  8. 服务器上装的hadoop系统,在Ubuntu Server 18.04.1中安装Hadoop系统环境
  9. UML学习系统(一)
  10. 分布式系统架构网络之IDC机房
  11. 操作系统中ESP和MSR分区
  12. 相机模型--针孔相机投影(pinhole camera model)
  13. 去中心化和p2p网络以及中心化为核心的传统通信
  14. 小图标的使用(插入icon图标)
  15. 多种文字翻译软件-翻译常用软件
  16. 关于Matlab中Max函数的用法
  17. gis等高线注记掩膜
  18. cfa英语不好的怎么学_英文不好考CFA难度大吗?
  19. ## **#安装数据库SQL Server 2008R2 时,提示安装或配置microsoft.net framework 3.5 sp1**
  20. 大话手游服务器维护,2020年4月2日维护公告 _《大话西游》手游时间服官网_大话西游2同名手游_大话西游手游电脑网页版 - 经典情义回合制MMORPG...

热门文章

  1. 怎么给老师汇报论文进展?
  2. 数据库管理 第2关:用户2
  3. 1.6 集成电路中的元件
  4. 请写出空间计量模型stata代码
  5. 网络工程思科路由器NAT实验
  6. OpenCV检测篇——猫脸检测
  7. Android Studio绑定Git步骤
  8. python---互亿--短信验证
  9. 数字孪生技术打造智慧车联网数据可视化大屏
  10. APF有源电力滤波器直接功率控制Simulink仿真