Main Content

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

Discrete-Time Integrator

执行信号的离散时间积分或累积

  • 库:
  • Simulink / Commonly Used Blocks

    Simulink / Discrete

    HDL Coder / Discrete

    HDL Coder / HDL Floating Point Operations

  • Discrete-Time Integrator block

说明

使用 Discrete-Time Integrator 模块替代 Integrator 模块来创建纯离散模型。使用 Discrete-Time Integrator 模块,您可以:

  • 在模块对话框上定义初始条件,或作为模块的输入

  • 定义输入增益 (K) 值

  • 输出模块状态

  • 定义积分的上限和下限

  • 使用其他重置输入重置状态

输出方程

对于第一个时间步,模块状态为 n = 0,具有初始输出 y(0) = IC 或初始状态 x(0) = IC,具体取决于 Initial condition setting 参数值。

对于仿真时间为 t(n) 的给定步长 n > 0,Simulink® 将更新输出 y(n),如下所示:

  • Forward Euler 方法:

    y(n) = y(n-1) + K*[t(n) - t(n-1)]*u(n-1)
  • Backward Euler 方法:

    y(n) = y(n-1) + K*[t(n) - t(n-1)]*u(n)
  • Trapezoidal 方法:

    y(n) = y(n-1) + K*[t(n)-t(n-1)]*[u(n)+u(n-1)]/2

Simulink 根据模块的采样时间(可以是显式或触发的采样时间)自动选择这些输出方程的状态空间实现。当使用显式采样时间时,对于所有 n > 0 的步长,t(n)-t(n-1) 将减小到采样时间 T

积分方法和累积方法

此模块可以使用 Forward Euler、Backward Euler 或梯形法对信号进行积分或累积。假定 u 为输入,y 为输出,x 为状态。对于给定步长 n,Simulink 将更新 y(n)x(n+1)。在积分模式下,T 是模块的采样时间(如果是触发采样时间,则是 delta T)。在累积模式下,T = 1。模块采样时间决定计算输出的时间,而不是输出值。K 是增益值。值根据上限或下限进行剪切。

Forward Euler 方法

Forward Euler 方法(默认值),也称为正向矩形或左手逼近方法

该软件将 1/s 近似为 T/(z-1)。模块在第 n 个时间步的输出的表达式为:

x(n+1) = x(n) + K*T*u(n)
y(n)   = x(n)

模块按照以下时间步计算输出:

Step 0:          y(0)   = IC (clip if necessary)
                 x(1)   = y(0) + K*T*u(0)

Step 1:          y(1)   = x(1)
                 x(2)   = x(1) + K*T*u(1)

Step n:          y(n)   = x(n)
                 x(n+1) = x(n) + K*T*u(n) (clip if necessary)

使用此方法时,输入端口 1 没有直接馈通。

Backward Euler 方法

Backward Euler 方法,也称为反向矩形或右手逼近方法

该软件将 1/s 近似为 T*z/(z-1)。模块在第 n 个时间步生成的输出的表达式为:

y(n) = y(n-1) + K*T*u(n).

假设 x(n) = y((n)-1)。模块按照以下时间步计算输出。

  • 如果触发子系统和函数调用子系统的参数 Initial condition setting 设置为 “Output” 或 “Auto”:

    Step 0:          y(0) = IC (clipped if necessary)
                     x(1) = y(0)
  • 如果非触发子系统的参数 Initial condition setting 设置为 “”:

    Step 0:          x(0)   = IC (clipped if necessary)
                     x(1)   = y(0) = x(0) + K*T*u(0)
    
    Step 1:          y(1)   = x(1) + K*T*u(1)
                     x(2)   = y(1)
    
    Step n:          y(n)   = x(n) + K*T*u(n)
                     x(n+1) = y(n)

使用此方法时,输入端口 1 具有直接馈通。

梯形法

对于此方法,本软件将 1/s 近似为 T/2*(z+1)/(z-1)

