在本教程中,我们讨论将连续时间模型转换成离散时间(或差分方程)模型的方法,我们还将介绍z变换,并展示如何使用它来分析和设计离散时间系统的控制器。
本教程中使用的主要MATLAB命令为:
简介
下图展示了我们一直考虑的典型连续时间反馈系统模型。几乎所有连续时间控制器都可以使用模拟电子设备来实现。
阴影矩形中的连续控制器可以由如下所示的数字控制器代替,该数字控制器执行与连续控制器相同的控制任务。而区别在于,数字控制器对感应信号的采样是离散而不是连续的。如果我们希望在数字计算机上实现控制(通常是这样),则可能就需要这种离散变化。
上面的数字系统原理图的各种信号可以用下面的曲线表示
本教程的目的是演示如何使用MATLAB处理离散函数(传递函数或状态空间形式)以设计数字控制系统。
零阶保持
在上面的数字控制器系统示意图中,我们看到系统包含离散部分和连续部分。通常,被控对象在物理世界中,并且生成并响应连续时间信号,而控制算法可以在数字计算机上实现,设计数字控制器系统时,我们首先需要找到系统连续部分的离散等效部分。
对于这项技术,我么将考虑数字控制系统的以下部分,并按以下方式重新排列。
连接到 D/A 和 A/D 转换器的时钟每
T
T
T 秒提供一个脉冲,并且每个 D/A 和 A/D 仅在脉冲到达时才发送信号。具有该脉冲的目的是要求
H
z
o
h
(
z
)
H_{zoh}(z)
Hzoh(z) 仅作用于周期性输入采样
u
(
k
)
u(k)
u(k) ,并且仅在离散的时间间隔产生周期性输入
y
(
k
)
y(k)
y(k) 。因此,
H
z
o
h
(
z
)
H_{zoh}(z)
Hzoh(z) 可以作为离散函数。
我们想要找到一个离散函数
H
z
o
h
(
z
)
H_{zoh}(z)
Hzoh(z) ,以便于是连续系统
H
(
s
)
H(s)
H(s) 具有分段恒定输入,连续系统的采样输出等于离散输出。假设信号
u
(
k
)
u(k)
u(k) 代表输入信号的采样,通过一些技术可以获得该采样值
u
(
k
)
u(k)
u(k) 并保持它产生连续信号
u
^
(
t
)
\hat{u}(t)
u^(t) 。下图显示了一个示例,在每个采样
u
(
k
)
u(k)
u(k) 上,连续信号
u
^
(
t
)
\hat{u}(t)
u^(t) 在
k
T
kT
kT 到
(
k
+
1
)
T
(k+1)T
(k+1)T 的时间间隔内保持恒定。在采样周期内保持
u
^
(
t
)
\hat{u}(t)
u^(t) 不变的操作称为零阶保持。
然后将保持的信号
u
^
(
t
)
\hat{u}(t)
u^(t) 传递给
H
2
(
s
)
H_2(s)
H2(s) ,A/D 产生的输出
y
(
k
)
y(k)
y(k) 可以等效为离散信号
u
(
k
)
u(k)
u(k) ,通过
H
z
o
h
(
z
)
H_{zoh}(z)
Hzoh(z) 而产生的信号
y
(
k
)
y(k)
y(k)。
现在我们更新一下控制框图,用
H
z
o
h
(
z
)
H_{zoh}(z)
Hzoh(z) 代替系统的连续部分。
现在,我们可以设计一个仅处理离散功能的数字控制系统。
注意:在某些情况下,离散响应与数字控制系统中实现的保持电路产生的连续响应不匹配。有关更多信息,可以参见与保持相关的滞后效应。
使用c2d
进行离散变换
在MATLAB中使用c2d
命令,它使用上述的零阶保持操作将给定的连续系统(以传递函数或状态空间形式)转换为离散系统。MATLAB中的基本语法是 sys_d = c2d(sys,Ts,'zoh')
。
采样时间 (以秒为单位的 Ts )应小于 1/(30BW),其中BW是系统的闭环带宽频率。
示例:质量块弹簧阻尼器
转换
假设您具有以下连续传递函数模型:
X
(
s
)
F
(
s
)
=
1
m
s
2
+
b
s
+
k
\frac{X(s)}{F(s)} = \frac{1}{ms^2+bs+k}
F(s)X(s)=ms2+bs+k1假设闭环带宽频率大于 1 rad/sec,我们将选择等于 1/100 sec 的采样时间(Ts)。
m = 1;
b = 10;
k = 20;
s = tf('s');
sys = 1/(m*s^2+b*s+k);
Ts = 1/100;
sys_d = c2d(sys,Ts,'zoh')
状态空间
该系统的连续时间状态空间描述如下:
x
˙
=
[
x
˙
x
¨
]
=
[
0
1
−
k
m
−
b
m
]
[
x
x
˙
]
+
[
0
1
m
]
F
(
t
)
\mathbf{\dot{x}} = \left[ \begin{array}{c} \dot{x} \\ \ddot{x} \end{array} \right] = \left[ \begin{array}{cc} 0 & 1 \\ -\frac{k}{m} & -\frac{b}{m} \end{array} \right] \left[ \begin{array}{c} x \\ \dot{x} \end{array} \right] + \left[ \begin{array}{c} 0 \\ \frac{1}{m} \end{array} \right] F(t)
x˙=[x˙x¨]=[0−mk1−mb][xx˙]+[0m1]F(t)
y
=
[
1
0
]
[
x
x
˙
]
y = \left[ \begin{array}{cc} 1 & 0 \end{array} \right] \left[ \begin{array}{c} x \\ \dot{x} \end{array} \right]
y=[10][xx˙]
A = [0 1;
-k/m -b/m];
B = [ 0;
1/m];
C = [1 0];
D = [0];
Ts = 1/100;
sys = ss(A,B,C,D);
sys_d = c2d(sys,Ts,'zoh')
从这些矩阵中,离散状态空间可以写成
[
x
(
k
)
v
(
k
)
]
=
[
0.9990
0.0095
−
0.1903
0.9039
]
[
x
(
k
−
1
)
v
(
k
−
1
)
]
+
[
0
0.0095
]
F
(
k
−
1
)
\left[ \begin{array}{c} x(k) \\ v(k) \end{array} \right] = \left[ \begin{array}{cc} 0.9990 & 0.0095 \\ -0.1903 & 0.9039 \end{array} \right] \left[ \begin{array}{c} x(k-1) \\ v(k-1) \end{array} \right] + \left[ \begin{array}{c} 0 \\ 0.0095 \end{array} \right] F(k-1)
[x(k)v(k)]=[0.9990−0.19030.00950.9039][x(k−1)v(k−1)]+[00.0095]F(k−1)
y
(
k
−
1
)
=
[
1
0
]
[
x
(
k
−
1
)
v
(
k
−
1
)
]
y(k-1) = \left[ \begin{array}{cc} 1 & 0 \end{array} \right] \left[ \begin{array}{c} x(k-1) \\ v(k-1) \end{array} \right]
y(k−1)=[10][x(k−1)v(k−1)]现在我们有了离散时间状态空间模型
稳定性和瞬时响应
对于连续系统,我们知道系统的表现是由s平面中不同的极点位置引起的。例如,当任何极点都位于虚轴的右侧时,系统都是不稳定的。对于离散系统,我们可以分析z平面中不同极点位置来观察系统的表现。通过以下表达式,z平面中的特性可以与s平面中的特性相关。
z
=
e
s
T
z = e^{sT}
z=esT
- T = 采样时间(sec/sample)
- s = s平面中的位置
- z = z平面中的位置
下图使用上述表达式显示了从s平面到z平面的恒定阻尼比 ζ \zeta ζ 和自然频率 ω n \omega_n ωn 的映射关系。
您可能已经注意到,在z平面中,稳定边界不再是虚轴,而是半径为1的圆心,其中心为原点 |z| = 1,称为单位圆。当所有极点都位于单位圆的内部时,离散系统时稳定的,当任何极点位于圆的外部时,则离散系统时不稳定的。
为了分析z平面这两个极点位置的瞬时响应,连续系统设计中使用的以下三个方程式仍然适用。
ζ
ω
n
≥
4.6
T
s
\zeta \omega_n \geq \frac{4.6}{Ts}
ζωn≥Ts4.6
ω
n
≥
1.8
T
r
\omega_n \geq \frac{1.8}{Tr}
ωn≥Tr1.8
ζ
=
−
ln
(
M
p
)
π
2
+
ln
2
(
M
p
)
\zeta = \frac{-\ln(Mp)}{\sqrt{\pi^2+\ln^2(Mp)}}
ζ=π2+ln2(Mp)−ln(Mp)
其中
- ζ \zeta ζ = 阻尼比
- ω n \omega_n ωn = 自然频率(rad/sec)
- T s Ts Ts = 1%建立时间
- T r Tr Tr = 10%-90%上升时间
-
M
p
Mp
Mp = 最大超调量
说明:z平面中的自然频率 o m e g a n omega_n omegan 单位是 rad/sample,但是当使用上面显示的方程式时, o m e g a n omega_n omegan 的单位必须是 rad/sec。
假设我们有以下离散传递函数
Y ( z ) F ( z ) = 1 z 2 − 0.3 z + 0.5 \frac{Y(z)}{F(z)} = \frac{1}{z^2-0.3z+0.5} F(z)Y(z)=z2−0.3z+0.51
通过以下命令来获得具有恒定阻尼比和自然频率的z平面图。
numDz = 1;
denDz = [1 -0.3 0.5];
sys = tf(numDz,denDz,-1); % the -1 indicates that the sample time is undetermined
pzmap(sys)
axis([-1 1 -1 1])
zgrid
从该图中可以看出,极点的自然频率约为
9
π
/
20
T
9\pi/20T
9π/20T (rad/sample),阻尼比为0.25。假设我们的采样时间为 1/20s,(
o
m
e
g
a
n
omega_n
omegan=28.2rad/sec),通过上面三个式子,我们可以确定该系统的上升时间应为0.06s,最大过冲百分比为45%,让我们获取阶跃响应。
sys = tf(numDz,denDz,1/20);
step(sys,2.5);
从图中可以看出,上升时间,稳定时间和超调量是我们期望的。这说明了我们如何使用极点的位置和上述三个方程来分析离散系统的瞬时响应。
离散根轨迹
根轨迹是当单个参数从零变化到无穷大时可以找到特征方程根的点的轨迹。我们的具有简单比例增益
K
K
K的单位反馈系统的特征方程为:
1
+
K
G
(
z
)
H
z
o
h
(
z
)
=
0
1+KG(z)H_{zoh}(z) = 0
1+KG(z)Hzoh(z)=0其中
G
(
z
)
G(z)
G(z) 是数字控制器,
H
z
o
h
(
z
)
H_{zoh}(z)
Hzoh(z) 是z域中的被控对象函数(通过零阶保持获得)
绘制根轨迹的方法在z平面中与s平面中完全相同。我们使用MATLAB的函数sgrid
来找到连续系统中可接受的增益
K
K
K 的根轨迹区域,对于离散根轨迹区域我们将使用 zgrid
,语法 zerid(zeta,Wn)
,绘制具有恒定阻尼比(zeta)和自然频率(Wn)的轨迹。
假设我们有以下离散传递函数
Y
(
z
)
F
(
z
)
=
z
−
0.3
z
2
−
1.6
z
+
0.7
\frac{Y(z)}{F(z)} = \frac{z-0.3}{z^2-1.6z+0.7}
F(z)Y(z)=z2−1.6z+0.7z−0.3要求是阻尼比大于 0.6,自然频率大于 0.4 rad/sample。
numDz = [1 -0.3];
denDz = [1 -1.6 0.7];
sys = tf(numDz,denDz,-1);
rlocus(sys)
axis([-1 1 -1 1])
zeta = 0.4;
Wn = 0.3;
zgrid(zeta,Wn)
从该图中可以看出,对于某些
K
K
K 值,系统时稳定的,因为根轨迹的某些部分,两个分支方向都在单位圆内。此外,我们可以观察到两条虚线,它们代表很定的阻尼比和自然频率,恒定Wn轨迹外大于0.3,恒定阻尼比zeta轨迹内大于0.4。在该示例中,所生成的根轨迹的一部分在区域内。因此,选择将两个闭环极点放置在期望区域内,所得到的增益
K
K
K即使满足我们要求的点。