基于扰动观测器的控制系统LMI控制

线性矩阵不等式LMI是控制领域的一个强有力的设计工具,许多控制理论及分析与综合问题都可简化为相应的LMI问题,通过构造有限的计算机算法求解,Lyapunov方程、Schur补引理以及交叉项放大在非线性矩阵不等式与LMI的转化过程中起着极为重要的作用。本章是对基于扰动观测器的控制系统进行仿真,使用YALMIP工具箱求解LMI,用simulink的S函数编写控制器和受控对象的程序,结合MATLAB画图函数plot实现系统的仿真。。。

附有 YALMIP下载网址

1 系统描述

在这里插入图片描述

2 控制器的设计与分析

在这里插入图片描述

3 仿真实例

以下仿真程序都是用MATLAB来编写的

3.1 LMI不等式求K程序 K_LMI.m

clear all
clc
J = 1/133;  b = 25/133;
A = [0 1; 0 -b/J];
B = [0 1/J]';
P1 = sdpvar(2,2,'symmetric');
Q1 = sdpvar(2,2,'symmetric');
K1 = sdpvar(1,2);
R1 = sdpvar(1,2);
alfa = 100;
sigma1 = 10;
Fai = [A * Q1 + B * R1 + (A * Q1 + B * R1)' + alfa * Q1 B; B' -(K1*B + B' * K1') + sigma1 + alfa];
L = [Fai < 0, Q1 > 0];
solvesdp(L)
K1 = double(K1);
Q1 = double(Q1);
R1 = double(R1);
P1 = inv(Q1);
K = R1 * P1

3.2 Simulink主程序 sim.mdl

在这里插入图片描述

3.3 被控对象S函数 plant.m

function [sys,x0,str,ts] = plant(t,x,u,flag)
switch flag
    case 0
        [sys,x0,str,ts]=mdlInitializeSizes;
    case 1
        sys=mdlDerivatives(t,x,u);   % dx
    case 3
        sys=mdlOutputs(t,x,u);      % y
    case {2,4,9}
        sys = [];
    otherwise
        error(['Unhandled falg = ',num2str(flag)])
end
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates  = 2;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 3;
sizes.NumInputs      = 2;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 0;   % at least one sample time is needed
sys = simsizes(sizes);
x0  = [1 0];
str = [];
ts  = [];
function sys=mdlDerivatives(t,x,u)
A = [0 1 ; 0 -25];
B = [0 133]';
ut = u(1);
dt = 5 * sin(0.1* t);
dx = A * x + B * (ut + dt);
sys(1) = dx(1);
sys(2) = dx(2);
function sys=mdlOutputs(t,x,u)
dt = 5 * sin(0.1* t);
sys(1) = x(1);
sys(2) = x(2);
sys(3) = dt;

3.4 控制器S函数 ctrl.m

function [sys,x0,str,ts] = ctrl(t,x,u,flag)
switch flag
    case 0
        [sys,x0,str,ts]=mdlInitializeSizes;
    case 1
        sys=mdlDerivatives(t,x,u);   % dx
    case 3
        sys=mdlOutputs(t,x,u);      % y
    case {2,4,9}
        sys = [];
    otherwise
        error(['Unhandled falg = ',num2str(flag)])
end
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates  = 1;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 2;
sizes.NumInputs      = 3;
sizes.DirFeedthrough =1;
sizes.NumSampleTimes = 1;   % at least one sample time is needed
sys = simsizes(sizes);
x0  = [0];
str = [];
ts  = [0 0];
function sys=mdlDerivatives(t,x,u)
x1 = u(1);
x2 = u(2);
X = [x1 x2]';
K = [ -55.6261 -0.7457];
A = [0 1 ; 0 -25];
B = [0 133]';
z = x(1);
K1 = [0 2.7568];
dp = z + K1 * X;
ut = K * X - dp;
sys(1) = -K1 * (A * X + B * (ut + dp));
function sys=mdlOutputs(t,x,u)
x1 = u(1);
x2 = u(2);
X = [x1 x2]';
K1 = [0 2.7568];
K = [ -55.6261 -0.7457];
z = x(1);
dp = z + K1 * X;
ut = K * X -dp;
sys(1) = ut;
sys(2) = dp;

3.5 作图程序 Simu_Plot.m

figure(1)
subplot(2,1,1)
plot(t,x(:,1),'r','linewidth',2)
xlabel('time(s)')
ylabel('x1 response')
subplot(2,1,2)
plot(t,x(:,2),'b','linewidth',2)
xlabel('time(s)')
ylabel('x2 response')
figure(2)
plot(t,ut(:,1),'r','linewidth',2)
xlabel('time(s)')
ylabel('ut')
figure(3)
plot(t,ut(:,2),'r',t,x(:,3),'k','linewidth',2)
xlabel('time(s)')
ylabel('d,dp')

4 仿真图

