simulink 积分上下限中的saturation模块介于上限和下限的为什么是直线?

本页对应的英文页面已更新但尚未翻译。

Integrator 模块输出其输入信号相对于时间的积分值

simulink 积分上下限?Integrator 模块作为具有一种状态的动态系统进行处理。模块动态由以下方程指定:

  • x0 是 x 的初始条件

虽然这些方程定义了连续时间下的准确关系,但 simulink 积分上下限 使用数值近似方法以有限精度来进行计算simulink 积分上下限 鈳以使用若干不同的数值积分方法来计算模块的输出,每种方法都在特定的应用中各具优势使用 Configuration Parameters 对话框的 Solver 窗格(请参阅)可以选择最适匼您的应用的方法。

所选求解器会使用当前输入值和前一个时间步的状态值计算 Integrator 模块在当前时间步的输出为支持此计算模型,Integrator 模块会保存在当前时间步的输出以供求解器计算其在下一个时间步的输出。该模块还为求解器提供了初始条件用于计算该模块在仿真开始时的初始状态。初始条件的默认值为 0使用模块参数对话框可以为初始条件指定其他值,或在模块上创建初始值输入端口

  • 创建可将模块的输絀(状态)重置为初始值的输入,具体取决于输入的变化方式

  • 创建可选的状态输出,以便模块的输出值可以触发模块重置

可以在模块对話框上将初始条件定义为参数或者从外部信号输入初始条件:

  • 要从外部源提供初始条件,请将 Initial condition source 参数指定为 “external”模块输入下会显示一个額外输入端口。

    如果积分器限制其输出(请参阅)则初始条件必须在积分器的饱和界限范围内。如果初始条件在模块饱和界限范围之外该模块会显示错误消息。

要防止输出超出可指定的级别请选中 Limit output 复选框,并在相应的参数字段中输入限制此操作会使该模块起到限量積分器的作用。当输出达到界限时积分操作将关闭以防止积分饱和。在仿真期间您可以更改限制,但不能更改是否限制输出模块按洳下方式确定输出:

要生成指示状态正受到限制的信号,请选中 Show saturation port 复选框模块输出端口下方会显示一个饱和端口。

信号具有以下三个值之┅:

  • 1 表示正在应用上限

  • 0 表示积分不受限制。

  • -1 表示正在应用下限

如果选中此复选框,模块将包含三个过零点:一个用于检测何时进入饱囷上界一个用于检测何时进入饱和下界,一个用于检测何时不再饱和

自然界中有多种物理现象表现为循环、周期或旋转。例如表现絀旋转运动的物体或机械以及振荡器会就属于这种现象。

在 simulink 积分上下限 中对这些现象进行建模时需要对定期或循环信号的变化率进行积汾以获取运动状态。

但是这种方法的缺点是,经过长时间仿真后表示定期或循环信号的状态会积分为很大的值。而且由于角度减小,计算这些信号的正弦或余弦所占用的时间会越来越长大信号值还会对求解器的性能和准确性产生负面影响。

克服这一缺点的一种方法昰在角状态达到 2π 时将其重置为 0(或者在其达到 π 时重置为 –π,以确保数值对称)。此方法可改进正弦和余弦计算的准确性,并缩短角度减小时间。但该方法还需要过零检测并引入了求解器重置,这会减慢可变步长求解器的仿真尤其是在大型模型中。

为消除绕回点处的求解器重置Integrator 模块支持绕回状态,您可以通过在模块参数对话框上选中 Wrap state 来启用这些状态当启用 Wrap state 时,模块图标将更改为指示该模块具有绕囙状态

simulink 积分上下限 允许以绕回状态上限和下限值参数为边界的绕回状态。下面的方程给出了确定绕回状态的算法:

  • xl 是绕回状态的下限值

  • xu 是绕回状态的上限值。

支持绕回状态具有以下优势

  • 消除当模型接近大角度和大状态值时的仿真不稳定性。

  • 减少仿真期间的求解器重置佽数并消除对过零检测的需求从而改善仿真时间。

  • 消除大角度值从而加速针对角状态的三角函数计算。

  • 提高求解器的准确性和性能並支持无限制仿真时间。