T 固定时(等于采样期间),计算输出的表达式为:

x(n) = y(n-1) + K*T/2*u(n-1)
y(n) = x(n) + K*T/2*u(n)
  • 如果触发子系统和函数调用子系统的参数 Initial condition setting 设置为 “Output” 或 “Auto”:

    Step 0:          y(0)   = IC (clipped if necessary)
                     x(1)   = y(0) + K*T/2*u(0)
  • 如果非触发子系统的参数 Initial condition setting 设置为 “”:

    Step 0:          x(0)   = IC (clipped if necessary)
                     y(0)   = x(0) + K*T/2*u(0)
                     x(1)   = y(0) + K*T/2*u(0)
    
    Step 1:          y(1)   = x(1) + K*T/2*u(1)
                     x(2)   = y(1) + K*T/2*u(1)
    
    Step n:          y(n)   = x(n) + K*T/2*u(n)
                     x(n+1) = y(n) + K*T/2*u(n)

这里,x(n+1) 是下一个输出的最佳估计值。它与状态的不同之处在于,x(n) 不等于 y(n)

使用此方法时,输入端口 1 具有直接馈通。

当 T 为变量时

T 是变量时(例如,从触发时间获得),模块将按照以下时间步计算输出。

  • 如果触发子系统和函数调用子系统的参数 Initial condition setting 设置为 “Output” 或 “Auto”:

    Step 0:          y(0)   = IC (clipped if necessary)
                     x(1)   = y(0)
  • 如果非触发子系统的参数 Initial condition setting 设置为 “”:

    Step 0:          x(0)   = IC (clipped if necessary)
                     x(1)   = y(0) = x(0) + K*T/2*u(0)
    
    Step 1:          y(1)   = x(1) + T/2*(u(1) + u(0))
                     x(2)   = y(1)
    
    Step n:          y(n)   = x(n) + T/2*(u(n) + u(n-1))
                     x(n+1) = y(n)

定义初始条件

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

  • 要将初始条件定义为模块参数,请将 Initial condition source 参数设置为 internal 并在 Initial condition 文本框中输入值。

  • 要从外部源提供初始条件,请将 Initial condition source 参数设置为 external。模块上出现一个额外的输入端口。

何时使用状态端口

在以下情况下,请使用状态端口而不是输出端口:

  • 当模块输出通过重置端口或初始条件端口馈送回模块,从而产生代数环时。有关示例,请参阅 sldemo_bounce_two_integrators 模型。

  • 当您要从一个条件执行子系统向另一个条件执行子系统传递状态,从而可能导致计时问题时。有关示例,请参阅Building a Clutch Lock-Up Model

要解决这些问题,您可以通过状态端口而不是输出端口来传递状态。Simulink 在与输出略有不同的时间生成状态,从而避免您的模型出现这些问题。要输出模块状态,请选中 Show state port 复选框。状态端口出现在模块顶部。

限制积分

要使输出在一定的级别内,请选中 Limit output 复选框,并在对应的文本框中输入范围限制。此操作会使该模块起到限量积分器的作用。当输出达到界限时,积分操作将关闭以防止积分饱和。在仿真期间,您可以更改限制,但不能更改是否限制输出。下表显示了模块如何决定输出。

积分输出
小于或等于 Lower saturation limit 且输入为负 保持在 Lower saturation limit
介于 Lower saturation limitUpper saturation limit 之间 积分
大于或等于 Upper saturation limit 且输入为正 保持在 Upper saturation limit

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

饱和信号具有以下三个值之一:

  • 1 表示正在应用上限。

  • 0 表示积分不受限制。

  • -1 表示正在应用下限。

重置状态

模块根据外部信号将其状态重置为指定的初始条件。要使模块重置其状态,请选择 External reset 参数选项之一。将出现一个重置端口,指明重置触发器类型。

