本主题将向您展示如何创建总线信号并将其连接到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函数生成器.
通过将当前文件夹设置为要在其中创建S-function的文件夹,开始构建S-function。然后,将这个文件夹添加到MATLAB路径中。
mkdirnewSfun目录(fullfile (pwd,“newSfun”cd ())“newSfun”)
如果您希望将总线信号连接到S-Function Builder的输入或输出端口,则必须首先创建一个总线对象。您可以使用Simulink总线编辑器交互式地创建总线对象(参见金宝app创建和指定Simulink。金宝app总线对象).或者,您可以使用金宝app仿真软件。公共汽车
:
在MATLAB命令窗口中,输入:
一个=仿金宝app真软件。公共汽车
因此,HeaderFile
For总线默认为空字符向量:
一个=仿金宝app真软件。公共汽车Description: '' HeaderFile: '' Elements: [0x1 double]
如果你想指定总线的头文件,那么在MATLAB命令窗口,输入以下命令:
a.Headerfile = 'Busdef. h”
如果不指定头文件,Simulink会自动生成金宝appSfunctionname
_bus.h
为了演示如何使用带有总线的S-Function Builder,请在MATLAB命令窗口中输入以下命令:
open_system (fullfile (matlabroot,' /工具/模型/ 金宝appsimdemos / simfeatures / sfbuilder_bususage '))
创建一个新的Simulin金宝appk模型。单击画布并键入S-Function Builder来创建s函数生成器块。或者,将S-Function Builder块从用户定义函数库浏览器中的库导入新模型。
单击画布并键入S-Function Builder或从用户定义函数图书馆进入新的模式。
双击打开S-Function Builder编辑器。
使用S-Function Builder对话框上的规范和代码输入窗格来输入信息和自定义源代码,以便根据应用程序定制生成的S-Function。
检查母线信号是否在规定的饱和上限和下限之间。为此,创建两个输入端口和两个输出端口,并根据下表分配端口:
填满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 */ } |
点击下面的箭头构建
并选择生成TLC包装为代码生成的s -函数创建包装器。
点击构建在S-Function Builder上启动构建过程。
S-Function Builder构建一个实现指定S-Function的MEX文件,并将该文件保存在当前文件夹中(参见s函数生成器如何构建一个s函数).
保存包含S-Function Builder块的模型。
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函数,首先要检查包含生成s函数的文件夹是否在MATLAB路径上。然后,将用于创建S-Function的模型中的S-Function Builder块复制到目标模型中。如果有必要,将目标模型的参数设置为目标模型所需的值。
或者,您可以部署生成的S-function,而不使用S-function Builder块或公开底层C源文件。
打开包含s函数的S金宝appimulink模型。
单击画布以创建S-function块的实例,或从用户定义函数库浏览器中的库导入模型。
双击S-Function块。
在打开的“块参数”对话框中功能名称编辑字段,输入由S-Function Builder生成的可执行文件的名称。
将s函数的任何参数输入功能参数编辑字段。按照在S-Function Builder对话框中出现的顺序输入参数。
点击好吧在“功能块参数”对话框中。
通过从生成的s函数创建一个块,您还可以为您的功能块。要了解更多关于如何为s功能添加掩码的信息,请参见创建块面具.要查看如何将块掩码添加到s函数的示例,请在MATLAB命令窗口中输入以下命令。
open_system (fullfile (matlabroot,' /工具/模型/ 金宝appsimdemos / simfeatures / sfcndemo_matadd '));
只要可执行文件在MATLAB路径上,您就可以在任何模型的任何S-Function块中使用生成的可执行文件。