目录一览

系统
           1.建模
           2.分析
控制
           3.PID
           4.根轨迹
           5.频率
           6.状态空间
           7.数字化
Simulink
           8.建模
           9.控制

建模(System Modeling)
分析、控制动态系统的第一步是由物理定律(如力学中的牛顿定律和电学中的Kirchoff’s current law (KCL)、Kirchoff’s voltage law (KVL))或实验数据建立数学方程,大多数的动态系统可以用下式表达:
[公式]
其中,x(t)是状态向量,系统的阶数n等于状态向量的维数,通常,n等于系统中独立储能元素的个数;u(t)是控制输入向量。
为了使其易于处理,通常有两个假设:
1> 时不变系统:函数关系f不随着时间t变化,即

 [公式]。 物理定律不随着时间而变化,即方程中的系数不会变化,这是此假设成立的依据。

2> 线性系统:将动态系统进行线性化近似,即

 [公式]。事实上几乎所有的系统都是非线性的,但在小范围内,我们经常能够进行线性化处理。

当系统满足这两个假设时,我们称其为线性时不变系统(LTI,linear time invariant),这构成了经典控制理论的主要内容。

写好数学方程后,进一步表示为状态空间模型(时域)和传递函数模型(频域)进行分析计算:

(1)状态空间方程(State-Space Representation)
[公式] (状态方程)


[公式] (输出方程)

其中,x是状态向量,y是输出向量,A是系统矩阵,B是输入矩阵,C是输出矩阵,D是前馈矩阵。
状态空间方程为系统在时域上的表示形式,能够方便地处理初值非零的多输入多输出(MIMO,multi-input/multi-output)系统,甚至非线性系统,因此广泛用于现代控制理论。
在Matlab中使用ss(A,B,C,D) 建立状态空间方程表示的数学模型
(2)传递函数(Transfer Function Representation)
LTI有一个重要的特性是当输入为正弦信号时,输出也为同频率的正弦信号,而信号的幅值、相位会发生改变。幅值、相位差可以表示为频率的函数,称为系统的频率响应函数。

而使用拉普拉斯变换可以直接把时域的函数 f(t) 转换到频域F(s)。频率响应法常用来处理能用常系数微分方程表示且初始值为0的单输入单输出(SISO,single-input/single-output)系统:

[公式]

当初值为0,进行拉普拉斯变换后有:

[公式]

整理后有:

[公式]

表示成零极点形式有:

[公式]

G(s)称为传递函数。
在Matlab中申明s为传递函数变量

[公式], 然后直接输入传递函数表达式或使用

[公式]命令(num,den 为分子分母多项式的系数向量)建立传递函数表达的数学模型。
而零极点表示的传递函数申明函数为

[公式]

(3)状态空间方程与传递函数之间的转换:

[公式]

Matlab中的转换:

上表均是不同模型形式的参数转化,设传递函数为tf_model,状态空间方程为ss_model,零点-极点-增益为zpk_model。模型间的直接转换有

tf_model = tf(sys)       //将其他类型的模型转换为多项式传递函数模型
ss_model = ss(sys)      //将其他类型的模型转换为状态空间模型
zpk_model = zpk(sys)    //将其他类型的模型转换为零极点增益模型

由模型得到参数(G可以为任何一个形式表示的模型)

[A,B,C,D] = ssdata(G)
[z,p,k] = zpkdata(G,'v')
[num,den] = tfdata(G,'v')


举例分析及Matlab求解:
1> 机械系统
弹簧阻尼质量快系统

受力分析如下


由牛顿定律建立动力学方程:[公式]
1.1> 状态空间方程
选择状态向量为 X = [x; x'],分别对应系统中的弹簧势能和质量块的动能。则有状态方程:
[公式]
如果我们关心的输出是质量块的位置则有输出方程:
[公式]
Matlab:

m = 1;
k = 1;
b = 0.2;
F = 1;
A = [0 1; -k/m -b/m];
B = [0 1/m]';
C = [1 0];
D = [0];
sys = ss(A,B,C,D)

1.2> 传递函数
在初始值为0(质量块初始时刻处于平衡位置)时,进行拉普拉斯变换有:
[公式]
[公式]
Matlab:

s = tf('s');
sys = 1/(m*s^2+b*s+k)

或者

num = [1];
den = [m b k];
sys = tf(num,den)

2> 电学系统

由KVL建立电学方程:
[公式]
2.1> 状态空间方程
选择状态向量为 X = [q i]',分别对应系统中的储能器件电容和电感。则有状态方程:

[公式]

如果我们关心的输出是电路中的电流则有输出方程:

y = [公式]
2.2> 传递函数
在初始值为0时,也可由所得的状态空间方程得到传递函数:

Matlab建模同上。

下节:系统分析

----------------------------------------------------------------------------------------------------------------------

欢迎关注、投稿知乎专栏:

用Matlab & Simulink学控制,系列文章是我的学习笔记。学习网站来自于:

Control Tutorials for Matlab & Simulink