当前位置: 首页 > news >正文

状态空间方程 —— 极点配置

  • 极点配置
    • 从 PID 到极点配置
    • 举例说明特征值如何影响系统
    • 极点配置如何移动
    • 二阶系统示例

参考:What is Pole Placement (Full State Feedback)

极点配置

极点配置(Pole Placement)完全状态反馈 是控制理论中的一种设计方法,用于通过 适当选择控制器增益,使得闭环系统的极点(也即系统特征方程的根)位于预定的位置,从而达到所需的动态性能和稳定性要求。极点的位置直接影响系统的响应特性,如稳定性、速度、阻尼等。

现在,极点配置本身在工业中并没有得到广泛的应用。你可能会更常使用其他方法,例如 LQR 或 H ∞ H_\infin H,但是极点配置值得花一些时间,因为它能让你更好地理解 使用状态空间方程进行反馈控制 的一般方法,这是进入其他方法的垫脚石。

从 PID 到极点配置

首先,我们有一个具有输入 u u u 和输出 y y y 的装置(Plant),目标是 开发一个反馈控制系统将输出驱动到某个期望值

在这里插入图片描述

你可能熟悉的一种方法是将输出与参考信号进行比较以获得控制误差,然后你可以开发一个控制器,该控制器使用该误差来生成输入到装置的信号,目标是将误差驱动到零

但对于极点配置,我们将以不同的方式解决这个问题,我们 将反馈 状态向量中每个状态变量的值,而不是反馈输出 y y y

现在,我们要 假设我们知道每个状态的值,即使它不一定是输出 y y y 的一部分,然后 取状态向量并将其乘以一个由一堆不同增益值组成的矩阵 K K K,并 将结果从缩放的参考信号 K r K_r Kr 中减去,并将此结果直接输入到我们的装置中作为输入。

在这里插入图片描述

这里没有像在反馈结构框图中标记为控制器的块,图中绿圈整个部分都是控制器。

在这里插入图片描述

通过极点配置 可以 计算适当的增益矩阵 K K K确保系统稳定性,参考上的缩放项用于确保稳态误差性能在可接受范围内。

状态方程中的第一项 A x Ax Ax 捕获线性系统的动态特性,第二项是 系统如何响应输入,但系统中的能量如何存储和移动是由 A x Ax Ax 项捕获的,所以你可能会认为在控制器设计方面, A A A 矩阵有一些特殊之处。

是的!反馈控制器都必须 修改 A A A 矩阵才能改变系统的动态特性,尤其是在稳定性方面

在这里插入图片描述
A A A 矩阵的特征值是系统的极点,极点的位置决定了线性系统的稳定性,这是极点配置的关键,通过移动极点或闭环 A A A 矩阵的特征值来生成所需的闭环稳定性

举例说明特征值如何影响系统

看下面这个例子, A A A 矩阵转换为使用另一组状态变量来描述系统的矩阵,此转换是使用 变换矩阵 完成的,其列是 A A A 矩阵的特征向量

在这里插入图片描述
转换后我们得到的是一个修改后的 A A A 矩阵,由对角线上的复数特征值和其他所有位置的零组成,现在 绿色箭头所指的这两个模型代表完全相同的系统,它们具有 相同的特征值和相同的动态,只是第二个模型使用一组彼此独立变化的状态变量来描述

A A A 矩阵以对角形式写出时,很容易看出我们剩下的是 一组一阶微分方程,其中每个状态的导数仅受该状态的影响,而不受其他任何影响

在这里插入图片描述

很酷的是,像这样的微分方程的解的形式是 Z = C e λ T Z=C e^{\lambda T} Z=CeλT,其中 λ \lambda λ 是给定状态变量的特征值。

看几个不同的 λ \lambda λ 值,这样你就可以直观地看到 能量是如何根据复平面内特征值的位置变化的

在这里插入图片描述

  • 如果 λ \lambda λ 是负实数,那么这是一个稳定的特征值,因为解是 e λ t → 0 e^{\lambda t} \rightarrow 0 eλt0 t → ∞ t \rightarrow \infin t,任何初始能量都会随时间消散;
  • 但如果 λ \lambda λ 是正数,那么它是不稳定的,因为能量只会随时间增长;
  • 如果有一对 虚数特征值,那么这种模式下的能量将 振荡,因为 e e e 的虚数部分会产生 s i n sin sin c o s cos cos
  • 而实数和虚数的任意组合都会产生振荡和指数能量耗散。

极点配置如何移动

现在我们可以陈述我们要解决的问题了。如果对象的特征值位于复平面中不理想的位置,那么我们可以使用极点配置将它们移动到其他地方

当然,如果它们位于右半平面,这是理想的,因为它们不稳定,但非理想位置也可能意味着存在振荡,你想消除它,或者只是加速或减缓特定模式下的能量耗散。

我们现在可以讨论极点配置如何移动特征值。记住我们一开始画的控制器结构,这会导致输入 u = r K r − K x u= rK_r - K x u=rKrKx,其中 r K r r K_r rKr 是缩放参考值, K x Kx Kx 是状态向量,将其反馈 x x x 乘以增益矩阵 K K K