模块可以根据外部信号将其状态重置为指定的初始条件要使模块重置其状态,请选中其中一个 External reset 选项模块输入端口下方将显示一个触发端口,并指示触发类型

  • 选择 “rising” 可在重置信号从负值或零上升到正值时重置状态。

  • 选择 “falling” 可在重置信号从正徝下降到零或负值时重置状态

  • 选择 “either” 可在重置信号从零变为非零值、从非零值变为零或改变符号时重置状态。

  • 选择 “level” 可于重置信号茬当前时间步为非零值时或者从上一个时间步的非零值更改为当前时间步的零值时重置状态

  • 选择 “level hold” 可于重置信号在当前时间步为非零徝时重置状态。

重置端口具有直接馈通如果模块输出直接或通过一系列带直接馈通的模块反馈到此端口中,则会产生代数环(请参阅)使用 Integrator 模块的状态端口可以反馈该模块的输出,而不会创建代数环

为了符合汽车工业软件可靠性协会 (MISRA?) 软件标准,您的模型必须使用布爾信号来驱动 Integrator 模块的外部重置端口

状态端口的输出与模块的标准输出端口的输出相同,但以下情况除外如果在当前时间步重置模块,則状态端口的输出为模块尚未重置时在模块的标准输出中显示的值状态端口的输出在时间步中的显示会早于 Integrator 模块输出端口的输出的显示。使用状态端口可以避免以下建模方案中出现代数环:

  • 自重置积分器(请参阅)

  • 将状态从一个使能子系统切换到另一个(请参阅)

    当更新模型时simulink 积分上下限 会检查状态端口是否适用于这两个方案中的一个。如果不适用会显示错误消息。此外不能将此端口的输出记录在於 Accelerator 模式下执行的引用模型中。如果为该端口启用记录simulink 积分上下限 将在执行引用模型期间生成“signal not found”警告。

在创建根据其输出值重置自身的積分器时Integrator 模块的状态端口有助于避免代数环。例如考虑以下模型。

此模型尝试通过将积分器的输出减 1 后反馈到积分器的重置端口来创建自重置积分器但是,该模型会创建代数环要计算 Integrator 模块的输出,simulink 积分上下限 软件需要知道模块的重置信号的值反之亦然。由于这两個值相互依存simulink 积分上下限 软件无法单独确定一个值。因此如果您尝试仿真或更新此模型,系统会显示错误消息

以下使用积分器的状態端口来避免代数环。

在此版本中重置信号的值取决于状态端口的值。状态端口的值会早于 Integrator 模块输出端口的值在当前时间步中显示因此,simulink 积分上下限 可以确定该模块是否需要在计算模块输出之前进行重置从而避免代数环。

在使能子系统之间切换状态

状态端口可帮助您茬两个使能子系统之间传递状态时避免代数环例如,考虑以下模型

使能子系统 A 和 B 包含以下模块:

在此模型中,一个恒定的输入信号驱動两个对信号求积分的使能子系统一个脉冲发生器生成启用信号,从而使执行在两个子系统之间切换每个子系统的使能端口均设为重置,这使得子系统可在变为活动状态时重置其积分器重置积分器会使积分器读取其初始条件端口的值。每个子系统中积分器的初始条件端口均连接到另一个子系统中积分器的输出端口

此连接的用途是,当执行在两个子系统之间切换时启用对输入信号的连续积分。但是此连接会创建代数环。要计算 A 的输出simulink 积分上下限 需要知道 B 的输出,反之亦然由于两个输出相互依存,simulink 积分上下限 无法计算输出值洇此,如果您尝试仿真或更新此模型系统会显示错误消息。

同一模型的以下使用积分器状态端口来避免在切换状态时创建代数环

使能孓系统 A 和 B 包含以下模块:

在此模型中,A 子系统中积分器的初始条件取决于 B 子系统中积分器的状态端口值反之亦然。状态端口的值会早于積分器输出端口的值在仿真时间步中更新因此,simulink 积分上下限 可以计算任一积分器的初始条件而无需知道另一个积分器的最终输出值。囿关使用状态端口在条件执行子系统之间切换状态的另一个示例请参阅 模型。

指定模块输出的绝对容差

默认情况下simulink 积分上下限 软件会使用在 Configuration Parameters 对话框中指定的绝对容差值(请参阅)来计算 Integrator 模块的输出。如果此值未提供足够的误差控制则请在 Integrator 模块对话框的 Absolute tolerance 字段中指定更合適的值。您指定的值将用于计算所有模块输出

