Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

Variable Transport Delay

按可变时间量延迟输入

  • 库:
  • Simulink / Continuous

  • Variable Transport Delay block

说明

Variable Transport DelayVariable Time Delay 模块在 Simulink® 模块库中显示为两个模块。但它们是同一个 Simulink 模块,只是 Select delay type 参数的设置不同。使用此参数可以指定模块的运行模式。

Variable Transport Delay

在此模式中,当前时间步的模块输出等于之前的时间步(等于当前时间减去传输延迟)的数据(顶部或左侧)输入的值。

y(t)=u(ttd(t))

Simulink 软件通过解析下列方程来计算传输延迟 td(t)

ttd(t)t1ti(τ)dτ=1

此方程涉及到一个瞬时时滞 ti(t),由时滞(底部或右侧)输入指定。

假设您要使用此模块为管道内流速随时间改变的流体建模。在本例中,模块的时滞输入为

ti(t)=Lvi(t)

其中 L 代表管道长度,vi(t) 代表流速。

Variable Time Delay

在此模式中,模块具有数据输入、时滞输入和数据输出。(有关各种模块方向的端口顺序的说明,请参阅旋转或翻转后的端口位置。)当前时间步的输出等于上一个时间步的数据输入值。此时间步等于当前仿真时间减去由时滞输入指定的延迟时间。

y(t)=u(tt0)=u(tτ(t))

在仿真过程中,模块将时间和输入值对存储在内部缓冲区。仿真开始时,模块会输出 Initial output 参数的值,直到仿真时间超过时滞输入。然后,在每个仿真步,模块会在相当于当前仿真时间减去延迟时间的时间输出信号。

如果您需要两个存储输入时间之间的某个时间的输出,且求解器是连续求解器,模块将在各点之间进行线性插值。如果时滞小于步长,模块将根据上一个点外插输出点。例如,假定一个固定步长仿真的步长为 1,当前时间为 t = 5。如果延迟为 0.5,则模块必须在 t = 4.5 时生成点,但最新存储的时间值为 t = 4。那么,模块将根据 t = 4 时的输入外插 t = 4.5 时的输入,并将外插值作为 t = 5 时的输出。

根据上一个时间步向前外插产生的结果没有根据当前时间步向后外插产生的结果准确。但是,模块无法使用当前输入计算其输出值,因为输入端口没有直接馈通。

如果模型指定了离散求解器,模块将不会在时间步之间插值。相反,它将返回所需值前面的那个最近存储值。

端口

输入

全部展开

输入信号,指定为标量、向量或矩阵。

数据类型: double

指定为标量、向量或矩阵的时滞输入。当模块处于 “Variable time delay” 模式时,此值指定时滞。有关该计算的详细信息,请参阅Variable Time Delay

依存关系

要启用此端口,请将 Select delay type 设置为 “Variable time delay”。

数据类型: double

指定为标量、向量或矩阵的瞬时时滞输入。当模块处于 “Variable transport delay” 模式时,此值用于计算传输延迟。有关该计算的详细信息,请参阅Variable Transport Delay

依存关系

要启用此端口,请将 Select delay type 设置为 “Variable transport delay”。

数据类型: double

输出

全部展开

输出信号,指定为标量、向量或矩阵。

数据类型: double

参数

全部展开

将延迟类型指定为 “Variable time delay” 或 “Variable transport delay”。

此参数的默认值取决于模块实现:对于 Variable Time Delay 模块,默认值为 “Variable time delay”,对于 Variable Transport Delay 模块,默认值为 “Variable transport delay”。

依存关系

  • 将此参数设置为 “Variable time delay” 将启用 Handle zero delay 参数。

  • 将此参数设置为 “Variable transport delay” 将启用 Absolute toleranceState Name 参数。

编程用法

模块参数VariableDelayType
类型:字符向量、字符串
'Variable transport delay' | 'Variable time delay'

设置时滞输入的最大值。此值定义此模块允许的最大时滞输入。模块会截减超过此值的任何延迟量。此值不能为负数。如果时滞变为负数,模块会将其截减为零并发出警告消息。

编程用法

模块参数MaximumDelay
类型:字符向量、字符串
:标量 | 向量
默认值:'10'

