Matlab Simulink 主时间步(major time step)、子时间步(minor time step)

news2024/12/23 17:32:17

高亮颜色说明:突出重点
个人觉得,:待核准个人观点是否有误
高亮颜色超链接

文章目录

    • 对Simulink 时间步的理解
    • Simulink 采样时间的类型
      • Discrete Sample Times(离散采样时间)
        • Controllable Sample Time(可控采样时间)
      • Continuous Sample Times(连续采样时间)
        • Continuous Sample Time
        • Fixed-in-Minor-Step Sample Time(子步中不变采样时间)
        • Variable Sample Time
    • Simulink 子时间步日志生成
    • S-Function Callback Methods
    • Simulink 逐步仿真
      • Stepping Forward
      • Capturing Simulation Snapshots
      • Stepping Back
      • Pausing on Breakpoints
      • Additional Considerations for Stepping Through Simulation
      • See Also
      • Related Topics
    • 二级标题
    • 待补充
      • 待补充

对Simulink 时间步的理解

20240915记:
  给定一个具有离散采样时间的模块,Simulink® 软件将在以下时间执行模块输出或更新方法:

t n = n T s + ∣ T o ∣ , t_n=nT_s+|T_o|, tn=nTs+To,

  其中,采样时间周期 T s T_s Ts 始终大于零且小于仿真时间 T s i m T_{sim} Tsim。周期数 ( n n n) 是一个整数且必须满足以下条件:

0 ≤ n ≤ T s i m T s . 0\leq n \leq \frac{T_{sim}}{T_s}. 0nTsTsim.

  在仿真过程中,软件在每个固定时间间隔 t n t_n tn 只计算一次模块输出。这些仿真时间,即软件为给定的采样时间执行模块输出方法的时间,称为采样时间命中点。如果您需要延迟初始采样时间命中点,可以定义偏移量 T o T_o To

  如果模型具有连续状态和/或非采样过零点,则在模型仿真的积分阶段会涉及到子时间步,因为Simulink使用数值积分算法(如ODE45)来模拟系统。连续采样时间命中点分为主时间步(major time steps)子时间步(minor time steps)。子时间步是对主时间步的细分。您选择的 ODE 求解器将对从仿真开始到 给定的主时间步或子时间步 为止的所有连续状态进行积分。求解器将确定子时间步的时间点,并在每个主时间步生成结果,而不向您展示中间计算过程,您只能看到在主时间步的模块输出。求解器使用子时间步的结果来提高主时间步结果的准确性,因为对于某些连续时间模型,子时间步有助于模型中方程的解的收敛。

  • ssIsMajorTimeStep - Determine whether the simulation is in a major step - MATLAB
  • ssIsMinorTimeStep - Determine whether the simulation is in a minor step - MATLAB

Simulink 采样时间的类型