重置端口具有直接馈通。如果模块输出直接或通过一系列带直接馈通的模块反馈到此端口中,则会产生代数环。要解决此循环,请改为将模块状态端口的输出馈送给重置端口。要访问模块状态,请选中 Show state port 复选框。

重置触发器类型

通过 External reset 参数,您可以确定触发重置的重置信号的属性。触发器选项包括:

  • rising” - 当重置信号具有上升沿时重置状态。例如,下图显示了 rising 重置触发器对 Backward Euler 积分的影响。

  • falling” - 当重置信号具有下降沿时重置状态。例如,下图显示了 falling 重置触发器对 Backward Euler 积分的影响。

  • either” - 当重置信号上升或下降时重置状态。例如,下图显示了 either 重置触发器对 Backward Euler 积分的影响。

  • level” - 当重置信号非零时重置输出并使输出保持在初始条件。例如,下图显示了 level 重置触发器对 Backward Euler 积分的影响。

  • sampled level” - 当重置信号非零时,将输出重置为初始条件。例如,下图显示了 sampled level 重置触发器对 Backward Euler 积分的影响。

    sampled level” 重置选项需要的计算比较少,因此效率比 “level” 重置选项高。

    注意

    对于 Discrete-Time Integrator 模块,所有触发器检测都基于具有正值的信号。例如,从 -1 变成 0 的信号不是上升沿,但从 0 变成 1 的信号是上升沿。

简化初始化模式下的行为

Configuration Parameters 对话框中将 Underspecified initialization detection 设置为 “Simplified” 时,将启用简化初始化模式。如果您使用简化初始化模式,Discrete-Time Integrator 模块的行为将不同于经典初始化模式。新的初始化行为更稳定,并且在以下情况下提供更加一致的行为:

  • 在代数环中

  • 在启用和禁用时

  • 在比较使用触发采样时间和使用显式采样时间(触发模块的速率与显式采样时间的速率相同)的结果时

在简化初始化模式下,Continuous-Time Integrator 模块更容易转换为 Discrete-Time Integrator 模块,因为初始条件对这两个模块的意义相同。

有关经典和简化初始化模式的详细信息,请参阅Underspecified initialization detection

Initial Condition Setting 设置为 Output 时的启用和禁用行为

对于触发子系统和函数调用子系统,当您使用简化初始化模式并将 Initial condition setting 设置为 “Output” 时,模块的启用和禁用行为将被简化,如下所示。

在禁用时间 td

 y(td) = y(td-1)

在启用时间 te

  • 如果父级子系统控制端口的 States when enabling 设置为 “reset”:

    y(te) = IC.
  • 如果父级子系统控制端口的 States when enabling 设置为 “held”:

    y(te) = y(td).

    下图显示了这种情况。

迭代子系统

使用简化初始化模式时,不能在迭代子系统模块中放置 Discrete-Time Integrator 模块。

在简化初始化模式下,迭代子系统不维护已用时间。因此,如果在迭代子系统模块中放置需要已用时间的 Discrete-Time Integrator 模块,Simulink 将报告错误。

函数调用子系统内的使能子系统中的行为

假设您有一个函数调用子系统,其中包含一个使能子系统,后者又包含一个 Discrete-Time Integrator 模块。将发生以下行为。

积分器方法函数调用触发端口的采样时间类型 当函数调用子系统在启用后第一次执行时的 delta T出现此行为的原因

Forward Euler

触发

t — tstart

当函数调用子系统第一次执行时,积分器算法将使用 tstart 作为上一个仿真时间。

Backward Euler 和 Trapezoidal

触发

t — tprevious

当函数调用子系统第一次执行时,积分器算法将使用 tprevious 作为上一个仿真时间。

Forward Euler、Backward Euler 和 Trapezoidal

周期

函数调用生成器的采样时间

在周期性模式下,Discrete-Time Integrator 模块将使用函数调用生成器的采样时间作为 delta T

端口

输入

