主要内容

使用带有s函数生成器的总线信号来创建s函数

本主题将向您展示如何创建总线信号并将其连接到S-Function Builder。最后,您将使用S-Function Builder来构建一个简单的C MEX s -函数。

S-Function Builder是一个Simulin金宝appk®代码块集成了C/ c++代码,根据您提供的规范和C代码构建s -函数。S-Function Builder还可以作为使用S-Function的模型中生成的S-Function的包装器。要了解更多关于s -函数生成器的信息,请参见使用s函数生成器自动构建s函数.要查看关于如何使用S-Function Builder的更多示例,请键入sfundemos在MATLAB®命令窗口,然后导航到c文件S-functions>s函数生成器

  1. 通过将当前文件夹设置为要在其中创建S-function的文件夹,开始构建S-function。然后,将这个文件夹添加到MATLAB路径中。

    mkdirnewSfun目录(fullfile (pwd,“newSfun”cd ())“newSfun”

  2. 如果您希望将总线信号连接到S-Function Builder的输入或输出端口,则必须首先创建一个总线对象。您可以使用Simulink总线编辑器交互式地创建总线对象(参见金宝app创建和指定Simulink。金宝app总线对象).或者,您可以使用金宝app仿真软件。公共汽车

    1. 在MATLAB命令窗口中,输入:

      一个=仿金宝app真软件。公共汽车

      因此,HeaderFileFor总线默认为空字符向量:

      一个=仿金宝app真软件。公共汽车Description: '' HeaderFile: '' Elements: [0x1 double]
    2. 如果你想指定总线的头文件,那么在MATLAB命令窗口,输入以下命令:

      a.Headerfile = 'Busdef. h”

      如果不指定头文件,Simulink会自动生成金宝appSfunctionname_bus.h

    为了演示如何使用带有总线的S-Function Builder,请在MATLAB命令窗口中输入以下命令:

    open_system (fullfile (matlabroot,' /工具/模型/ 金宝appsimdemos / simfeatures / sfbuilder_bususage '))

  3. 创建一个新的Simulin金宝appk模型。单击画布并键入S-Function Builder来创建s函数生成器块。或者,将S-Function Builder块从用户定义函数库浏览器中的库导入新模型。

  4. 单击画布并键入S-Function Builder或从用户定义函数图书馆进入新的模式。

  5. 双击打开S-Function Builder编辑器。

  6. 使用S-Function Builder对话框上的规范和代码输入窗格来输入信息和自定义源代码,以便根据应用程序定制生成的S-Function。

  7. 检查母线信号是否在规定的饱和上限和下限之间。为此,创建两个输入端口和两个输出端口,并根据下表分配端口:

  8. 填满Outputs_wrapper函数的逻辑与您的代码。参见示例代码:

    void sfbuilder_bus_Outputs_wrapper(const SFB_COUNTERBUS *u0, const int32_T *u1, const SFB_COUNTERBUS *y0, int32_T *y1) {/* Output_BEGIN */ int32_T limit;boolean_T inputGElower;/* limit是SFB_SIGNALBUS的和。输入和第二输入(u1) */ limit = u0->输入信号。输入+ * u1;/* check if SFB_SIGNALBUS.;limit是>= LIMITBUS。lower_saturation_limit */ inputglower = (limit >= u0->limits.lower_saturation_limit);如果(情况——>限制。{*y1 = limit; / *y1 = limit;} else {if(inputglower) {limit = u0->limits.upper_saturation_limit;} else {limit = u0->limit .lower_saturation_limit; } *y1 = limit; } y0->inputsignal.input = *y1; y0->limits = u0->limits; /* Output_END */ }
  9. 点击下面的箭头构建并选择生成TLC包装为代码生成的s -函数创建包装器。

  10. 点击构建在S-Function Builder上启动构建过程。

    S-Function Builder构建一个实现指定S-Function的MEX文件,并将该文件保存在当前文件夹中(参见s函数生成器如何构建一个s函数).

  11. 保存包含S-Function Builder块的模型。

s函数生成器如何构建一个s函数

S-Function Builder通过在当前文件夹中生成以下源文件来构建S-Function:

  • sfun.c-该文件包含生成的s函数的标准部分的C源代码表示。

  • sfun_wrapper.c-此文件包含您在S-Function Builder对话框中输入的自定义代码。

  • sfun.tlc-此文件允许生成的s函数在Simulink中运行金宝app快速的加速器模式,并允许在代码生成期间内联s函数。此外,该文件为中的s函数生成代码加速器模式允许模型运行更快。

  • sfun_bus.h—如果指定了any输入端口输出端口作为公共汽车在港口和参数表,但不指定头文件,则S-Function Builder自动生成该头文件。

生成s函数源代码后,s函数生成器使用墨西哥人命令,从生成的源代码和指定的任何外部自定义源代码和库构建s -函数的MEX文件表示形式。

部署生成的S-Function

要在另一个模型中使用生成的s函数,首先要检查包含生成s函数的文件夹是否在MATLAB路径上。然后,将用于创建S-Function的模型中的S-Function Builder块复制到目标模型中。如果有必要,将目标模型的参数设置为目标模型所需的值。

或者,您可以部署生成的S-function,而不使用S-function Builder块或公开底层C源文件。

  1. 打开包含s函数的S金宝appimulink模型。

  2. 单击画布以创建S-function块的实例,或从用户定义函数库浏览器中的库导入模型。

  3. 双击S-Function块。

  4. 在打开的“块参数”对话框中功能名称编辑字段,输入由S-Function Builder生成的可执行文件的名称。

  5. 将s函数的任何参数输入功能参数编辑字段。按照在S-Function Builder对话框中出现的顺序输入参数。

  6. 点击好吧在“功能块参数”对话框中。

通过从生成的s函数创建一个块,您还可以为您的功能块。要了解更多关于如何为s功能添加掩码的信息,请参见创建块面具.要查看如何将块掩码添加到s函数的示例,请在MATLAB命令窗口中输入以下命令。

open_system (fullfile (matlabroot,' /工具/模型/ 金宝appsimdemos / simfeatures / sfcndemo_matadd '));

只要可执行文件在MATLAB路径上,您就可以在任何模型的任何S-Function块中使用生成的可执行文件。

另请参阅

|

相关的话题