20240915记:
*** Types of Sample Time - MATLAB & Simulink
(##) 采样时间的类型

Discrete Sample Times(离散采样时间)

  假如一个模块具有离散采样时间,Simulink® 软件将在以下时间执行模块输出或更新方法:

t n = n T s + ∣ T o ∣ , t_n=nT_s+|T_o|, tn=nTs+To,

  其中,the sample time period(采样时间周期) T s T_s Ts 始终大于零且小于 the simulation time(仿真时间) T s i m T_{sim} Tsim。周期数 ( n n n) 是一个整数且必须满足以下条件:

0 ≤ n ≤ T s i m T s . 0\leq n \leq \frac{T_{sim}}{T_s}. 0nTsTsim.

  在仿真过程中,软件在每个固定时间间隔 t n t_n tn 只计算一次模块输出。这些仿真时间,即软件为给定的采样时间执行模块输出方法的时间,称为sample time hits(采样时间命中点)。"采样时间命中点是已知先验的"的采样时间类型,只有唯一一种,即离散采样时间。

  如果您需要延迟初始采样时间命中点,可以定义偏移量 T o T_o To

  Unit Delay 模块就是一种具有离散采样时间的模块。

Controllable Sample Time(可控采样时间)

Continuous Sample Times(连续采样时间)

Continuous Sample Time

  连续采样时间命中点分为主时间步(major time steps)和子时间步(minor time steps)。子时间步是对主时间步的细分。求解器在每个主时间步生成结果。求解器使用子时间步的结果来(???)提高主时间步结果的准确性。

  您选择的 ODE 求解器将对从仿真开始到给定的主时间步或子时间步为止的所有连续状态进行积分。求解器将确定子时间步的时间点,并使用子时间步的结果来提高主时间步结果的准确性。您只能看到在主时间步的模块输出

Fixed-in-Minor-Step Sample Time(子步中不变采样时间)

  如果模块的采样时间是 [0 1],则模块将采用子步中不变的采样时间。对于此采样时间,模块不会在子时间步执行。模块仅在主时间步执行。对于主时间步之间无法改变输出结果的模块,采用子步中不变的采样时间消除了不必要的计算。

Variable Sample Time

Simulink 子时间步日志生成

20240915记:
*** Minor Time Step Logging » File Exchange Pick of the Week - MATLAB & Simulink 20110610

  Will 本周推荐的是 Guy Rouleau 的 Minor Time Step Logging。

  当你在Simulink中按下播放按钮时会发生什么?Simulink是如何处理您的系统的?当算法看起来是正确的,但你的结果似乎是可疑的,你如何排除故障?我记得当我第一次开始开发Simulink模型时,这些想法在我的脑海中渗透。如果你对这样的事情感到好奇,一个很好的起点是阅读 Simulating Dynamic Systems 的文档。在有用信息的宝库中,您会发现Simulink的关键概念之一是主时间步(major time step)和子时间步(minor time step)。一旦仿真完成,Simulink就会在特定的时间点提供结果。这些是主时间步的结果。当使用可变步长求解器时,结果精确到您在 Configuration Parameters 中定义的误差容限。

  通常不向您展示的是Simulink的中间计算,因为它在每个主时间步中处理您的系统。对于某些连续时间模型,子时间步有助于模型中方程的解的收敛。任何上过数值方法课的人都会熟悉这个概念,并且可能听说过 Runge-Kutta求解器,这是Simulink中可用的许多求解器算法之一。

  十有八九,你不必担心Simulink在一个子时间步上计算的结果。然而,拥有这些信息对于调试来说是非常宝贵的,并且它可以帮助解决一个古老的问题,“我应该为我的问题选择哪个求解器?”获取在子时间步上的值(minor step values)的方法有很多种,但我绝对喜欢Guy提供的解决方案。

  您所要做的就是将 Minor Time Step Logging block 从库中拖到模型中,并将其连接到感兴趣的信号。运行您的仿真,瞧,您有一个显示在主时间步和子时间步上的值(the major and minor step values)的MATLAB图形。我在许多具有单一和多维信号的模型上进行了试验……每次都很有效。

minorstep_model.png

  我在我久经考验的整流器模型上使用了这个块,并进行了一个小实验。我用ode45和ode23t求解器进行了仿真,并比较了结果,如下所示。正如您所看到的,ode23t在第一个子时间步中可以更好地获得正确的值(所有蓝色X标记都在红色圆圈附近)。然而,由于求解器精度的固有差异,它需要大约两倍的主时间步才能得到解。最终,哪个求解器更适合我的问题?我将把这个问题留作讨论,但这些结果肯定会帮助您理解行为并做出明智的决定。

minorstep_plots.png

  Guy的block是如何产生这些图形的?他依靠一个 Level 2 MATLAB S-Function 将Simulink数据存储到MATLAB工作空间。查看LogMinorTimeStep.m,来看看他是如何利用start、Output和Terminate方法来完成他的目标的。这是一个学习 S-Functions 的好例子,如果你从来没学过的话。

S-Function Callback Methods

20240915记:
How does the minor time step work in Simulink? What does minor time step mean? - Help Center Answers - MATLAB & Simulink 20211123
  Minor time steps occur if your model has continuous states. It occurs during the integration stage of your model. Simulink uses a numerical integration algorithm such as ODE45 to simulate a system. During the integration stage the solver obtains the derivatives from the system and uses it to compute a new state vector for the next time step. This entire process is called the integration phase or minor time step.
  如果模型具有连续状态,则会涉及到子时间步(minor time step),它出现在模型的积分阶段。Simulink使用数值积分算法,如ODE45来模拟系统。在积分阶段,求解器从系统中获得导数,并使用它来为下一个时间步计算一个新的状态向量。这一整个过程称为积分阶段或子时间步。

  Page 3-16 of the Writing S-functions manual (version 3.0) shows a graphical representation of the calling sequence of an S-function which should help to make this more clear. This is also shown here: https://www.mathworks.com/help/simulink/sfg/what-is-an-s-function.

20240915记:
What Is an S-Function? - MATLAB & Simulink
S-Function Callback Methods
  An S-function comprises a set of S-function callback methods that perform tasks required at each simulation stage. During simulation of a model, at each simulation stage, the Simulink engine calls the appropriate methods for each S-Function block in the model. Tasks performed by S-function callback methods include:

  • Compilation — 略
  • Calculation of outputs — 略
  • Update discrete states — 略
  • Initialize and Terminate Methods — 略
  • Integration — This applies to models with continuous states and/or nonsampled zero crossings. If your S-function has continuous states, the engine calls the output and derivative portions of your S-function at minor time steps. This is so the solvers can compute the states for your S-function. If your S-function has nonsampled zero crossings, the engine also calls the output and zero-crossings portions of your S-function at minor time steps so that it can locate the zero crossings.

20240915记:
什么是 S-Function - MATLAB & Simulink - MathWorks 中国
S-Function 回调方法
  S-Function 由一组 S-Function 回调方法组成,这些方法执行每个仿真阶段所需的任务。在模型仿真期间的每个仿真阶段,Simulink 引擎都会为模型中的每个 S-Function 模块调用适当的方法。S-Function 回调方法执行的任务包括:

  • 编译 - 在此阶段,Simulink 引擎初始化 S-Function。任务包括:
    • 将库模块合并到模型中,并传播信号宽度(what???)、数据类型和采样时间
    • 设置输入和输出端口的数目和维度
    • 计算模块参数,并确定模块执行顺序
    • 分配内存和存储区域
  • 计算输出 - 在此状态下,计算输出,直到所有模块输出端口都对当前时间步有效,即所有输出值都在某个误差界限内。
  • 更新离散状态 - 在此调用中,模块执行那些在每个时间步执行一次的活动,如更新离散状态。
  • 初始化和终止方法 - 这些可选方法只执行一次 S-Function 所需的初始化和终止活动。初始化活动可能包括设置用户数据,或在 S-Function 中初始化状态向量。终止方法执行任何操作,例如当仿真终止或从模型中删除 S-Function 模块时释放所需的内存。
  • 积分 - 这适用于具有连续状态和/或非采样过零点(what???)的模型。如果您的 S-Function 具有连续状态,引擎会在子时间步上调用 S-Function 的输出和导数部分。这是为了让求解器可以计算 S-Function 的状态。如果 S-Function 具有非采样过零点,引擎也会在子时间步上调用 S-Function 的输出和过零点部分,以便能够定位过零点。

Simulink 逐步仿真

20240916记:
How Stepping Through Simulations Works - MATLAB & Simulink
(##) How Stepping Through Simulations Works

  在"Simulation Stepping Options(仿真步进选项)"对话框中指定的参数值会影响软件的运行方式:

  • 当您单击"前进(Step Forward)"或"后退(Step Back)"时,向前推进模拟;
  • 捕获模型工况点的快照以支持回退(stepping back);

  在仿真中,当您step forward时,软件将继续向前推进仿真。但是,当您step backward时,软件不会向后回退仿真。为了支持在仿真中stepping back,软件在仿真运行时捕获模型工况点的快照。当您单击"Step Back"时,软件将从其中一个快照恢复模型工况点。

  Note: 只有开启stepping back功能,软件才会采集stepping back仿真快照。当您为正在进行的仿真启用stepping back功能时,您必须先step forward,然后才能step back。您不能step back到启用stepping back之前的仿真中的某个点。

  在"配置参数"对话框的"数据导入/导出(Data Import/Export)"窗格中选择"Save final operating point (保存最终工况点)“时,仿真快照包含的模型工况点信息与记录的相同。软件在仿真快照中捕获模型工况点信息仅支持stepping back。软件为stepping back而捕获的仿真快照在仿真期间或之后都不可访问。有关保存模型工况点的更多信息,请参见"Save Block States and Simulation Operating Points(保存模块状态和仿真工况点)”。

Stepping Forward

  "Move back/forward by"参数指定每次单击"Step Forward"时,将仿真向前推进的时间步数。下图(Fig.1)说明了在"Move back/forward by"选项被指定为1或2时仿真将如何进行:

  • 在仿真开始时,State 0,该参数值为2。单击"Step Forward"后,仿真将通过State 1,在State 2暂停。
  • 在第二个时间步之后暂停时,假设您将该参数值更改为1。现在,当您单击"Step Forward"时,仿真将前进到State 3,它对应于下一个时间步。
  • 假设您在第四个主时间步之后暂停时将该参数值更改回2。现在,当您单击"Step Forward"时,仿真将前进到State 6。
simulationtoolbar_snapsteps1.png

Fig.1: A timeline of the simulation that represents the simulation state for each time step as a green circle. Arced arrows illustrate the simulation progression.
Fig.1: 仿真的时间轴,用绿色圆圈表示每个时间步的仿真状态。圆弧箭头表示仿真过程。

Capturing Simulation Snapshots

  捕获仿真快照软件收集的用于stepping back的仿真快照包含从快照拍摄点开始继续仿真所需的所有信息。收集快照需要内存,并且会影响仿真性能。当您配置仿真步进选项时,您可以指定:

  • 所保存后退时间步的最大数量 - 保存的快照总数量
  • 所保存后退时间步之间的间隔 - 保存快照之间跳过的仿真时间步的数量

  保存较少数量的快照以及在快照之间跳过一些时间步可以减轻启用stepping back功能对仿真性能的影响。

  保存快照的仿真步进选项独立于"Move back/forward by"选项,后者选项控制单击"Step Forward"或"Step Back"时仿真的前进方式。
  下图(Fig.2)说明了当"Interval between stored back steps"参数值为3时,如何捕获快照。软件在仿真开始时、在第三个主时间步之后和在第6个主时间步之后捕获快照。

simulationtoolbar12.png

Fig.2: A timeline of the simulation that represents the simulation state as a green circle. The shade of green is darker for each state that is captured as a snapshot.
Fig.2: 仿真的时间轴,用绿色圆圈表示仿真状态。快照捕获了绿色阴影较深的状态。

  当需要以较小的增量推进仿真以分析感兴趣的点时,您可以在仿真期间更改快照之间的间隔。例如,下图(Fig.3)说明了如果将快照之间的间隔从3更改为1,上一个图(Fig.2)中的仿真将如何捕获快照。

  • 软件在仿真开始时捕获State 0的快照。
  • 经过三个时间步,软件捕获State 3的快照。
  • 在第三个时间步之后的State 3上暂停时,将"Interval between stored back steps"参数值从3更改为1。
  • 此后,软件为每个时间步捕获仿真状态的快照,通过State 6。
simulationtoolbar14.png

Fig.3: A timeline of the simulation that represents the simulation state as a green circle. The shade of green is darker for each state that is captured as a snapshot.

Stepping Back

  软件在仿真中后退的方式取决于您所后退到的时刻是否存在快照。

  • 当该时间步存在快照时,软件将恢复快照中包含的模型工况点。
  • 当该时间步不存在快照时,软件从该时间步之前的最后一个快照恢复模型工况点,然后向前仿真。

  例如,假设在仿真的第6个时间步之后暂停:

  • 每隔3个时间步对模型工况点进行快照
  • 每单击一次"Step Back",将后退1个时间步

  当您单击"Step Back",软件将恢复第三个时间步之后的快照,并向前仿真2个时间步,在第5个时间步之后暂停。

simulationtoolbar_snapsteps2.png

Fig.4: A timeline of the simulation that represents the simulation state as a green circle. The shade of green is darker for each state that is captured as a snapshot. A solid arced arrow represents the progression of the simulation when you click Step Back. Dotted arced arrows illustrate how the software steps back.
Fig.4: 仿真的时间轴,用绿色圆圈表示仿真状态。作为快照捕获的每个状态的绿色阴影较深。当您单击"Step Back"时,实圆弧箭头表示仿真的进度。虚线箭头说明了软件是如何后退的。

  您可以在仿真期间暂停时修改可调参数的值。该软件将新的参数值应用于下一步的仿真。根据您如何配置仿真步进选项,在单击"Step Back"时可能会执行仿真的下一个前进步骤。

Pausing on Breakpoints

  当您的模型包含活动的断点时,如果在前进的过程中断点的条件被满足了,则仿真将在断点上暂停。软件在后退时忽略断点。
  默认情况下,软件被配置为一旦断点的条件被满足就在一个时间步内暂停。当您在断点上暂停时单击"Step Forward"时,仿真前进将通过当前的时间步。单击"Step Back"后,软件将后退到当前时间步的起始位置。有关详细信息,请参见Breakpoints List(断点列表)。

Additional Considerations for Stepping Through Simulation

See Also

Related Topics

二级标题

  

待补充

  

待补充

  

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

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

相关文章

51单片机-系列-单片机基础知识入门流水灯

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 单片机基础知识入门 常用的单片机封装 DIP直插 在DIP直插中,我们根据引脚数量的不同分为8P,14P,16P,18P,20P,这些是窄体,除了窄体之外&…

调用百度翻译API遇到的跨域问题解决方案

🎉 前言 这几天在学习前端的时候需要写一个实例,是关于翻译功能的。于是便想着在网上找一些API看能不能调用。这里遇到一个很坑的问题,就是我在暑假学习的时候曾经调用过心知天气的API、QQ音乐的API和今日头条的API,都未曾遇到过…

RT-DETR改进策略:BackBone改进|Swin Transformer,最强主干改进RT-DETR

摘要 在深度学习与计算机视觉领域,Swin Transformer作为一种强大的视觉Transformer架构,以其卓越的特征提取能力和自注意力机制,正逐步引领着图像识别与检测技术的革新。近期,我们成功地将Swin Transformer引入并深度整合至RT-DERT(一种高效的实时目标检测与识别框架)中…

BSV区块链上的覆盖网络服务现已开放公测

​​发表时间:2024年8月30日 BSV区块链的覆盖网络服务现已正式开放公测。对于BSV区块链生态系统内的特定交易类型和数据管理及访问,覆盖网络服务都可以为它们提供强大、可扩展、并且合规的解决方案。覆盖网络以及其它即将推出的BSV服务将赋予开发者、企业…

文件误删除?助你一键恢复

文件误删除之痛 在日常的数字生活中,文件误删除是许多用户不时会遭遇的“小确丧”。无论是手滑点击了“删除”键,还是系统崩溃导致的文件丢失,这些意外事件总能让人心急如焚。文件误删除不仅可能意味着重要资料的永久消失,还可能…

Linux驱动编程 - platform平台设备驱动总线

目录 简介: 一、初识platform平台设备驱动 1、platform_driver驱动代码框架 2、platform_device设备代码框架 3、测试结果 3.1 Makefile编译 3.2 加载驱动 二、platform框架分析 1、注册platform总线 1.1 创建platform平台总线函数调用流程 1.2 platform_b…

鸿蒙开发之ArkTS 基础三 数组

数组可以存储多个数据 语法为: let 数组名字:数组类型[] [数据一,数据二 ,数据三 ,数据四 ,数据5⃣️] 例如:学生类数组 let students:string[] [小美,小红,小张,小西] console.log("students",students) 输出 小美,小红,小张,小西 这里不需要遍历就能输出内容…

C Primer Plus 第5章习题

你该逆袭了 红色标注的是:错误的答案 蓝色标注的是:正确的答案 绿色标注的是:做题时有疑问的地方 橙色标注的是:答案中需要着重注意的地方 练习题 一、复习题1、2、3、4、错误答案:正确答案: 5、我的答案&a…

十三,Spring Boot 中注入 Servlet,Filter,Listener

十三,Spring Boot 中注入 Servlet,Filter,Listener 文章目录 十三,Spring Boot 中注入 Servlet,Filter,Listener1. 基本介绍2. 第一种方式:使用注解方式注入:Servlet,Fil…

Cobbler 搭建方法

统信服务器操作系统行业版V20-1000c【Cobbler 搭建】手册 统信服务器操作系统行业版 V20版本上Cobbler 搭建方法 文章目录 功能概述一、使用范围二、cobbler工作流程1. Server 端2. Client 端三、 环境准备1. 测试环境告知,以提供配置时参考:2. 关闭防火墙、selinux:3. 注意…

C#学习笔记(三)Visual Studio安装与使用

博主刚开始接触C#,本系列为学习记录,如有错误欢迎各位大佬指正!期待互相交流! 上一篇文章中安装了Visual Studio Code来编写调试C#程序,但是博主的目标是编写带窗口的应用程序,了解之后发现需要安装Visual …

python-素数对

题目描述 定义两个相差为 2 的素数称为素数对,如 5 和 7,17 和 19 等,要求找出所有两个数均不大于 n 的素数对。输入 一个正整数 n。1≤n≤10000。输出 所有小于等于 n 的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数…

VS2019配置TIFF

1.下载 Index of /libtiff/ (osgeo.org) 2.配置 3.使用 4.测试程序 #include <iostream> #include <cstdint> // 包含 stdint.h 头文件 #include "tiffio.h"int main() {std::cout << "Hello World!\n";// 打开一个 TIFF 文件const ch…

06_Python数据类型_元组

Python的基础数据类型 数值类型&#xff1a;整数、浮点数、复数、布尔字符串容器类型&#xff1a;列表、元祖、字典、集合 元组 元组&#xff08;Tuple&#xff09;是一种不可变的序列类型&#xff0c;与列表类似&#xff0c;但有一些关键的区别。本质&#xff1a;只读的列表…

java程序崩了不会看怎么办,那就用jconsole试试

性能监控工具 jconsole JConsole工具是JDK自带的图形化性能监控工具。并通过JConsole工具&#xff0c; 可以查看Java应用程序的运行概况&#xff0c; 监控堆信息、 元空间使用情况及类的加载情况等。 JConsole程序在%JAVA_HOM E%/bin目录下 或者你可以直接在命令行对他进行…

排序算法-交换排序

目录 基本思想 一、冒泡排序 二、快速排序分析 1. hoare版本 2. 挖坑法 3. 前后指针版本 4. 快速排序的优化 三、代码示例 1. hoare版本 2. 挖坑法 3. 前后指针版本 四、快速排序&#xff08;三路划分) 五、总结 基本思想 基本思想&#xff1a;所谓交换&#xff0…

VS Code终端命令执行后老是出现 __vsc_prompt_cmd_original: command not found

VS Code终端命令执行后老是出现 __vsc_prompt_cmd_original: command not found。 如下图&#xff08;vscode终端中&#xff09;&#xff1a; 解决方案&#xff1a; 1、vim ~/.bashrc 2、在~/.bashrc里面加入命令&#xff1a;unset PROMPT_COMMAND 3、source ~/.bashrc

【AI大模型】Kimi API大模型接口实现

一、Kimi大模型概述 Kimi&#xff0c;月之暗面旗下国产大模型。是北京月之暗面科技有限公司&#xff08;Moonshot AI&#xff09;于2023年10月9日推出的一款智能助手&#xff0c;主要应用场景为专业学术论文的翻译和理解、辅助分析法律问题、快速理解API开发文档等&#xff0c…

关于http的206状态码和416状态码的意义、断点续传以及CORS使用Access-Control-Allow-Origin来允许跨域请求

一、关于http的206状态码和416状态码的意义及断点续传 HTTP 2xx范围内的状态码表明客户端发送的请求已经被服务器接受并且被成功处理了,HTTP/1.1 206状态码表示客户端通过发送范围请求头Range抓取到了资源的部分数据&#xff0c;一般用来解决大文件下载问题&#xff0c;一般CDN…

直接的强化学习与间接的强化学习

强化学习是一种机器学习方法&#xff0c;用于让智能体在与环境的交互中学习最优策略&#xff0c;以获得最大的奖励。根据强化学习的方式&#xff0c;可以分为直接强化学习和间接强化学习。直接强化学习注重直接从奖励信号中学习最优策略&#xff0c;而间接强化学习则通过学习环…