全部展开

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

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

状态的初始条件,指定为有限标量、向量或矩阵。

依存关系

要启用此端口,请将 Initial condition source 设置为 “external”。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

输出

全部展开

输入信号的离散时间积分或累积,指定为标量、向量或矩阵。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

指示状态何时受限的信号,指定为标量、向量或矩阵。信号具有以下三个值之一:

  • 1 表示正在应用上限。

  • 0 表示积分不受限制。

  • -1 表示正在应用下限。

依存关系

要启用此端口,请选中 Show saturation port 复选框。

数据类型: single | double | int8

模块状态,输出为标量、向量或矩阵。默认情况下,模块将此端口添加到模块图标的顶部。在以下情况下使用状态端口:

  • 模块输出通过重置端口或初始条件端口馈送回模块,从而产生代数环。有关示例,请参阅 sldemo_bounce_two_integrators 模型。

  • 您要从一个条件执行子系统向另一个条件执行子系统传递状态,从而可能导致计时问题。有关示例,请参阅 sldemo_clutch 模型。

有关详细信息,请参阅何时使用状态端口

依存关系

要启用此端口,请选中 Show state port 复选框。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

参数

全部展开

Main

指定积分或累积方法。有关详细信息,请参阅输出方程积分方法和累积方法

编程用法

模块参数:IntegratorMethod
类型:字符向量
值:'Integration: Forward Euler' | 'Integration: Backward Euler' | 'Integration: Trapezoidal' | 'Accumulation: Forward Euler' | 'Accumulation: Backward Euler' | 'Accumulation: Trapezoidal'
默认值:'Integration: Forward Euler'

指定与积分器输入相乘的标量、向量或矩阵。增益的每个元素必须为正实数。

  • 指定除 1.0(默认值)之外的值在语义上等效于将 Gain 模块连接到积分器的输入。

  • 有效值包括:

    • double(1.0)

    • single(1.0)

    • [1.1 2.2 3.3 4.4]

    • [1.1 2.2; 3.3 4.4]

提示

使用此参数指定输入增益将不需要在生成的代码中执行乘法运算。但是,此参数必须为不可调参数才能实现这一优势。如果您要调整输入增益,请将此参数设置为 1.0,并使用外部 Gain 模块来指定输入增益。

编程用法

模块参数:gainval
类型:字符向量
值:标量 | 向量
默认值:'1.0'

选择将状态重置为其初始条件的触发事件的类型:

  • none” - 不将状态重置为初始条件。

  • rising” - 当重置信号具有上升沿时重置状态。

  • falling” - 当重置信号具有下降沿时重置状态。

  • either” - 当重置信号上升或下降时重置状态。

  • level” - 当重置信号非零时重置输出并使输出保持在初始条件。

  • sampled level” - 当重置信号非零时,将输出重置为初始条件。

有关详细信息,请参阅重置状态重置触发器类型

编程用法

模块参数:ExternalReset
类型:字符向量
'none' | 'rising' | 'falling' | 'either' | 'level' | 'sampled level'
默认值:'none'

选择初始条件的来源:

  • internal” - 从 Initial condition 模块参数获取状态的初始条件。

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

依存关系

选择 “internal” 将启用 Initial condition 参数。

选择 “external” 会禁用 Initial condition 参数并启用 IC 输入端口。

编程用法

模块参数:InitialConditionSource
类型:字符向量、字符串
值:'internal' | 'external'
默认值:'internal'

指定模块状态的初始条件。最小值和最大值由 Output minimumOutput maximum 模块参数限定。

提示

Simulink 软件不允许此模块的初始条件为 infNaN

依存关系

要启用此参数,请将 Initial condition source 设置为 “internal”。

编程用法

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

