绘制系统反应图
本例演示如何绘制 SISO 和 MIMO 线性系统的时间和频率响应图。
绘制时间特性图
让我们创建三阶传递函数。
Pkg.add(["RobustAndOptimalControl", "ControlSystems"])
using ControlSystems
sys = tf([8, 18, 32],[1, 6, 14, 24])
您可以使用step()
和impulse()
库ControlSystems.jl
绘制系统的瞬态函数和脉冲函数。
plot(
plot(step(sys,10),title="Реакция на ступенчатое воздействие"),
plot(impulse(sys,10),title="Реакция на импульс"),
layout=(2,1)
)
您还可以使用lsim()
命令模拟对任意信号(如正弦波)的响应。输入信号显示为灰色,系统响应显示为蓝色。
t = collect(0:0.001:4);
u = sin.(10*t);
plot(lsim(sys,u',t))
plot!(t,u)
频率和时间响应命令可用于连续和离散信号或模型。对于状态空间模型,还可以绘制从给定初始状态开始的系统响应。
A = [-0.8 3.6 -2.1;-3 -1.2 4.8;3 -4.3 -1.1];
B = [0; -1.1; -0.2];
C = [1.2 0 0.6];
D = -0.6;
G = ss(A,B,C,D)
t1 = collect(0:0.001:18);
u1 = fill(0,(1, 18001))
x_0 = [-1.0; 0.0; 2.0] # initial state
plot(lsim(G, u1, t1, x0 = x_0))
频率响应
频域分析是了解控制系统稳定性和性能特征的关键。Bode 图、Nyquist 图和 Nichols 图是绘制和分析线性系统频率响应的三种标准方法。您可以使用ControlSystemsBase.bodeplot
、ControlSystemsBase.nicholsplot
和ControlSystemsBase.nyquistplot
命令创建这些图。
bodeplot(sys, label="sys",title="Диаграмма Боде")
nyquistplot(
sys,
unit_circle = true,
Mt_circles = true,
hz = true,
label="sys",
title="Диаграмма Найквиста"
)
ws = exp10.(range(-2,stop=2,length=200))
nicholsplot(sys,ws)
极点和零点图、根节点图
系统的极点和零点包含有关其动态、稳定性和性能极限的宝贵信息。例如,考虑以下 SISO 控制回路中的反馈回路。

给你
极点和零点图可以用来确定闭环系统的稳定性。
s = tf('s');
G = -(2*s+1)/(s^2+3*s+2);
k = 0.7;
T = feedback(G*k,1);
pzmap(T; hz = true)
闭环的极点(用十字标记)位于左半平面内,因此在此增益选择下,闭环系统是稳定的。
为了更好地理解闭环增益如何影响稳定性。您可以使用rlocus()
命令绘制极点位置图,即冠状霍多图。
plot(rlocus(G,3))
如果将光标移到霍多图与 Oy 轴的交点上,就会看到系统变得不稳定时的系数值。因此,闭环增益必须小于 1.5 才能保持稳定。
系统响应的特点
响应图中可以显示各种特征。让我们以阶跃响应图为例进行说明。
result = step(T);
plot(result)
要确定图形的特征,请使用函数stepinfo
。它会返回瞬态的所有特征,如稳态时间、过冲等。这些信息可以写入变量,也可以使用plot
绘制。
res1 = stepinfo(result)
plot(stepinfo(result))
分析多输入多输出系统
上述所有命令都完全支持多输入多输出(MIMO)系统。
让我们创建一个有两个输入和两个输出的系统。为此,请连接RobustAndOptimalControl.jl
.
import Pkg
Pkg.add("RobustAndOptimalControl")
using RobustAndOptimalControl
使用ssrand
在状态空间中随机定义系统。使用named_ss
命名系统的输入、输出和状态。
sys = named_ss(ssrand(2,2,3), x=:x, u=:u, y=:y)
sys.A .= [-0.5 -0.3 -0.2 ; 0 -1.3 -1.7; 0.4 1.7 -1.3]
sys
plot(step(sys,8))
用于构建多输入多输出系统的其他有用图表。
- 奇异值图(sigma)。对于多输入多输出(MIMO)系统,西格玛图显示频率响应矩阵每个奇异值对应的最小图线。
- 每个输入/输出对的极点/零点显示。
例如,绘制 sys 的峰值增益与频率的函数关系图:
sigmaplot(sys)
系统比较
要比较不同系统的性能,可以将它们显示在一张图表上。为每个系统指定特定的颜色、标记或线条样式,便于比较。使用上述反馈示例,用三种不同颜色绘制环路增益 k 的三个值时闭环的阶跃响应:
k1 = 0.4;
T1 = feedback(G*k1,1);
k2 = 1;
T2 = feedback(G*k2,1);
plot(step([T T1 T2]), line=[:green :red :black])
输出
在本例中,我们了解了控制系统各种特征的构造。更多控制系统分析功能可参阅 分析。