什么是S-功能?

用于扩展的Simulink的功能S-功能(系统函数)提供了强大的机制万博1manbetx®环境。一个S-功能是Simulink模块的计算机语言描述写在MATLAB万博1manbetx®,C,C ++或Fortran。C,C ++和Fortran S-函数被编译为MEX文件使用MEX实用程序(见构建C MEX功能(MATLAB))。如同其它MEX文件,S-功能是动态链接的子程序的MATLAB执行引擎可以自动加载和执行。

S-函数使用称为S函数API,使您与Simulink的引擎交互特殊的使命语法。万博1manbetx这种互动是非常相似的,是以发动机和内置的Simulink模块之间发生的相互作用。万博1manbetx

S-功能遵循的一般形式,并且可以容纳连续的,离散的,和混合系统。通过遵循一套简单的规则,就可以实现在S函数的算法,并使用S-功能块将其添加到Simulink模型。万博1manbetx你写你的S-功能和一个S-功能块(在用户定义的函数块库提供)把它的名称后,您可以使用屏蔽自定义用户界面(见创建区块屏蔽)。

如果你有万博1manbetxSimulink的编码器™,你可以在模型中使用的S-功能和生成代码。您也可以通过写一个目标语言编译器(TLC)文件自定义S函数生成的代码。欲了解更多信息,请参阅S-功能和代码生成(万博1manbetx编码器的Simulink)。

如何S-职能的工作

S-功能定义一个块期间仿真的不同部分,诸如初始化,更新,衍生物,输出和终止是如何工作的。在模拟的每一个步骤,方法是通过仿真引擎调用来完成特定的任务。S-功能基本需要的块输入,状态和输出之间的数学关系的基础知识。要了解S-功能是如何工作的,首先你需要了解的Simulink如何模拟模型,模拟即阶段的数学。万博1manbetx看到在动力系统仿真阶段更详细的信息。

数学万博1manbetx

甲S万博1manbetximulink模块由一组输入,一组状态,一组参数,和一组输出,其中的输出是模拟时间的函数,输入,参数和状态的影响。

下面的等式表达的输入,输出,参数,状态和模拟时间之间的数学关系。

ÿ = F 0 Ť X ü (输出) X ˙ = F d Ť X ü (衍生物) X d ķ + 1 = F ü Ť X C X d ķ ü (更新)

哪里 X = [ X C ; X d ]

模拟阶段

Simulink模型的执行前进万博1manbetx分阶段进行。在里面初始化阶段,Simulink万博1manbetx的引擎集成库块到模型中,传播信号的宽度,数据类型,及采样时间,评估块参数,确定块的执行顺序,和分配存储器。发动机然后进入模拟循环,其中每个一次通过循环被称为一个仿真步。在每个模拟步骤中,引擎执行在初始化期间所确定的顺序的模型中的每个块。对于每个块,所述引擎调用该计算块状态,衍生物和输出当前样本时间的函数。整个模拟环路,则继续进行,直到模拟完成。

模型初始化 - 模型是模拟准备。在这个阶段,块参数进行评估,块的执行顺序被确定,并且存储器为每个操作被分配。这个阶段后,块经过一个仿真循环。

连续状态和时间的更新 - 只发生,如果模型具有连续状态。您可以修改未成年人一步的方法,如mdlOutputsmdlDerivativesmdlZeroCrossing来计算输出

S-回调函数方法

一个S-函数包括一组S-功能回调方法执行每个仿真阶段所需的任务。在一个模型的模拟,在每个仿真阶段,发动机的Simulink要求模型中的每个S-功能块的适当方法。万博1manbetx通过S-功能回调方法执行的任务包括:

  • 编译 - 在这个阶段,Simulink的发动机初始化S-功能。万博1manbetx任务包括:

    • 掺入库块到模型中,并传播信号的宽度,数据类型,及采样时间

    • 设定的数量和输入和输出端口的尺寸

    • 评价块参数,并且确定该块的执行顺序

    • 分配内存和存储区域。

  • 的输出计算 - 在这种状态下,输出被计算,直到所有的块的输出端口是有效的当前时间步骤,即所有输出值在一定的误差范围内。

  • 更新离散状态 - 在这个调用中,块执行一次每时间步的活动,如更新离散状态。

  • 初始化和终止方法 - 这些可选方法执行由S-功能只需要一次初始化和终止活动。初始化活动可包括设置用户数据,或者在S-功能初始化状态向量。终止方法执行任何动作,例如当模拟被终止时,或当一个S-功能块从模型中删除所需要存储器释放。

  • 集成 - 这适用于机型连续状态和/或nonsampled过零点。如果S-函数具有连续状态时,发动机来电次要时间步骤的输出和您的S函数的导数的部分。这是为了让求解器可以计算出各国的S-功能。如果您的S-功能有nonsampled过零点,发动机也是在较小的时间步长调用你的S函数的输出和零交叉部分,以便它可以找到过零点。

要了解关于尤其是对于S-功能模拟的术语,见S-功能概念

在车型使用S-功能

  1. 为了将一个C MEX S函数的模型,一拖S-功能从方框万博1manbetxSimulink的库浏览器。同样,掺入Level-2的MATLAB S-功能该模型,一拖Level-2的MATLAB S-功能块到模型中。

  2. 开拓块参数对话框,并在指定的S-函数名S-函数名字段为提供功能S-功能块。例如,键入timestwo和命中应用添加C MEX S-函数乘以两个输入信号。

注意

如果MATLAB路径包括C MEX文件和具有由S-功能块引用的相同名称的文件MATLAB中,S-功能块使用C MEX文件。

将参数传递给S-功能

同时S-功能Level-2的MATLAB S-功能块参数窗口允许您指定的参数值传递给相应的S-功能。要使用这些字段,你必须知道S-函数需要的参数,并在该函数需要它们的顺序。(如果你不知道,请查阅S-功能的作者,文档或源代码。)输入参数,用逗号分隔,由S-功能所需的顺序。参数值可以是常量,在MATLAB或模型工作区定义的变量,或MATLAB表达式的名称。

下面的例子说明的使用参数字段中输入用户定义的参数为一个2级MATLAB S-功能。

该模型msfcndemo_limintm在这个例子中采用了样本S-功能msfcn_limintm.m

msfcn_limintm.mS-函数接受三个参数:下限,上约束,和一个初始条件。在S-函数输出的输入信号的时间积分,如果时间积分是下限和上限之间,下界如果时间积分小于下界和上界,如果时间积分比大于上界。该示例中的对话框指定了上限和下限和的初始状态-5.050, 分别。范围示出了当输入为振幅5的正弦波所得到的输出。

看到处理S-功能参数在S-函数处理错误用于S-功能,关于如何访问用户指定的参数信息。

您可以使用屏蔽设施,以创建自定义对话框和图标为您的S-功能块。蒙面对话框可以更容易地指定S-功能的附加参数。有关掩蔽的讨论,请参见创建区块屏蔽

何时使用S-功能

您可以使用S-功能,适用于多种应用,其中包括:

的S-功能最常用的用途是创建自定义Simulink模块(见万博1manbetx块创建基础)。当您使用S-函数来创建一个通用的模块,你可以用它多次在模型中,与块的每个实例变化的参数。

也可以看看

|||

相关话题