选择是否将 Initial condition 参数的值应用于模块状态或模块输出。初始条件也是重置值。

  • Auto” - 模块选择应用 Initial condition 参数的位置。

    • 如果模块位于非触发子系统中,并且 Integrator method 设置为积分方法,则设置初始条件:

      x(0) = IC

      在重置时:

      x(n) = IC

    • 如果模块位于触发子系统或函数调用子系统中,并且 Integrator method 设置为积分方法,请像选择了 “output” 一样设置初始条件。

  • Output” - 当模块在触发子系统或函数调用子系统中且 Integrator method 设置为积分方法时,使用此选项。

    设置初始条件:

    y(0) = IC

    在重置时:

    y(n) = IC

  • Compatibility” - 提供此选项是为了实现向后兼容性。您无法为 Simulink 模型中的 Discrete-Time Integrator 模块选择此选项,但可以为库中的 Discrete-Time Integrator 模块选择此选项。使用此选项维护与在 R2014a 之前创建的 Simulink 模型的兼容性。

    在 R2014a 之前,选项 “Auto” 曾为 “State only (most efficient)”。选项 “Output” 曾为 “State and output”。具有 “Compatibility” 选项的模块的行为如下所示:

    • 如果 Underspecified initialization detection 设置为 “Classic”,则 Initial condition setting 参数的行为与 “Auto” 相同。

    • 如果 Underspecified initialization detection 设置为 “Simplified”,则 Initial condition setting 参数的行为与 “Output” 相同。

注意

在 R2014a 之前的 Simulink 版本中,此参数名为 Use initial condition as initial and reset value for

编程用法

模块参数:InitialConditionSetting
类型:字符向量
值:'Auto' | 'Output' | 'Compatibility'
默认值:'Auto'

输入时间步之间的离散时间间隔。

默认情况下,模块使用的离散采样时间为 1。要设置不同的采样时间,请输入其他离散值,例如 0.1。

有关详细信息,请参阅 指定采样时间

提示

  • 不要将采样时间指定为 0。此值指定连续采样时间,Discrete-Time Integrator 模块不支持此方式。

  • 不要将采样时间指定为 infNaN,因为它们不是离散值。

  • 如果您指定 -1 以从上游模块继承采样时间,请验证上游模块使用离散采样时间。例如,Discrete-Time Integrator 模块无法继承采样时间 0。

编程用法

模块参数:SampleTime
类型:字符向量
值:标量 | 向量
默认值:'-1'

将模块的输出限制为介于 Lower saturation limitUpper saturation limit 参数之间的值。

  • 选中此复选框会将模块的输出限制为介于 Lower saturation limitUpper saturation limit 参数之间的值。

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

依存关系

选择此参数将启用 Lower saturation limitUpper saturation limit 参数。

编程用法

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

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

依存关系

要启用此参数,请选中 Limit output 复选框。

编程用法

模块参数:UpperSaturationLimit
类型:字符向量、字符串
值:标量 | 向量 | 矩阵
默认值: 'inf'

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

依存关系

要启用此参数,请选中 Limit output 复选框。

编程用法

模块参数:LowerSaturationLimit
类型:字符向量、字符串
值:标量 | 向量 | 矩阵
默认值:'-inf'

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

依存关系

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

编程用法

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

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

依存关系

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

编程用法

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

选中此复选框可使 Simulink 线性化命令将此模块视为不可重置且输出无任何限制,而不管此模块的重置和输出限制选项设置如何。

提示

若忽略限制并重置,您可以围绕某个工作点对模型进行线性化。此点可能会导致积分器重置或饱和。

编程用法

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

Signal Attributes

Simulink 检查的输出范围的下限值。

Simulink 使用最小值执行下列操作:

注意

Output minimum 不会饱和或剪切实际输出信号。请改用 Saturation 模块。

编程用法

模块参数OutMin
类型:字符向量
'[ ]'| 标量
默认值'[ ]'

Simulink 检查的输出范围的上限值。

Simulink 使用最大值执行下列操作:

注意

Output maximum 不会饱和或剪切实际输出信号。请改用 Saturation 模块。

