控制建模matlab练习14:线性状态反馈控制器-③极点配置

此练习,主要是使用状态空间方程来设计控制器的方法和思路:
①系统建模;
②系统的能控性;
③极点配置;
④最优化控制LQR;
⑤轨迹追踪;
以下是,第③部分:极点配置;

一、系统模型

还是以前面的①系统建模;里面的这个模型为基础进行分析。

  • 先介绍一下这个极点配置:(引用书中的介绍)
  • 本质上说,这依然是比例控制,但相较于传统方法(只反馈位移信息),所有的状态信息(包括位移和速度)都被用作反馈,因此有两个比例增益 k1 k2
  • 并且,状态矩阵的特征值对应于传递函数的极点。
  • 所以,这种设计思路就被称为极点配置

二、分析与控制器设计

  • 书中分析这个系统,是一个不稳定的系统。若想要改变平衡点的性质,则需要设计合适的输入 u(t) ,并且在设计之前,也要先判断系统的能控性。
  • 通过分析,说明只依靠输出的比例反馈控制 不能满足设计要求,所以需要考虑设计全状态反馈控制器 ,可以令 u(t) = -Kz(t) ,其中 K=[k1 k2] 。全状态的反馈,将 z(t) 完全反馈到系统当中。
  • 此时的输入 u(t) 就与所有状态变量 z(t) 有关。
  • 得到闭环系统 (A - BK)z(t) = Aclz(t)
  • 再通过求闭环控制系统的状态矩阵 Acl特征值 ,希望两个特征值均为-1<0(此时平衡点将变成稳定节点),因此可解出 k1 k2
  • 在MATLAB中的代码如下:
matlab 复制代码
clc;clear;close all;
%% 定义参数
  g=10;
  d=1;
%% 定义矩阵
 A=[0 1;g/d 0];
 B=[0;1];
 C = [1, 0];
 D = 0;
%% 建立状态空间方程表达式
sys = ss(A,B,C,D);
%% 定义初始状态
z0=[pi/20;0];
%% 定义系统控制
K = [1+g/d 2];

%% 此时设计好之后,再定义的闭环系统
%% 此时没有B矩阵了,B矩阵为0
sys_cl=ss(A-B*K,[0; 0],C,D);
%% 对初始条件的响应
t=0:0.01:10; %% 时间间隔
[y,t,z]=initial(sys_cl,z0,t);
%% 绘图
%% z1
subplot (2,1,1);
plot(t,z(:,1));
legend('角度:z1(t)');
grid on
%% z1
subplot (2,1,2);
plot(t,z(:,2));
legend('角速度:z2(t)');
grid on

三、运行结果

  • 图中看出,角度 z1(t) ,从初始位置 π/20 开始,逐渐变成0;
  • 而角速度 z2(t) ,因为初始状态就是0,所以先是向下变化,再变为0。(因为看前面模型图,角速度是要向回走,往反方向,所以是负的)
  • 这里 k1 k2 的选择,将会决定系统的收敛速度 和决定系统输入的值 ,而此练习的 k1 k2 是随机选择的。
  • 如果考虑更多的条件,则需要再用到最优化控制 ;在下一个练习,则看如何使用最优化的思路来设计 k1 k2

学习来源:《控制之美》卷1,王天威

相关推荐
彬鸿科技2 小时前
bhSDR Studio/Matlab入门指南(十二):AI神经网络训练(Resnet-SE) 实验界面全解析
人工智能·神经网络·matlab·软件无线电·sdr
rit84324994 小时前
链路预测(Link Prediction)MATLAB 实现
开发语言·matlab
yugi9878384 小时前
MATLAB CNN道路特征提取实现
人工智能·matlab·cnn
yongui478344 小时前
基于稀疏低秩分解的图像去噪MATLAB实现
开发语言·matlab
gihigo19985 小时前
MATLAB实现光谱特征波长提取
开发语言·matlab
fie88895 小时前
matlab打靶法求解两点边值优化问题
开发语言·算法·matlab
hoiii1876 小时前
基于MATLAB实现Lamb波频散曲线求解
开发语言·matlab
yu85939587 小时前
MATLAB 分支定界法(Branch and Bound)实现
开发语言·matlab
吃好睡好便好9 小时前
矩阵秩的计算
人工智能·学习·线性代数·算法·机器学习·matlab·矩阵
listhi5209 小时前
基于雅克比迭代法的方腔流动 MATLAB 实现
开发语言·matlab