直接馈通意味着输出(或可变采样时间可变采样时间块)由输入端口信号的值直接控制。通常,S-功能输入端口具有直接馈通如果
输出功能(mdlOutputs
)为输入的函数ü
。也就是说,有直接馈通,如果输入ü
被访问mdlOutputs
。输出还可以包括图形输出,在XY图形范围的情况下。
功能“下一个命中的时间”(mdlGetTimeOfNextVarHit
)的可变采样时间S-功能的访问输入ü。
要求其输入(即,具有直接馈通)的系统的一个例子是运行
哪里ü是输入,ķ是增益,和ÿ是输出。
不需要它的输入(即,不具有直接馈通)的系统的一个例子是简单的积分算法
哪里X是国家的, 是相对于该状态衍生物时间,ü是输入,并ÿ是输出。万博1manbetxSimulink的®集成了可变
正确设置直接馈通标志,因为它会影响您的模型中块的执行顺序是非常重要的,是用来检测代数环(见代数环概念在使用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函数mdlOutputs
和mdlUpdate
每个样品时间的例程击中(如前面的等式中所定义的)。
可变采样时间 - 离散采样时间,其中样品命中之间的间隔可以变化。在每个模拟步骤开始时,具有可变的采样时间S-功能查询下一个命中的时间。
继承采样时间 - 有时,S-功能没有固有的采样时间的特性(即,它是连续的或离散的,这取决于系统中的一些其它块的采样时间)。在这种情况下,您可以指定采样时间为遗传。的一个简单的例子是一个增益块从块继承其采样时间驱动它。
一个S-功能可以继承其采样时间从
驱动块
目标块
在该系统最快的采样时间
要指定的S函数的采样时间是继承,使用-1 Level-2的MATLAB S-功能和INHERITED_SAMPLE_TIME
在C MEX S-用作采样时间。有关的采样时间的传播的更多信息,请参见如何传播影响继承样品时报在里面万博1manbetxSimulink的用户指南。
S-功能可以是单或多速率;多速率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
为2级MATLAB S-功能的有效采样时间对是
[0抵消]%连续采样时间[discrete_sample_time_period,抵消]%离散采样时间[-1,0]%继承采样时间[-2,0]%可变采样时间
其中斜体变量名称表明,一个真正的价值是必需的。当使用连续采样时间,一个抵消
的1
指示的输出被固定在较小的积分时间的步骤。一个抵消
的0
表明在每一个微小的积分时间步长的输出变化。
使用求救以下原则与规定的采样时间:
连续S-功能期间次要集成步骤改变应该注册[CONTINUOUS_SAMPLE_TIME
,0.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-函数的采样时间的信息。
Level-2的MATLAB S-功能|MATLAB功能|S-功能|S-Function Builder中