在这里插入图片描述

现在,如果 将此控制输入代入状态方程,将 闭合循环,得到以下状态方程,注意 A A A − B k -Bk Bk 都作用于状态向量,因此我们可以将它们组合起来,得到一个修改后的 A A A 矩阵,这是 闭环 A A A 矩阵,可以通过 选择适当的 K K K 来移动特征值

在这里插入图片描述

二阶系统示例

对于简单的系统,这很容易手动完成,让我们尝试一个具有单个输入的二阶系统的示例,

在这里插入图片描述

我们可以通过将 det ( A − λ I ) = 0 \text{det} (A - \lambda I) = 0 det(AλI)=0 来找到特征值,然后求解 λ \lambda λ,它们分别位于 − 2 -2 2 + 1 +1 +1 处,由于存在正的实特征值,其中一个模式将爆炸到无穷大,因此整个 系统是不稳定的

让我们使用极点配置设计一个反馈控制器,通过将不稳定的极点移动到左半平面来稳定该系统,我们的闭环 A A A 矩阵是 A − B k A-Bk ABk,增益矩阵 K K K 1 × 2 1\times 2 1×2,因为有一个输出 两个状态。

对得到的新 A − B k A-Bk ABk 进行,像以前一样求解特征值,得到这个特征方程,它是两个增益值的函数。现在 假设我们 希望闭环极点位于 − 1 -1 1 − 2 -2 2,这样特征方程为 λ 2 + 3 λ + 2 = 0 \lambda^2 + 3 \lambda + 2 = 0 λ2+3λ+2=0,此时很容易找到合适的 k 1 k_1 k1 k 2 k_2 k2,使这两个方程相等,我们 只需将系数设置为相等并求解,得到 k 1 = 2 k_1 = 2 k1=2 k 2 = 1 k_2 = 1 k2=1

在这里插入图片描述

就是这样,如果我们将这两个增益放在该系统的状态反馈路径中,它将在特征值位于 − 1 -1 1 − 2 -2 2 时保持稳定。

对于具有两个以上状态的系统,所涉及的数学运算开始变得难以理解。想法一样的,只是求解行列式变得不切实际,但在 MATLAB 几乎只用一个命令。

% Define state matrices
A = [0 1; 2 -1];
B = [1; 0];
C = [1 0];
D = 0;% Create state space object
sys = ss(A, B, C, D);% Check open loop eigenvalues
E = eig(A);% Desired closed loop eigenvalues
P = [-2 -1];% Solve for K using pole placement
K = place(A, B, P);% Check for closed loop eigenvalues
Acl = A - B*K;
Ecl = eig(Acl);% Create closed loop system
syscl = ss(Acl, B, C, D);% Check step response
step(sys)% Create colsed loop system
syscl = ss(Acl, B, C, D);% Check step response
step(syscl)

可以预见的是,开环系统的阶跃是不稳定的

在这里插入图片描述

闭环系统的阶跃响应看起来要好得多,但它并不完美,而不是像我们预期的那样上升到 1,预计稳态输出仅为 0.5,这最终就是缩放项发挥作用的地方。

在这里插入图片描述

http://www.xdnf.cn/news/102097.html

相关文章:

  • 域名 → IP 的解析全过程
  • python异步协程async调用过程图解
  • Linux[指令与权限]
  • ZYNQ笔记(十三):双核 AMP 通信实验
  • 星火燎原:Spark技术如何重塑大数据处理格局
  • 8. kubernetes的service原理
  • MySQL 8 自动安装脚本(CentOS-7 系统)
  • 【哈希表】1399. 统计最大组的数目
  • 从零开始搭建Django博客③--前端界面实现
  • 如何批量为多张图片(JPG、PNG、BMP、WEBP 等格式)添加自定义水印保护
  • ApacheJmeter使用权威指南
  • 【AI】Trae的MCP配置及使用测试
  • 在统信UOS/麒麟Kylin OS操作系统中配置APT和GIT代理
  • 【论文阅读25】-滑坡时间预测-PFTF
  • 时分复用、频分复用和码分复用简要比较分析
  • Linux进程调度
  • AI PPT创作原理解析:让你的演示文稿更智能
  • Python内置函数---breakpoint()
  • 《算法笔记》10.4小节——图算法专题->最短路径 问题 D: 最短路径
  • JavaScript 中改变 this 指向的方法
  • Python 绘图代码解析:用 Turtle 和 Colorsys 打造绚丽图案
  • sde启动报错:Unable to initialize sockets for listening(-102).
  • 基于STM32_HAL库的HC-08蓝牙插座项目
  • C++:多态
  • UnoCSS原子CSS引擎-前端福音
  • 深入解析大数据的Lambda架构:设计、特点与应用场景
  • HTTP代理基础:网络新手的入门指南
  • 从 pip install lanms 失败到解决:Python开发环境配置深度解析
  • FlinkUDF用户自定义函数深度剖析
  • DC-2寻找Flag1、2、3、4、5,wpscan爆破、git提权