【MWORKS专业工具箱系列教程】控制系列工具箱第五期:频域分析
线性系统分析器App提供了 6 种响应图布局和 6 种响应类型,分别为:阶跃、脉冲、波特、波特幅值、奈奎斯特和尼柯尔斯。单击响应图配置前的复选框,选中任意一个响应图配置。单击确定按钮,绘图配置完成后,中央视图的曲线窗口会自动绘制配置的响应曲线。在每一个响应绘图中右键,会弹出菜单,可为绘图增加网格,同时,选择特性,可勾选时频域的对应指标,勾选后会在绘图中进行指标的可视化。线性系统分析器App界面打开
本工具箱教程以控制系统模型创建、分析与设计流程为主线,通过大量示例介绍MWORKS控制系统工具箱的功能和具体使用。共计10篇文章,上一篇主要介绍了控制系统时域分析。
同元软控:【MWORKS专业工具箱系列教程】控制系列工具箱第四期:时域分析
本教程代码均可直接复制到Syslab中运行,使用教程中代码前需参照下述方法加载函数库内容: 方法一:在Syslab的命令行窗口先后输入using TyControlSystems、using TyPlot和using TyBase并回车(重启软件或命令行窗口后需重新输入); 方法二:按照下图中的方法预加载函数库(设置好后每次启动软件默认加载)。
第五期:频域分析
系统对正弦输入信号的稳态响应称为频率响应。频率特性的图形化表示常用伯德图(bode)、奈奎斯特图(nyquist)以及尼柯尔斯图(nichols)。
一、伯德图(对数坐标图)- bode()
bode() 函数的基本用法
Syslab中可通过 bode() 函数直接绘制系统的伯德图,其调用方式及说明如下:
bode 调用方式 | 说明 |
---|---|
bode(sys) | 计算系统频率响应,并绘制系统bode图 |
bode(sys, w) | 计算系统频率响应,并绘制系统bode图,其中 w 为指定的计算频率: |
bode(___,fmt) | 计算系统频率响应,并绘制系统bode图。fmt为绘图样条属性设置字符串。示例: |
mag, phase, wout = bode(sys, fig = false) | 计算系统频率响应数据,不出图。其中: |
mag, phase, wout = bode(sys, w, fig = false) | 计算系统频率响应数据,不出图。其中: |
示例27: 计算系统频率响应并绘制bode图
output:
output:
绘制不同阻尼的二阶系统频率响应
output:
示例28: 计算下面MIMO系统频率响应并绘制bode图
output:
获取系统频率响应数据
获取示例28所描述系统的频率响应数据
output:
julia> mag
2×2×100 Array{Float64, 3}:
[:, :, 1] =
0.153856 0.00153848
1.15386 1.00001
[:, :, 2] =
0.153859 0.00172822
1.15387 1.00002
[:, :, 3] =
0.153862 0.00194136
1.15387 1.00002
;;; …
julia> phase
2×2×100 Array{Float64, 3}:
[:, :, 1] =
179.339 89.9119
-0.0117543 -0.0881486
[:, :, 2] =
179.257 89.901
-0.0132043 -0.0990199
[:, :, 3] =
179.166 89.8888
-0.0148333 -0.111232
;;; …
julia> wout
100-element Vector{Float64}:
0.01
0.011233240329780271
0.012618568830660204
0.014174741629268049
⋮
系统频率响应数据 mag 、 phase 均为三维数组,其维度: ,其中:
-
为系统输出数量
-
为系统输入数量
-
为频率向量长度
因此,通过 mag[i,j,:] 可取出第 j 个输入到第 i 个输出的幅频响应数据向量
开环频域指标
通过 margin() 函数计算系统开环频率指标
示例29: 设一闭环系统如下,绘制其开环传递函数bode图,并确定其增益裕度、相位裕度
output:
获取系统开环频域指标具体数值
output:
julia> Gm # 绝对单位,可通过 20*log10.(Gm)计算dB值
1×1 Matrix{Float64}:
3.1369449122043203
julia> Pm # 相位裕度
1×1 Matrix{Float64}:
103.6573039145391
julia> Wcg # 增益裕度对应频率
1×1 Matrix{Float64}:
4.013193642825267
julia> Wcp # 开环剪切频率
1×1 Matrix{Float64}:
0.4426380973733456
闭环频域指标
示例30: 考虑如图闭环系统,利用Syslab求取其闭环表达式,并计算其谐振峰值、谐振频率和带宽
output:
# 以绝对单位给出谐振峰值,可通过 20*log10.(gpeak)计算dB值
julia> gpeak, fpeak = getPeakGain(Gcloseloop)
(1.8371173070796, 0.8164958474285937)
julia> fb = bandwidth(Gcloseloop)
1×1 Matrix{Float64}:
1.2619964668070902
考虑通过带宽含义计算得到系统带宽
通过循环计算对数幅频特性的幅值下降到 对应的频率
output:
julia> w[n]
1.2653317593889428
二、奈奎斯特图(极坐标图)- nyquist()
示例31: 计算以下MIMO系统频率响应并绘制Nyquist图
三、尼柯尔斯图(对数幅-相图)- nichols()
示例32: 绘制系统对数幅-相图
output:
Nyquist 图、 Nichols 图的绘制、修饰与 bode() 用法一致,具体可以参考 bode 图示例及参考文档,这里不再赘述
四、Syslab线性系统分析器APP(Linear System Analyzer)
线性系统分析器可以支持分析和查看线性时不变系统(LTI,Linear Time Invariant)的时域和频域响应。使用该应用程序可以:
-
查看和比较 LTI 系统的响应
-
时域响应可视化,例如:阶跃响应、脉冲响应等
-
频域响应可视化,例如:波特图、奈奎斯特图、尼克尔斯图等
-
获取系统关键响应特性指标,例如上升时间、调整时间、稳定裕度等
线性系统分析器APP启动入口
-
启动方式①:通过Syslab App页面程序按钮进入
在Syslab工作区已经定义了一个或若干个系统后,通过Syslab App的按钮直接启动
线性系统分析器App界面打开后,通过菜单:文件→导入,会自动识别当前工作区中已有的控制系统模型,可以选择一个或多个模型导入
比如选择导入的模型是G1,那么系统会默认计算其单位阶跃响应并进行可视化
-
启动方式②:通过命令 tiview() 启动
响应绘图配置
线性系统分析器App提供了 6 种响应图布局和 6 种响应类型,分别为:阶跃、脉冲、波特、波特幅值、奈奎斯特和尼柯尔斯。支持自定义绘图布局以及每个绘图的响应类型。单击:编辑 →绘图配置按钮,弹出绘图配置页面
单击响应图配置前的复选框,选中任意一个响应图配置。针对每个响应图,切换响应类型。单击确定按钮,绘图配置完成后,中央视图的曲线窗口会自动绘制配置的响应曲线。
时频域响应指标获取与可视化
在每一个响应绘图中右键,会弹出菜单,可为绘图增加网格,同时,选择特性,可勾选时频域的对应指标,勾选后会在绘图中进行指标的可视化
其余函数请参阅Syslab-控制系统工具箱帮助文档
"Syslab控制系统工具箱-频域分析"帮助文档https://www.tongyuan.cc/help/SyslabHelp.html#/Doc/TyControlSystems/LinearAnalysis/TimeAndFrequencyDomainAnalysis.html%23%E6%97%B6%E5%9F%9F%E5%88%86%E6%9E%90
本系列第六期文章将对根轨迹分析进行详尽解读,敬请关注!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)