主要内容

功能是什么?

S-functions(系统功能)提供一个强大的机制来扩展仿真软件的功能金宝app®环境。一个功能是一种计算机语言描述的模型块用MATLAB写吗金宝app®,C, c++,或者Fortran。C、c++和Fortran S-functions编译为墨西哥人使用的文件墨西哥人实用程序(见构建C墨西哥人函数)。与其他墨西哥人文件,S-functions都是动态链接的子例程,MATLAB执行引擎可以自动加载和执行。

S-functions使用一个特殊的调用语法称为s函数API,使您可以与模型交互引擎。金宝app这种交互非常类似于之间的交互发生引擎和内置仿真软件模块。金宝app

S-functions遵循一般形式,可以适应连续,离散和混合动力系统。遵循一组简单的规则,你可以实现一个算法的功能和使用功能块将它添加到仿真软件模型。金宝app当你把你的s函数,把它的名字写在一个功能块(可用的用户定义函数块库),您可以自定义用户界面使用掩蔽(参见创建块面具)。

如果你有金宝app仿真软件编码器™在模型中,您可以使用S-functions和生成代码。还可以定制为S-functions生成的代码编写一个目标语言编译器(TLC)文件。有关更多信息,请参见S-Functions和代码生成(金宝app仿真软件编码器)

S-Functions如何工作

S-functions定义一块是如何工作在模拟的不同部分,如初始化、更新、衍生品、输出和终止。在一个模拟的每一步,一个方法调用的模拟引擎来完成特定的任务。功能基本要求的基本知识块的输入之间的数学关系,状态,和输出。了解S-functions工作,首先需要理解如何仿真软件模拟的数学模型,即仿真阶段。金宝app看到在动态系统仿真阶段更详细的信息。

数学的金宝app

一块金宝app模型由一组输入,一组,一组参数,和一组输出,输出是一个函数的仿真时间,输入,参数和美国。

以下方程表达输入之间的数学关系,输出参数,状态,仿真时间。

y = f 0 ( t , x , u ) (输出) x ˙ = f d ( t , x , u ) (金融衍生品) x d k + 1 = f u ( t , x c , x d k , u ) , (更新)

在哪里 x = ( x c ; x d ]

仿真阶段

仿真软件模型的执行过程和阶段。金宝app在初始化阶段,仿真软件引擎库模金宝app块加入到模型中,传播信号宽度,数据类型,和样品时间,评估块参数,决定了块执行顺序,并分配内存。引擎然后进入模拟循环,每个通过循环称为仿真步骤。在每个模拟步骤,执行引擎模型中的每个块的顺序在初始化期间决定的。对于每个块,引擎调用函数,计算块,衍生品和输出当前样本的时间。整个仿真循环继续直到模拟完成。

模型初始化-模型准备模拟。在这个阶段,块参数评估,确定块执行顺序,为每个操作和内存分配。这一阶段后,块经过模拟循环。

更新连续状态和时间的发生只有如果模型连续状态。您可以修改小步骤方法等mdlOutputs,mdlDerivatives,mdlZeroCrossing计算输出。

s函数回调方法

一个函数由一组s函数回调方法在每个仿真阶段执行所需的任务。在模拟模型,模拟在每个阶段,仿真软件引擎调用适当的方法在模型中每个功能块。金宝apps函数回调方法执行的任务包括:

  • 编译——在这个阶段,仿真软件引擎初始化功能。金宝app任务包括:

    • 将图书馆块纳入模型,传播信号宽度,数据类型,和样品时间

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

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

    • 分配内存并存储区域。

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

  • 更新离散状态——在这个调用,执行块once-per-time-step活动,如更新离散状态。

  • 初始化和终止方法——这些可选方法执行初始化和终止活动所需的功能只有一次。初始化活动可能包括建立用户数据、或初始化状态向量函数。终止方法执行任何操作如释放的内存需要仿真终止时,或者当一个功能块被删除从一个模型。

  • 集成——这适用于模型连续状态和/或nonsampled零交叉。如果你的s函数连续,引擎调用你的s函数的输出和导数部分小时间步。这是解决所以可以计算功能的状态。如果你的s函数nonsampled零交叉,发动机也称你的s函数的输出和零交叉部分较小的时间步长,以便它可以定位零交叉。

了解模拟尤其是S-functions术语,看看函数的概念

使用S-Functions模型

  1. 将C墨西哥人s函数在一个模型中,拖动功能块的金宝app模型库浏览器。类似地,将一个2级MATLAB函数到模型中,拖动2级MATLAB函数块模型。

  2. 打开块的参数对话框并指定的s函数的名字功能名称字段来提供功能功能块。例如,类型timestwo,点击应用添加一个C墨西哥人s函数由两个繁殖传入信号。

请注意

如果MATLAB路径包括C墨西哥人文件和一个MATLAB文件拥有相同的名称引用的一个功能块,功能块使用C墨西哥人文件。

将参数传递给S-Functions

在这两个功能块和2级MATLAB函数块的参数窗口允许您指定参数值传递给相应的功能。使用这些字段,你必须知道的参数功能要求和功能要求的顺序。(如果你不知道,请咨询功能的作者,文档,或源代码。)输入参数,由一个逗号分开,在订单所要求的功能。参数值可以是常量,变量的名字MATLAB或模型中定义的工作区,或MATLAB表达式。

下面的例子说明了使用的参数用户定义字段中,输入参数为2级MATLAB函数。

该模型msfcndemo_limintm在这个例子中包含示例功能msfcn_limintm.m

msfcn_limintm.ms函数接受三个参数:一个下限,上限,一个初始条件。s函数输出输入信号的时间积分如果时间积分之间的上下边界,下界如果时间积分小于下限,上限,如果时间积分大于上界。示例中的对话框指定较低和上界的初始条件-5.0,5.0,0,分别。显示生成的输出范围的输入是一个正弦波振幅5。

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

您可以使用屏蔽设备创建自定义对话框和图标的功能块。戴面具的对话框可以让它更容易为S-functions指定额外的参数。讨论屏蔽,请参阅创建块面具

当使用功能

您可以使用S-functions对于各种各样的应用程序,包括:

最常见的使用S-functions创建自定义(见模型块金宝app块创建基础知识)。当您使用一个函数来创建一个通用的块,您可以使用它很多次在一个模型中,每个实例的不同参数。

另请参阅

|||

相关的话题