S-功能概念

直接馈通

直接馈通意味着输出(或可变采样时间可变采样时间块)由输入端口信号的值直接控制。通常,S-功能输入端口具有直接馈通如果

  • 输出功能(mdlOutputs)为输入的函数ü。也就是说,有直接馈通,如果输入ü被访问mdlOutputs。输出还可以包括图形输出,在XY图形范围的情况下。

  • 功能“下一个命中的时间”(mdlGetTimeOfNextVarHit)的可变采样时间S-功能的访问输入ü

要求其输入(即,具有直接馈通)的系统的一个例子是运行

ÿ = ķ × ü

哪里ü是输入,ķ是增益,和ÿ是输出。

不需要它的输入(即,不具有直接馈通)的系统的一个例子是简单的积分算法

ÿ = X

X ˙ = ü

哪里X是国家的, X ˙ 是相对于该状态衍生物时间,ü是输入,并ÿ是输出。万博1manbetxSimulink的®集成了可变 X ˙

正确设置直接馈通标志,因为它会影响您的模型中块的执行顺序是非常重要的,是用来检测代数环(见代数环概念使用Simu万博1manbetxlink)。如果仿真结果包含您的S函数的模型不收敛,或者模拟失败,你可能有直接馈通标志设置不正确。尝试启用直接馈入标志,并设置代数环解算器,以诊断警告(见代数环该选项型号配置参数:诊断在参考页万博1manbetxSimulink的图形用户界面)。随后运行模拟显示的模型,并显示任何代数循环如果发动机已经把代数循环内的S-功能。

动态大小的数组

你可以写你的S-功能,支持任意输入尺寸。万博1manbetx在这种情况下,发动机的Simulin万博1manbetxk确定何时模拟通过评估输入矢量驱动S-功能的尺寸开始实际的输入尺寸。您的S-功能也可以使用输入的尺寸,以确定连续的状态的数量,离散状态的数量,和输出的数量。

注意

一个动态大小的输入可以具有用于S-函数的每个实例具有不同的尺寸在特定的模型或在不同的模拟,但是S-函数的每个实例的输入大小是静态的在特定模拟过程。

A C MEX S函数和Level2 MATLAB®S-功能可以具有多个输入和输出端口,并且每个端口可以具有不同的尺寸。尺寸的数量和每个维度的大小可以动态地确定。

例如,下图显示了在一个模型中的同一S-功能块的两个实例。

上部S-功能块是通过用三元件输出矢量的块驱动。下S-功能块是由一个标量输出的块驱动。通过指定该S-功能块动态地定尺寸的输入,相同的S-功能可容纳这两种情况。Simu万博1manbetxlink的发动机自动调用与适当大小的输入向量的块。同样,如果其它块的特性,如输出的数量或离散的或连续的状态的数目,如动态调整指定,发动机定义了这些矢量是相同的长度作为输入向量。

看到输入和输出端口有关配置S-功能的输入和输出端口的详细信息。

设置采样时间和偏移

两个2级MATLAB和C MEX S-功能提供以下样品时间选项,其允许在给定S-功能执行时的高度灵活性:

  • 连续采样时间 - 对于具有连续状态和/或nonsampled过零点S-功能(参见在动力系统仿真阶段对于过零点的解释)。对于这种类型的S函数,输出在次要时间步长地变化。

  • 连续的,但在固定时间轻微步采样时间 - 对于S-函数,需要在每一个主要的模拟步骤执行,但不改变在小的时间步长值。

  • 离散采样时间 - 如果你的S函数的行为是离散的时间间隔的功能,你可以定义取样时间控制在Simulink的引擎调用S-功能。万博1manbetx您也可以定义一个偏移量延迟每个采样时间命中。偏移量的值不能超过相应的采样时间。

    一个采样时间命中发生在由下式确定时间值

    TimeHit =(N *周期)+偏移量

    其中整数ñ是当前的模拟步骤。的第一个值ñ始终为零。

    如果你定义一个离散采样时间,引擎调用S函数mdlOutputsmdlUpdate每个样品时间的例程击中(如前面的等式中所定义的)。

  • 可变采样时间 - 离散采样时间,其中样品命中之间的间隔可以变化。在每个模拟步骤开始时,具有可变的采样时间S-功能查询下一个命中的时间。

  • 继承采样时间 - 有时,S-功能没有固有的采样时间的特性(即,它是连续的或离散的,这取决于系统中的一些其它块的采样时间)。在这种情况下,您可以指定采样时间为遗传。的一个简单的例子是一个增益块从块继承其采样时间驱动它。

    一个S-功能可以继承其采样时间从

    • 驱动块

    • 目标块

    • 在该系统最快的采样时间

    要指定的S函数的采样时间是继承,使用-1 Level-2的MATLAB S-功能和INHERITED_SAMPLE_TIME在C MEX S-用作采样时间。有关的采样时间的传播的更多信息,请参见如何传播影响继承样品时报在里面万博1manbetxSimulink的用户指南