如果选择所有选项,模块图标将如下所示

根据外部信号将状态重置为指定的初始条件。請参阅

根据外部信号设置模块状态的初始条件。

指示状态何时受到限制当积分由指定的 Upper saturation limit 限制时,信号的值为 1当信号由 Lower saturation limit 限制时,信号徝为 -1当积分介于饱和限制之间时,信号值为

输出模块的状态请参阅。

指定用于外部重置信号的触发类型

  • 选择 “rising” 可在重置信号从负徝或零上升到正值时重置状态。

  • 选择 “falling” 可在重置信号从正值下降到零或负值时重置状态

  • 选择 “either” 可在重置信号从零变为非零值、从非零值变为零或改变符号时重置状态。

  • 选择 “level” 可于重置信号在当前时间步为非零值时或者从上一个时间步的非零值更改为当前时间步的零徝时重置状态

  • 选择 “level hold” 可于重置信号在当前时间步为非零值时重置状态。

  • external” - 通过 IC 输入端口从外部模块获取状态的初始条件

  • 清除此复選框后,不会限制模块的输出值

将积分的上限指定为标量、向量或矩阵。您必须指定在 Output minimumOutput maximum 参数值之间的值

值:标量 | 向量 | 矩阵

将积分的丅限指定为标量、向量或矩阵。您必须指定在 Output minimumOutput maximum 参数值之间的值

值:标量 | 向量 | 矩阵

Wrapped state upper valueWrapped state lower value 参数之间启用状态绕回。启用绕回状态可在对旋轉和循环状态轨迹建模时消除对过零检测的需求减少求解器重置,提高求解器性能和准确性并增加仿真时间范围。

选中此复选框可将飽和输出端口添加到模块中清除此复选框时,模块没有饱和输出端口

选择此参数将启用饱和输出端口。

选中此复选框可将状态输出端ロ添加到模块中清除此复选框时,模块没有状态输出端口

选择此参数将启用状态输出端口。

  • 如果输入实数标量则在计算所有模块状態时,该值会覆盖 Configuration Parameters 对话框中的绝对容差

  • 如果输入实数向量,则该向量的维度必须匹配模块中连续状态的维度这些值将覆盖 Configuration Parameters 对话框中的絕对容差。

类型:字符向量、标量或向量

使 simulink 积分上下限 线性化命令将此模块视为不可重置且输出无任何限制而不管此模块的重置和输出限制选项设置如何。

使用此复选框可以在使积分器重置或饱和的工作点周围对模型进行线性化

选择此项以启用过零检测。有关详细信息请参阅 。

  • 要为单个状态分配名称请输入名称并用引号引起来,例如 'velocity'

  • 要为多个状态分配名称,请输入以逗号分隔的列表并用花括号括起来例如 {'a', 'b', 'c'}。每个名称都必须是唯一的

  • 状态名称只会应用于所选模块。

  • 状态数量必须能够被状态名称的数量均分

  • 指定的名称数量可以尐于状态数量,但不能多于状态数量

    例如,可以在具有四个状态的系统中指定两个名称第一个名称应用于前两个状态,第二个名称应鼡于后两个状态

  • 要在 MATLAB? 工作区中分配带变量的状态名称,请输入不带引号的变量变量可以是字符向量、元胞数组或结构体。

您点击了調用以下 MATLAB 命令的链接:

Web 浏览器不支持 MATLAB 命令请在 MATLAB 命令窗口中直接输入该命令以运行它。

是的In1和Out1是输入和输出,当外面還有一层模型的时候外面的输入就是里面的in,然后里面的out又可以用在其他层次的模型上

你对这个回答的评价是

版权声明:本文为博主原创文章转载请务必注明出处和作者,谢谢合作! /zhanshen112/article/details/

积分模块是微分方程的基本构建模块

1、作用是将输入信号积分;

3、连续状态可通过求解器来控制仿真精度;

微分模块决定信号的变化率

1、根据输出返回的差值来拟合输入的变化的速率;

2、不包含连续状态,所以无法控制仿真精度不能用来建立ODE(常微分方程)。

我要回帖

更多关于 simulink 积分上下限 的文章

 

随机推荐