编程用法

模块参数OutMax
类型:字符向量
'[ ]'| 标量
默认值'[ ]'

为输出选择数据类型。该类型可以继承、直接指定或表示为数据类型对象,如 Simulink.NumericType。有关详细信息,请参阅 控制信号数据类型

当您选择继承的选项时,模块的行为如下所示:

  • Inherit:Inherit via internal rule” - Simulink 在考虑嵌入式目标硬件的属性的同时,会选择相应的数据类型来平衡数值准确性、性能和生成的代码大小。如果更改了嵌入式目标的设置,则依内部规则选择的数据类型可能会发生变化。例如,如果该模块将 int8 类型的输入乘以 int16 的增益,并且将 “ASIC/FPGA” 指定为目标硬件类型,则输出数据类型为 sfix24。如果指定 “Unspecified (assume 32-bit Generic)”(即通用 32 位微处理器)为目标硬件,则输出数据类型为 int32。如果目标微处理器不能提供适应输出范围的字长,Simulink 软件将在诊断查看器中显示错误。

    有时软件不能同时满足优化代码效率和保证数值准确性这两个需求。如果内部规则不能满足您对数值准确性或性能的特定需求,请使用下列选项之一:

    • 显式指定输出数据类型。

    • 使用简单的选项 “Inherit:Same as input”。

    • 显式指定默认数据类型(例如 fixdt(1,32,16)),然后使用定点工具为您的模型提供数据类型建议。有关详细信息,请参阅 fxptdlg (Fixed-Point Designer)

    • 要指定您自己的继承规则,请使用 “Inherit:Inherit via back propagation”,然后使用 Data Type Propagation 模块。有关如何使用此模块的示例说明,请参阅 Signal Attributes 模块库中的 Data Type Propagation Examples 模块。

  • Inherit:Inherit via back propagation” - 使用驱动模块的数据类型。

编程用法

模块参数OutDataTypeStr
类型:字符向量
'Inherit: Inherit via internal rule | 'Inherit: Inherit via back propagation' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>'
默认值'Inherit: Inherit via internal rule'

选择此参数可防止定点工具覆盖您在模块上指定的 Output 数据类型。有关详细信息,请参阅Use Lock Output Data Type Setting (Fixed-Point Designer)

编程用法

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

选择下列舍入模式之一。

Ceiling

将正值和负值朝正无穷方向舍入。等同于 MATLAB® ceil 函数。

Convergent

将数值舍入到最接近的可表示值。如果出现对等情况,则舍入到最接近的偶数整数。等同于 Fixed-Point Designer™ convergent 函数。

Floor

将正值和负值朝负无穷方向舍入。等同于 MATLAB floor 函数。

Nearest

将数值舍入到最接近的可表示值。如果出现对等情况,则朝正无穷方向舍入。等同于 Fixed-Point Designer nearest 函数。

Round

将数值舍入到最接近的可表示值。如果出现对等情况,则将正数朝正无穷方向舍入,将负数朝负无穷方向舍入。等同于 Fixed-Point Designer round 函数。

Simplest

自动选择是向负无穷大方向舍入还是向零舍入,以生成尽可能有效的舍入代码。

Zero

将数值向零舍入。等同于 MATLAB fix 函数。

编程用法

模块参数RndMeth
类型:字符向量
'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
默认值'Floor'

另请参阅

有关详细信息,请参阅Rounding (Fixed-Point Designer)

指定对溢出是进行饱和处理还是绕回处理。

  • off - 溢出将绕回到数据类型可以表示的合适值。

    例如,数字 130 不适合一个有符号的 8 位整数,因此绕回 -126。

  • on - 将溢出饱和处理为数据类型能够表示的最小值或最大值。

    例如,一个有符号的 8 位整数的溢出可以饱和处理为 -128 或 127。