S-功能可以是单或多速率;多速率S函数具有多个采样时间。

采样时间已经是这种格式对指定的:采样时间偏移_]。

有效的C MEX S-功能样品时报

为一个C MEX S函数的有效采样时间对是

[CONTINUOUS_SAMPLE_TIME,0.0] [CONTINUOUS_SAMPLE_TIME,FIXED_IN_MINOR_STEP_OFFSET] [discrete_sample_time_period抵消] [VARIABLE_SAMPLE_TIME,0.0]

哪里

CONTINUOUS_SAMPLE_TIME = 0.0 FIXED_IN_MINOR_STEP_OFFSET = 1.0 VARIABLE_SAMPLE_TIME = -2.0

和斜体变量名称表明,一个真正的价值是必需的。

另外,您也可以指定采样时间从驱动块继承。在这种情况下,C MEX S-函数只有一个采样时间对,要么

[INHERITED_SAMPLE_TIME,0.0]

要么

[INHERITED_SAMPLE_TIME,FIXED_IN_MINOR_STEP_OFFSET]

哪里

INHERITED_SAMPLE_TIME = -1.0

有效的Level-2的MATLAB S-功能样品时报

为2级MATLAB S-功能的有效采样时间对是

[0抵消]%连续采样时间[discrete_sample_time_period抵消]%离散采样时间[-1,0]%继承采样时间[-2,0]%可变采样时间

其中斜体变量名称表明,一个真正的价值是必需的。当使用连续采样时间,一个抵消1指示的输出被固定在较小的积分时间的步骤。一个抵消0表明在每一个微小的积分时间步长的输出变化。

对于选择采样时间指南

使用求救以下原则与规定的采样时间:

  • 连续S-功能期间次要集成步骤改变应该注册[CONTINUOUS_SAMPLE_TIME0.0] 采样时间。

  • 期间小的整合步骤不改变连续S-功能应该注册[CONTINUOUS_SAMPLE_TIME,FIXED_IN_MINOR_STEP_OFFSET]采样时间。

  • 离散S-函数,以指定的速率的变化应该注册离散采样时间对,[discrete_sample_time_period抵消],其中

    discrete_sample_period> 0.0

    0.0≤抵消<discrete_sample_period
  • 离散S-函数以可变的速率变化应该注册可变步骤离散采样时间。

    [VARIABLE_SAMPLE_TIME,0.0]

    在C MEX S-功能,mdlGetTimeOfNextVarHit程序被调用,以获得下一个样品命中为变步长离散任务的时间。在Level-2的MATLAB S-功能,NextTimeHit属性中设置输出方法来设置下一个样品命中。

如果您的S-功能没有内在的采样时间,你必须表明你的采样时间是继承。有两种情况:

  • 一个S-功能的变化作为其输入的变化,即使是在较小的集成步骤,应该注册[INHERITED_SAMPLE_TIME,0.0]采样时间。

  • 一个S-函数的变化作为其输入的变化,但不会在次要集成步骤改变(即,期间保持轻微的时间步长固定的),应注册[INHERITED_SAMPLE_TIME,FIXED_IN_MINOR_STEP_OFFSET]采样时间。

    范围块是这样类型的块的一个很好的例子。此在其驱动块的速率运行块,无论是连续的或离散的,但从来没有运行在次要步骤。如果它这样做,范围显示将显示求解器,而不是在每个时间点的最终结果的中间计算。

看到指定S-功能样品时报对实现不同类型的在S-函数的采样时间的信息。

也可以看看

|||

相关话题