figure(1)
在这里插入图片描述
figure(2)
在这里插入图片描述
figure(3)
在这里插入图片描述

5 问题解决

出现“ matlab plot方法只能用于单时序对象 ”怎么解决?
需要修改simulink中的to workspace
(1)save format 改为array
(2)save 2-D signals as 改为Inherit from input (this choice will be removed - see release notes)

双击to workspace修改如下:
在这里插入图片描述

  • 10
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 基于LMI控制系统设计、分析及Matlab仿真是一种现代控制理论方法,它可以用于设计和分析各种控制系统,包括线性和非线性系统。LMI(线性矩阵不等式)是一种数学工具,可以用于描述控制系统的稳定性、性能和鲁棒性等方面。在控制系统设计中,LMI方法可以用于设计控制器,使得系统满足一定的性能要求,例如稳定性、鲁棒性、响应速度等。在控制系统分析中,LMI方法可以用于评估系统的稳定性和性能,并提供优化方案。Matlab仿真是一种常用的工具,可以用于验证控制系统的设计和分析结果。 ### 回答2: LMI是线性矩阵不等式(LMI)的简称,是现代控制学中的一种重要工具,被广泛应用于控制系统的设计、分析和优化。在LMI控制系统设计中,首先要建立数学模型,然后利用LMI不等式从模型中提取出控制性能的要求,进而设计控制律。 在LMI控制系统设计中,对于任何一个控制性能指标,都要用一个LMI不等式来表达。其中,LMI不等式包括一个线性矩阵不等式和一个可行性约束条件。线性矩阵不等式的形式为:A'X+XA+C<0,其中A、C是已知矩阵,X是未知矩阵。如果存在一个可行矩阵X使得该不等式成立,则该不等式是可行的,也即该控制性能指标是满足的。反之,如果不存在任何一个可行矩阵X使得该不等式成立,则该控制性能指标是不满足的。 在LMI控制系统设计中,通常采用Matlab进行仿真分析。Matlab提供了丰富的工具箱和函数库,可以方便地进行LMI控制系统设计和分析。例如,可以使用Matlab的Control System Toolbox和Robust Control Toolbox来设计和分析LMI控制系统。其中,Control System Toolbox提供了控制系统的基本分析和设计工具,而Robust Control Toolbox提供了鲁棒控制系统设计和分析工具。 在使用Matlab进行LMI控制系统设计和分析时,需要注意以下几点: 1. 建立正确的数学模型,包括系统的状态空间表达式、控制目标和性能指标等。 2. 根据不同的控制目标和性能指标,选择合适的LMI不等式,并使用Matlab内置函数lmi进行求解。 3. 通过Matlab的仿真工具进行控制性能的验证和优化。 总之,LMI控制系统设计是一种先进的控制方法,它可以实现对控制系统性能指标的精确控制和优化。在实际设计和应用中,Matlab作为一种强大的工具,能够为LMI控制系统设计和分析提供可靠的支持和帮助。 ### 回答3: 线性矩阵不等式(Linear Matrix Inequality,LMI)是一类重要的系统控制设计工具,可用于描述线性动态系统的稳定性、H∞控制、鲁棒控制等问题。基于LMI控制系统设计在实际工程应用中具有极大的优势,能够有效地解决复杂系统的设计和分析问题。下面将从设计、分析和仿真三个部分介绍基于LMI控制系统设计。 一、设计 在控制系统设计中,需要确定控制器的参数以达到稳定性、性能等要求。基于LMI设计控制器的目标是使得针对系统的所有限制条件以及控制器的参数都能够用LMI表示,从而可以使用matlab工具进行求解。设计过程中需要考虑系统稳定性、H∞性能、鲁棒性等多个方面。对于一个特定的系统,可以通过对其LMI约束进行优化,使其满足各项要求,得到一个性能优异的控制器。 二、分析 基于LMI控制系统设计不仅可以用来设计控制器,还可以用于分析系统稳定性以及各种性能指标。通过对系统的约束条件和约束矩阵进行分析与优化,可以得到系统的稳定性界限,即所谓的LMIs(矩阵不等式)。此外,还可以通过H∞控制LMIs来估计系统的鲁棒性和性能。在分析过程中,需要对系统的各种限制条件进行建模和求解,从而获得系统稳定性与控制器参数之间的关系。 三、仿真 基于LMI控制系统设计还可以在matlab环境下进行仿真。对于一个稳定的控制系统,可以通过模拟输出响应和各种控制参数的变化来评估其性能。仿真过程中需要考虑时间响应、频率响应、灵敏度分析等多种因素。仿真结果可以反映出系统的稳定性、鲁棒性和各种性能指标,为控制器参数的调整提供参考。 综上所述,基于LMI控制系统设计、分析及matlab仿真,是一种高效、精准的系统控制设计工具,它在设计、分析和仿真三个方面均有显著的优势,可以解决复杂系统的设计和控制问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值