提示

  • 如果您的模型存在可能的溢出,而您希望在生成的代码中进行显式饱和保护,请考虑选中此复选框。

  • 如果您希望优化生成的代码的效率,请考虑清除此复选框。

    清除此复选框还可以帮助您避免过度地指定信号超出范围时的处理方式。有关详细信息,请参阅信号范围错误故障排除

  • 如果选中此复选框,饱和将应用于模块中的每个内部操作,而不仅仅应用于输出或结果。

  • 一般情况下,代码生成进程可以检测到何时不可能发生溢出。在这种情况下,代码生成器不会生成饱和代码。

编程用法

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

State Attributes

使用此参数为模块状态指定唯一名称。默认值为 ' '。如果此字段为空,则表示未指定任何名称。使用此参数时,请记住以下注意事项:

  • 有效的标识符以字母或下划线字符开始,后跟字母数字或下划线字符。

  • 状态名称仅适用于所选模块。

有关详细信息,请参阅模型接口元素的 C 代码生成配置 (Simulink Coder)

依存关系

State name 指定值并点击 Apply 时,将启用 State name must resolve to Simulink signal object 参数。

编程用法

参数:StateName
类型:字符向量
值:唯一名称
默认值:''

指定是否要求状态名称解析为 Simulink 信号对象。如果选中,则在指定的状态名称与 Simulink 信号对象的名称不匹配时,软件会在运行时生成错误。

依存关系

当为参数 State name 给定值并将模型配置参数 Signal resolution 设置为除 “None” 以外的值时启用。

选中此复选框将禁用 Code generation storage class

编程用法

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

通过选择目标包定义的信号对象类,来选择自定义存储类包。例如,要应用来自内置包 mpt 的自定义存储类,请选择 “mpt.Signal”。除非您将基于 ERT 的代码生成目标与 Embedded Coder® 一起使用,否则自定义存储类不会影响生成的代码。

要使用除 Simulink 包之外的存储类包,您必须将该包加载到模型的 Embedded Coder 字典中。请参阅Load Storage Class Packages into Embedded Coder Dictionary (Embedded Coder)

有关使用存储类配置模型数据的信息,请参阅模型接口元素的 C 代码生成配置 (Embedded Coder)。有关自定义存储类的信息,请参阅Organize Data into Structures in Generated Code (Embedded Coder)

编程用法

模块参数:StateSignalObject
类型:字符向量
值:'Simulink.Signal' | '<StorageClass.PackageName>'
默认值:'Simulink.Signal'

选择用于代码生成的状态存储类。如果您不需要与外部代码对接,请选择 Auto

有关详细信息,请参阅模型接口元素的 C 代码生成配置 (Simulink Coder)使用 Struct 存储类将参数数据组织为结构体 (Embedded Coder)

编程用法

模块参数:StateStorageClass
类型:字符向量
值:'Auto' | 'Model default' | 'ExportedGlobal'' | 'ImportedExtern' | 'ImportedExternPointer' | 'Custom'
默认值:'Auto'

指定存储类型限定符,如 constvolatile

注意

在以后的版本中将删除 TypeQualifier。要将存储类型限定符应用于数据,请使用自定义存储类和内存段。除非您将基于 ERT 的代码生成目标与 Embedded Coder 一起使用,否则自定义存储类和内存段不会影响生成的代码。

依存关系

要启用此参数,请将 Code generation storage class 设置为 “ExportedGlobal”、“ImportedExtern”、“ImportedExternPointer” 或 “Model default”。除非您以前为此参数设置了值,否则它将不会显示。

编程用法

模块参数:RTWStateStorageTypeQualifier
类型:字符向量
值:'' | 'const' | 'volatile' | ...
默认值:''

模块特性

数据类型

double | fixed point | integer | single

直接馈通

多维信号

可变大小信号

过零检测

扩展功能

PLC 代码生成
使用 Simulink® PLC Coder™ 生成结构化文本代码。

定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。

在 R2006a 之前推出