Matlab 仿真——单自由度倒立摆(3)PID控制器设计
文章目录
- 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)mgls−qbmglqmls[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)mgls2−qbmglsq(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的冲激响应的时候:
- θ的稳定时间 < 5s
- |θ-θ0| < 0.05 radians
对于整个系统,当小车收到0.2m的阶跃信号的时候:
- x 与 θ 的稳定时间 < 5s
- x 的上升时间 < 0.5s
- |θ-θ0| < 0.05 radians (也就是20°)
- 对于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. 几个问题
- 这里我们的干扰是施加在小车上的,那万一干扰施加在倒立摆上面呢?要怎么确定新的模型框图?
- 动力学方程里面我们控制的是小车受到的力F,但实际上我们方便控制的是小车的位置X,或者往一个方向的速度加速度,这种情况咋办?
5. 参考
https://ctms.engin.umich.edu/CTMS/index.php?example=InvertedPendulum§ion=ControlPID
Matlab 仿真——单自由度倒立摆(3)PID控制器设计相关推荐
- Matlab 仿真——单自由度倒立摆(4)根轨迹法控制器设计
文章目录 0. 受控对象与设计要求 0.1 受控对象 0.2 设计要求 0.3 系统结构 1. 根轨迹设计 2. PID控制 3. 那小车呢? 4. 几个问题 5. 引用 0. 受控对象与设计要求 这 ...
- Matlab 仿真——单自由度倒立摆(1)系统建模
文章目录 1. 受控对象与设计要求 2. 力分析与系统方程 2.1 转换方程 2.2 状态空间 3. Matlab表达 3.1 转换方程 3.2 状态空间 4. 引用 1. 受控对象与设计要求 该例的 ...
- Matlab 仿真——单自由度倒立摆(2)系统分析
文章目录 0. 受控对象与设计要求 0.1 受控对象 0.2 设计要求 1. 开环冲激响应 2. 开环阶跃响应 3. 引用 0. 受控对象与设计要求 这里列出上一篇文章的结果 0.1 受控对象 Ppe ...
- 倒立摆:Simulink控制器设计
倒立摆:Simulink控制器设计 问题设置和设计要求 在这个问题中,如下图所示,带有倒立摆的小车被冲击力"撞上"了. 对于此示例,我们假设 (M)推车质量0.5公斤 (m)摆质量 ...
- 单级倒立摆matlab仿真程序,单级倒立摆控制系统设计及MATLAB中的仿真..doc
单级倒立摆控制系统设计及MATLAB中的仿真. 单级倒立摆控制及仿真单级倒立摆系统是一种广泛应用的物理模型.控制单级倒立摆载体的运动是保证倒立摆稳定 完成了对倒立摆载体的角度制导运动微分方程 Matl ...
- 单级倒立摆从建模到仿真
把很久以前的草稿整理一下搬到博客上 1.动力学模型 如图1所示,单级倒立摆由系统由水平导轨,平移支座和摆杆构成.平移支座与摆杆无阻尼铰接(摆杆可自由摆动).平移支座可以在导轨上受控平移.摆杆的质量是, ...
- pid控制器matlab仿真研究,基于MATLAB仿真的PID控制器设计毕业设计
基于MATLAB仿真的PID控制器设计毕业设计 基于 MATLAB 仿真的 PID 控制器设计 摘 要 本论文以温度控制系统为研究对象设计一个 PID 控制器.PID 控制是迄今为止最通用的控制方法, ...
- 【老生谈算法】matlab实现磁悬浮系统建模及其PID控制器设计——磁悬浮
磁悬浮系统建模及其PID控制器设计MATLAB 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]matlab磁悬浮系统建模及其 ...
- 【MATLAB】自适应果蝇优化算法整定PID控制器参数(六)—— 一阶带时延的被控对象
[MATLAB]自适应果蝇优化算法整定PID控制器参数(六)-- 一阶带时延的被控对象 目录 [MATLAB]自适应果蝇优化算法整定PID控制器参数(六)-- 一阶带时延的被控对象 0研究背景 1自适 ...
最新文章
- 小程序点击按钮 关闭小程序
- MySql入门知识(一)
- 解密NTFS下经EFS加密的文件
- React 第六章 事件的绑定
- 记录是一段旅程:记录Scribus可获得3课
- JBPM中文乱码的一种解决方法
- 简单十步python使用django框架建立博客网站
- 服务器上装的hadoop系统,在Ubuntu Server 18.04.1中安装Hadoop系统环境
- UML学习系统(一)
- 分布式系统架构网络之IDC机房
- 操作系统中ESP和MSR分区
- 相机模型--针孔相机投影(pinhole camera model)
- 去中心化和p2p网络以及中心化为核心的传统通信
- 小图标的使用(插入icon图标)
- 多种文字翻译软件-翻译常用软件
- 关于Matlab中Max函数的用法
- gis等高线注记掩膜
- cfa英语不好的怎么学_英文不好考CFA难度大吗?
- ## **#安装数据库SQL Server 2008R2 时,提示安装或配置microsoft.net framework 3.5 sp1**
- 大话手游服务器维护,2020年4月2日维护公告 _《大话西游》手游时间服官网_大话西游2同名手游_大话西游手游电脑网页版 - 经典情义回合制MMORPG...