Preliminaries
Kernal:
- 傅立叶:
- Laplace:
Eigenvalues:
Kernel of matrix is null space of matrix :
当零空间只有平凡解的时候, 是可逆的. 反之, 那么矩阵不可逆
O.D.E:
Lecture 01
slides
Control Theory
Control Theory 研究以下三类问题:
System Identification Problem:
graph LR Input-->?-->Outputs
Simulation Problem
graph LR Input-->System-->?
Control Problem
graph LR ?-->System-->Outputs
Control
控制:
- Dynamics: 这个系统本身的变化方向. 如:
- : 恒定增长/减小
- : 指数增长/减小
- : 非线性增长/减小
- Goal: 期望系统达成的目标. 如, 让, 并稳定下来
- Input: 重点的部分. 要设计一个输入(Control System), 使得整个系统达到我们的Goal:
- 是Control Input. 前面的是Dynamics
但是更常见的系统是一个二阶系统(加速度, …):
为了防止过冲(有加速度, 一阶系统仅能做到靠近, 但是无法确保不会“过冲”(overshoot)或者震荡)
Feedback Control
反馈(feedback): 需要知道输出才能知道控制, 即输入是的函数
Negative Feedback
负反馈. 输出越大, 输入越小(或者越负). 防止输出爆炸
e.g. 根据图中的关系写表达式:
- : 最终的输出
- : 由控制器发出的信号, 用于控制最终的输出
- : Error误差, 期望的目标(或者叫Reference)和输出之间的差异
将替换, 得到最终的输出的公式:
此处可以理解为:
- 是一个转换器, 希望得到的是, 有误差, 经过使得最终的输出接近.
- 这个系统的目的是让输出追随目标
使, 可以令, 最终. 即, 如果让控制的增益能够达到无限, 那么系统会忽视其他的组件, 直接复制Reference.
但是实际上这个是理想的系统, 真实世界中由于 能量不是无限的, 因此令是不可能达成的.
Lecture 02
slide
Linear Time Invariant System
Linear Operator
线性操作. 对一个线性系统做线形操作, 得到的系统仍然是线性的.
Laplace Transform
激励函数(Excitation Functions): 在未知系统的时候, 创建一个冲击函数作为输入, 然后根据输出去分析这个系统的构成
- 冲击函数: :
- 阶跃函数: u(t)=\left\{\matrix{1&t>0\\0&t<0}\right.
- Ramp函数:
- Parabola函数:
- Sinusoid函数:
Laplace Transform
定义:
常见的Laplace变换:
常见的Laplace变换的操作, 即复合函数的Laplace变换:
| Theorem | Name |
|---|---|
| Definition | |
| Linearity theorem | |
| Linearity theorem | |
| Frequency shift theorem | |
| Time shift theorem | |
| Scaling theorem | |
| Differentiation theorem | |
| Differentiation theorem | |
| Differentiation theorem | |
| Integration theorem | |
| Final value theorem | |
| Initial value theorem |
Example
计算的Laplace Transform:
Example
计算Laplace Inverse Transform:
Example
根据微分方程求解Laplace Inverse Transform:
对两侧使用Laplace Transform, 得:
因为初始状态下为0, 有:
裂项的求法
裂项之后的结果为:
注意, 高次项裂项需要把低次项都写出来
然后计算系数(对列项后的结果进行操作):
对于, 需要用求导的方式进行计算:
Example
注意, 高次项在裂项的时候需要使用重根, 不能省略这一项
Transfer Function
转移函数是一个线性时不变(LTI)的函数. 定义为: 在 零初始化 的状态下, 系统的输入量与输出量的Laplace Transform之比:
从微分方程转换:
- 将两侧通过Laplace Transform转换成频域
- 写成的形式
Example
System Examples
对于电路系统:
一个RLC振荡电路 RC Circuits RL Circuit
对于一个物理弹簧:
电机转子:
State Space Model
状态: , 一个线性无关的向量
SSM将整个系统的所有的方程, 整理成了两个部分:
- 状态方程:
- 状态的变化速度 = 物理规律当前的状态外部影响力外部输入
- 输出:
- 测量的结果 = 观测能力当前的状态外部对测量值的影响力外部输入
其中:
- 是状态向量
- 是一阶导数
- 是输出向量
- 是输入向量, 或者说control vector
- 是系统矩阵
- 是输入矩阵
- 是输出矩阵
- 是前馈矩阵
O.D.E to State Space Model
原始O.D.E方程:
首先定义: , , ,
有:
则SSM: 可以转换成:
由于, , 则A的上部分为:
根据原始的O.D.E, 有: , 因此, 因此完整的为:
完整的为:
因此, 状态方程为:
输出为, 就是. 则最终的输出方程为:
Transfer Function to State Space Model
首先, 将转移函数转换成O.D.E, 然后使用O.D.E to State Space Model.
对于分子不是常数的转移函数, 引入中间变量.
假设转移函数为
- 引入中间变量, 使得,
- 构造$$
- 构造矩阵. 频域的输出为. 因此, 构建矩阵$$
- 矩阵依然为0
对于分子分母同幂次的转移方程, 需要构建矩阵. 步骤为:
- 将转移函数写成如下形式:$$
- 对于后面的真分式, 使用前面的方法获取矩阵, , :$$
- 矩阵为一个常数
Example
State Space Model to Transfer Function
假设已知:
结论为: 转移函数为
计算矩阵的逆的方法:
的结果仍然是一个矩阵, 的结果是一个scalar. 最终的结果应该是一个矩阵, shape和相同.
的算法为:
Example
Diagonal State Space Repr
引入: 变量的变换
对于一个系统而言, SSM不是唯一的. 将变量通过Transform矩阵转换到另一个变量, SSM也会随之改变.
如, 令, 那么SSM变成了:
使用对角状态空间表达的原因是解耦和, 让变量对最终结果的输出相互独立.
如果没有对角化, 那么可能依赖于. 对角化之后, 只和以及有关
矩阵对角化
Example
Solution: 使用之前的解法:
Example
Solution of the State Space Model
根据SSM的公式, 求解时域的表达式.
假设SSM的状态方程为:
最终的结果为: 其中:
Block Diagram
框图: 信号都是在频域中的.
- 箭头指向某一个框(System), 然后得到输出, 这个过程是做了乘法(以上图中的b为例):
- 箭头指向一个圈(或者一个operator), 指的是按照符号进行相加减, 然后得到输出(如上图中的c)
串联: 频域相乘: 并联: 频域相加: 反馈: 输出影响输入: 等价于:
化简
注意符号
- 叠加原理(superposition):
- 齐次原理:
Example
Solution: 化简框图, 得:
Lecture 03
slide
Poles and Zeros
响应:
- 强迫响应(force response): 由于外界输入引起的响应 (输入函数的极点)
- 自然响应(natural response): 由于系统本身的性质而产生的响应 (转移函数的极点)
极点 的位置决定了 的形态:
| 极点的位置 (在 s 平面上) | 数学形式 () | 自然响应的时间函数形式 () | 物理表现 (参考 Lecture 3, Page 8) |
|---|---|---|---|
| 负实轴上 (左半平面) | 单调衰减。系统受到冲击后平滑地回到零,不震荡(过阻尼)。 | ||
| 原点 | (阶跃) | 常数/积分。系统保持当前状态不恢复。 | |
| 正实轴上 (右半平面) | 单调发散。系统不稳定,数值趋向无穷大。 | ||
| 左半平面共轭复数 | 衰减震荡。系统会震荡,但振幅随 逐渐减小,最终趋于稳定(欠阻尼)。 | ||
| 虚轴上共轭复数 | 等幅震荡。系统像永动机一样不停震荡,不衰减也不发散(临界稳定)。 | ||
| 右半平面共轭复数 | 发散震荡。震荡幅度越来越大,系统不稳定。 |
Typical System
一阶系统只有一个极点, 通常是一个实数.
二阶系统有两个极点, 但是这两个极点不一定是什么, 可能是共轭的也可能是相同的.
- Natural frequency
- Damping ratio
- 假设传递函数为
Performance Metrics
指示系统的性能指标.
- 上升时间: 指示反应速度
- 峰值时间: 上升到最大值的时间
- 超调量 overshoot: 冲过头了多少
- 调节时间: 需要多久稳定下来
_p=\frac{pi}{\omega_n\sqrt{1-\zeta^2}}=\frac{\pi}{\omega_d}$$
Example
Stability
- Stable: 所有的极点都位于左半平面内
- Unstable: 一个或多个极点位于右半平面内
- Marginally Stable: 没有极点位于右半平面内, 但是有不重复的简单极点位于虚轴上
- “简单极点”: 就是不重复的极点
- 如果在虚轴上的极点是重复的, 那么这个系统就是Unstable的
Routh Table
特征方程: 传递函数的分母等于零的函数. 假设特征方程为, 特征方程为
Routh-Table:
假设
首先建立Routh Table的初始行(前两行):
- 第一行, 填入 (从最高次项开始, 隔一个取一个)
- 第二行, 填入 (剩下的系数, 如果缺少则补0)
从第三行开始, 每一行的元素都由上两行计算得出:
注意:这里指的“左上”是当前计算位置的上一行第一列元素. 对于最后一列, 右上和右下补零.
然后一直计算到, 观察第一列的符号变化:
- 如果符号没有变化, 那么说明是稳定的
- 如果符号有变化, 变化的次数就是不稳定极点的个数
Example
因此这个系统是不稳定的, 有两个不稳定极点
特殊情况:
- 如果第一列为0, 那么这个系统一定不是稳定的. 如果硬要算下去, 需要用无穷小量代替0
- 如果一整行都为0, 那么存在关于原点对称的极点(如, ). 如果要继续算下去, 需要求解, 将系数替换. 这里的是将上一行的系数根据劳斯表该行的最高次幂和系数组合的. 如, 最高次幂为, 系数为, 那么
Steady State Error
为了衡量系统的精度, 引入指标稳态误差. 指的是时间趋于无穷大的时候(到达稳定之后), 系统实际输出和期望之间的差值.
Final value theorem:
常见的稳态误差函数:
对于阶跃函数, Type 0的系统(上下幂次相同)有常数误差, Type 1,2误差为0; 对于Ramp函数, 由于有二阶输入, 因此Type 0无法跟住(误差为); 类似的, 三阶输入需要至少Type 2的系统.
通过误差的值计算传递函数
如果有“外部扰动” , 那么最终的输出的稳态误差会有区别: 在这个情况下, 最终的稳态误差为:
Root Locus
在一个系统中, 有一个“调节旋钮” 增益(Gain) , 用于调节系统反应的速度. 如果增益太小, 那么系统的反应会慢; 如果增益太大, 那么系统会不稳定(明显的震荡).
对于高阶系统而言, 极点难以计算. Root Locus的目的是随着从, 得到poles的移动轨迹
画圈表示开环极点(Poles), 画叉表示开环零点(Zeros).
Vector Repr of Complex Numbers
将复数转换成向量, 可以根据Poles和Zeros去直接根据几何求解函数:
Example
Sketching Rules
- 根轨迹的数量等于开环极点的数量
- 所有轨迹从开环极点出发
- 其中有m条轨迹会走进开环零点(一共有m个开环零点, n个开环极点. 通常)
- 剩下的n-m个轨迹会延伸到无穷远处
- 在实轴上的点, 如果右侧极点零点加起来为奇数, 那么当前这一段为root locus; 如果加起来是偶数, 那么当前这一段不为root locus
- e.g.,
- 此时数轴为:
graph LR x1(0) x2(\-1) x3(\-5) z(\-3) \-infty-->x3-->z-->x2-->x1-->infty - 按照从右往左的顺序
- 第一段不是(因为0个点)
- 第二段是, 因为有一个极点
- 第三段不是, 因为有两个极点
- 第四段是, 因为有一个零点和两个极点
- 第五段不是, 因为有三个极点和一个零点
- 注意只有是一个线段. 因为两个都是极点, 因此会发散到无穷远处
- 对于去无穷远处的root locus, 会沿着渐近线走向无穷远处.
- 所有的渐近线在实轴上交于一点, 这个点为
- 每个渐近线的角度为. 即如果, 那么角度分别为
- 当两条轨迹在实轴上相遇的时候, 会分开跑向复平面(e.g. 第三条的例子的)
- 分开的位置为: 求解得出.
- 一个简便算法:
- 是极点的值, 是零点的值
如何确定一个sketch是否是root locus:
- 对称性: 沿实轴对称
- 这个sketch如果右侧有偶数个点, 那么一定不是root locus
- 数量守恒: sketch的数量等于极点的数量
- 去无穷远处的数量一定等于, 就是 极点个数-零点个数
- 起点一定是极点, 终点一定是零点或无穷远
examples:
Lecture 4
slide
Compensator
常见串联在误差信号之后, 受控对象(Plant)之前. 数学上引入了额外的极点和零点到系统中(动态的补偿器)
在Root Locus中, 只调节了一个静态的常数增益. 如果给Gain引入变量, 让Gain和输入输出有关, 就得到了Dynamic Compensator. 引入动态补偿器的目的是, 如果受控对象的表现(如速度/精度/稳定性等)无法满足需求, 那么可以加入一个“大脑”(补偿器)来改变输入信号, 补偿硬件的缺陷
Integral and Lag Compensation
积分补偿器(Integral Compensator): 在原点处有极点, 在处有零点的一个补偿器:
- 作用: 消除稳态误差
- 副作用: 会完全改变Root Locus
- 解决方案: 变成一个很小的数, 和原点处的极点组合来抵消对高频轨迹的影响
设计方法:
- 确定要求, , 和对应的增益
- 极点一定位于原点处
- 零点位于非常靠近原点的负实轴上
- 确定增益: , 或者按照幅值条件微调
延后补偿器(Lag Compensator): 或
- 改善稳态精度 同时既可能保持原有的瞬态响应不变
- 极点和零点都在非常靠近原点处
- 对增益的提升倍数为
- 这个用于题目中有提到“improve the steady-state error by factor ”这种说法
- , 即零点的位置更靠左
设计方法:
- 确定倍数
- 选择一个极点, 尽可能靠近原点
- 计算零点
- 增益应该和原始的增益近似: , 最终的增益应该由Compensator进行调整
Differentiation and Lead Compensation
微分控制器(Derivative Compensator): 引入一个零点,
- 增加阻尼(Damping), 提前“刹车”, 防止过冲(允许让Gain开的比较大)
- 只提供一个零点, 没有极点的干扰, 因此能够提供非常丰富的角度补偿
- 根据需要的root去修改root locus
- 由于要求, 因此直接修改root locus是不可行的.
- 因此引入一个零点用于平衡
设计方法:
- 根据设计指标(, 等)确定
- 计算当前极点零点对的角度:
- 根据角度和得到需要补偿的角度
- 利用几何关系计算零点
- , 其中
- 利用条件来计算新的增益
提前补偿器(Lead Compensator):
- Derivative Compensator通过引入零点提供更丰富的角度补偿, 但是会极大改变Transient Response
- 因此这个提供一个极点一个零点, 来维持原始的Transient Response变化不大
设计方法:
- 同PD的设计, 首先确定, 然后确定
- 设计零点和极点. 有两种方法:
- 抵消法: 将一个零点放在一个极点上, 然后计算满足的另一个极点
- 角平分线法: 几何作图, 使得与零极点连线的夹角平分线通过原点
- 根据计算增益
PID Control
- 比例 P:
- 误差积分 I:
- 微分 D:
设计方法:
- 确定目标极点:
- 根据计算
- 根据计算
- 在复平面上计算
- 设计PD零点:
- 计算角度亏空
- 利用PD控制器提供的角度, 计算PD零点位置
- 此时控制器为
- 设计PI零点:
- PI零点应该靠近原点 (任意选择一个零点)
- 引入原点处的积分极点
- 此时控制器为
Lag-Lead Compensation
通常采用先Lead再Lag的形式:
计算方法:
- 确定:
- 根据确定
- 根据确定和
- 设计Lead部分:
- 设计lead的零点(可以考虑放在一个极点上, 进行抵消)
- 计算角度亏空
- 根据计算必须提供的角度, 来设计
- 利用幅值条件, 计算增益
- 设计lag部分:
- 基于Lead的增益, 计算提升倍数, 使用Steady State Error计算
- 放置零点, 任意位置, 但是要靠近原点
Notch Filter
在剧烈波动的峰值处放一个零点和极点, 抑制这个波动:
- : 零点阻尼比, 确定限制强度(越小越强)
- : 极点阻尼比, 确定限制范围
Summary
Feedback Compensation
Lecture 5
slide
Lecture 6
slide
Lecture 7
slide
Review
slide