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

news2024/9/29 14:08:50

本工具箱教程以控制系统模型创建、分析与设计流程为主线,通过大量示例介绍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本系列第五期文章将对频域分析进行详尽解读,敬请关注!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Shopline对接需要注意的问题

Shopline对接是一项复杂而细致的工作,为了确保对接的顺利进行,并保证系统的稳定性和可靠性,需要注意以下几个方面。 1.API文档的详细阅读 功能理解: 仔细阅读Shopline提供的API文档,全面了解每个接口的功能、参数、返…

一起发现CMake太美-01-CMake是什么CMake的前世今生

本系列课程的主要内容包括: 点击本课程的 链接 可以进入视频课程的学习。 下面介绍本系列课程的第一课的主要内容,本节课从CMake是什么,能做什么,以及CMake的远亲近邻入手,让大家对CMake有一个大致的了解。 随后&am…

SpringBoot+MyBatisPlus实现多数据源动态切换

场景: 假设有一个项目,产品数据存放在new数据库中,公告信息存放在mini数据库中,我们要怎么去查询两个数据库中不同的数据呢? 这个时候我们就要用到mybatisplus提供的多数据源,仅需要如下配置即可实现相关…

【C语言从不挂科到高绩点】24-C语言中的枚举【重点知识】

Hello!彦祖们,俺又回来了!!!,继续给大家分享 《C语言从不挂科到高绩点》课程!! 本节将为大家讲解C语言中非常重要的知识点-枚举: 本套课程将会从0基础讲解C语言核心技术,适合人群: 大学中开设了C语言课程的同学想要专升本或者考研的同学想要考计算机等级证书的同学想…

Anzo Capital昂首资本官网:掌握止损单的艺术,优化交易策略

通过在Anzo Capital昂首资本官网的深入研究,投资者发现宝贵的交易策略,尤其是在市场不活跃的时期,止损单的触发时机往往相当微妙。很多时候,主力的动作似乎开始得更晚,这种情况在交易市场中并不罕见。尽管没有人能够确…

【数据库文档】数据库设计说明书(Word原件参考)

一、 总述 (一) 编写目的 二、 外部设计 (一) 环境说明 (二) 指导 三、 物理实现 (一) 物理结构 (二) 安全设计 四、 表设计结构 (一)…

AutoGen实现多代理—AI Agentic Design Patterns with AutoGen(二)

1. AutoGen顺序对话在客户入职案例上的应用 如图,客户入职前会经历三个阶段,一个代理收集客户的信息,一个代理收集客户的感兴趣话题,一个代理根据前两个代理的基础信息与客户代理对话,产生聊天信息。 本节实验的地址&…

基于SSM+小程序的会议发布与预约管理系统(会议1)(源码+sql脚本+视频导入教程+文档)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 本基于微信小程序的会议发布与预约系统管理员功能有个人中心,发布者管理,用户管理,发布会议管理,会议预约管理,留言板管理&…

C++远端开发环境手动编译安装(centos7)

背景 直接使用yum安装,无法安装指定的版本,因为很多版本并没有在镜像仓库中,所以此处进行手动安装指定版本 使用VMWare安装centos7 准备centos镜像 可以自行搜索下载地址,阿里云的也可以 下载VmWare,社区版即可 可…

【第十四周】PyTorch深度学习实践1

目录 摘要Abstract1.反向传播2.线性回归2.1.准备数据集2.2.设计模型2.3.定义损失函数和优化器2.4.模型训练 3.逻辑回归4.处理多维特征的输入5.加载数据集5.1.导入必要的库5.2.准备数据集5.3.定义模型5.4.构建损失函数和优化器5.5.训练模型 总结 摘要 本周主要通过B站刘二大人的…

酒店新科技,飞睿智能毫米波雷达人体存在感应器,智能照明创新节能新风尚

在这个日新月异的时代,科技正以未有的速度改变着我们的生活。从智能手机到智能家居,每一个细微之处都渗透着科技的魅力。而今,这股科技浪潮已经席卷到了酒店行业,为传统的住宿体验带来了翻天覆地的变化。其中,引人注目…

基于SpringBoot+Vue的茶园茶农文化交流平台

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…

对已经运行的flask服务测试代码覆盖率

上一篇文章《用pytest-cov获取flask项目的测试代码覆盖率》展示了用pytest的测试用例验证flask的函数,获取代码覆盖率信息。但是上述方法要求web服务没有提前启动,而是由pytest来启动,然后运行测试用例。 那么对于已经启动的web服务&#xff…

【STM32-HAL库】MQ2烟雾传感器使用(STM32F407ZET6)

MQ2可燃气体传感器介绍 MQ2是一种广谱气体传感器,能够检测多种可燃气体和烟雾。它是一种低成本、高灵敏度的传感器,广泛应用于家庭和工业环境中的气体监测。 原理 MQ2传感器的工作原理基于金属氧化物半导体(MOX)技术。当传感器暴露…

俄罗斯市场合格评定准入认证要求

前言 国内厂家想要把自己的产品顺利出口到俄罗斯市场,就需要基本了解俄罗斯的市场合格评定准入要求。俄罗斯主要实行的认证有EAC(TR-CU/CU-TR)认证、GOST R认证、计量认证和医疗产品国家注册。下面就分别简单介绍一下这几个产品认证。 一、EAC(TR-CU/CU-TR)认证介绍…

LVGL 笔记

在显示GUI的过程中需要对某些对象进行临时隐藏或临时显示,因此需要对该对象的FLAG进行配置就可以实现对象的显示和隐藏了. lv_obj_add_flag(user_obj, LV_OBJ_FLAG_HIDDEN);//隐藏对象 lv_obj_clear_flag(user_obj, LV_OBJ_FLAG_HIDDEN);//取消隐藏 GUI-Guider 中的选项卡 注意…

Linux驱动开发(速记版)--驱动基础

第一章 初识内核源码 Linux系统源码提供了操作系统的核心功能,如进程管理、内存管理、文件系统等。 BusyBox这类的文件系统构建工具,则提供了在这些核心功能之上运行的一系列实用工具和命令,使得用户能够执行常见的文件操作、文本处理、网络配…

MaxKB知识库问答系统入选Gitee最有价值开源项目

2024年9月19日,飞致云旗下开源项目MaxKB成功加入Gitee平台主导的GVP计划,入选2024年GVP——Gitee最有价值开源项目。MaxKB也是继MeterSphere、DataEase和1Panel之后,飞致云旗下第四个入选GVP的开源项目。 ▲图1 MaxKB入选2024年Gitee最有价值…

软机器人咋模仿生物?响应式水凝胶Aquabots有啥用?快来了解一下!

大家好,今天我们要来了解一项关于响应式水凝胶Aquabots的研究——《Responsive‐Hydrogel Aquabots》发表于《Advanced Science》。在当今科技发展中,制造能像生物体一样具有响应适应性的软机器人是个挑战。而Aquabots为解决这个问题带来了新的突破。它通…

vue3项目执行pnpm update后还原package.json文件后运行报错

项目场景: vue官方版本已更新到vue3.5,项目中还在使用vue3.4,因此想要更新项目vue版本。 问题描述 执行了 pnpm update 命令,一键更新了所有包,更新完成后项目不能正常运行。为了还原项目代码,先删除 nod…