指定模块在仿真时间首次超过输入的时滞量之前生成的输出。

Dependencies

  • 此模块的初始输出不能为 infNaN

  • 不能在仿真运行时更改 Run-to-run tunable parameter。但是,在仿真开始之前更改此参数不会使得 Accelerator 或 Rapid Accelerator 重新生成代码。

编程用法

模块参数:InitialOutput
类型:字符向量、字符串
值:标量 | 向量
默认值:'0'

为要存储的输入点数定义初始内存分配。输入点定义了输入信号在当前仿真时间之前的历史记录。

  • 如果输入点数超出初始缓冲区大小,模块将分配更多内存。

  • 仿真结束后,如果缓冲区空间不足而必须分配更多内存,则会显示一条消息。

提示

  • 由于分配内存会降低仿真速度,因此如果仿真速度很重要,请谨慎选择此值。

  • 对于长时滞,此模块可能会占用大量内存,特别是对于维度化输入。

编程用法

模块参数MaximumPoints
类型:字符向量、字符串
值:标量 | 向量
默认值:'1024'

选中此复选框将使用固定大小缓冲区保存来自之前时间步的输入数据。清除此复选框后,模块不使用固定大小缓冲区。

可通过 Initial buffer size 参数指定缓冲区大小。如果缓冲区已满,新数据将替换缓冲区中已有的数据。Simulink 软件使用线性外插来估算不在缓冲区内的输出值。

注意

即使您不选中此复选框,ERT 或 GRT 代码生成也使用固定大小缓冲区。

提示

  • 如果输入数据为线性,选中此复选框可节省内存。

  • 如果输入数据非线性,请勿选中此复选框。否则,生成的结果可能不准确。

编程用法

模块参数FixedBuffer
类型:字符向量、字符串
值:'off' | 'on'
默认值:'off'

选中此复选框会将此模块转换为直接馈通模块。清除此复选框后,模块不使用直接馈通。

Dependencies

要启用此参数,请将 Select delay type 设置为 “Variable time delay”。

编程用法

模块参数ZeroDelay
类型:字符向量、字符串
值:'off' | 'on'
默认值:'off'

当您选择此参数时,模块在线性化期间输出其输入并配平,此操作可将模块模式设置为直接馈通。要禁用直接馈通,请清除此复选框。

提示

  • 当使用 linmoddlinmodtrim 函数时,选中此复选框可能会使模型中状态的排序发生变化。要提取此新的状态顺序,请执行以下操作:

    1. 使用下列命令编译模型,其中 model 是 Simulink 模型的名称。

          [sizes, x0, x_str] = model([],[],[],'lincompile'); 
    2. 使用下列命令终止编译。

        model([],[],[],'term'); 
  • 输出参数 x_str(在 Simulink 模型中为状态的元胞数组)包含新的状态顺序。当您将状态向量作为输入传递给 linmoddlinmodtrim 函数时,状态向量必须使用这种新的状态顺序。

编程用法

模块参数TransDelayFeedthrough
类型:字符向量、字符串
值:'off' | 'on'
默认值:'off'

为线性化例程设置 Pade 逼近的阶。

  • 默认值为 0,将产生无动态状态的单位增益。

  • 将阶设置为正整数 n 将在模型中添加 n 个状态,但会产生更准确的传输延迟线性模型。

编程用法

模块参数PadeOrder
类型:字符向量、字符串
值:标量
默认值:'0'

指定用于计算模块状态的绝对容差。

Dependencies

要启用此参数,请将 Select delay type 设置为 “Variable transport delay”。

编程用法

模块参数AbsoluteTolerance
类型:字符向量、字符串
值:'auto' | '-1' | 任何正实数标量或向量
默认值:'auto'

为每个状态分配唯一名称。如果此字段为空,则不会分配任何名称。

提示

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

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

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

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

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

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

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

Dependencies

要启用此参数,请将 Select delay type 设置为 “Variable transport delay”。

编程用法

模块参数:ContinuousStateAttributes
类型:字符向量、字符串
值:' ' | 用户定义字符向量、用户定义的字符串
默认值:' '

模块特性

数据类型

double

直接馈通

多维信号

可变大小信号

过零检测

扩展功能

在 R2007a 中推出