从子系统生成s函数
的生成功能菜单选项自动从子系统生成s函数。的生成功能菜单选项显示子系统中使用的参数,并允许您将所选参数声明为可调的。
要从子系统创建S-Function块,请参见从子系统创建s功能块.
例如,考虑SourceSubsys
.目标是自动提取SourceSubsys
从模型中构建一个s函数块。工作区变量K
,是内部增益块的增益因子SourceSubsys
,声明并生成为可调变量。
自动生成s函数SourceSubsys
它有可调参数K
:
与
SourceSubsys
模型打开,点击子系统来选择它。右键单击子系统并选择C / c++代码>生成功能.
在生成功能窗口中,您将看到子系统中作为块参数引用的变量或数据对象。您可以将它们声明为可调的。
窗口的上部窗格显示这些列:
变量名:参数名称。
类:如果是工作空间变量,则显示其数据类型。如果参数为数据对象,则显示其名称和类。
可调:允许您选择可调参数。要声明一个参数可调,请选中复选框。在本例中,参数为
K
声明为可调的。
当您在上面的窗格中选择一个参数时,下面的窗格将显示引用该参数的块以及每个块的父系统。
选择可调参数后,单击构建按钮。构建过程使用S-function目标启动s -函数的代码生成和编译。的创建新模型选项自动启用。
构建过程在MATLAB中显示状态消息®命令窗口。构建完成后,可调参数窗口关闭,并打开一个新的未命名模型窗口。
模型窗口包含一个S-Function块,其名称与生成该块的子系统相同(在本例中,
SourceSubsys
).可选地,您可以保存包含生成块的生成模型。生成的S-Function块代码存储在当前工作文件夹中。这些文件被写入顶级文件夹:
或中高
_sf.c. cpp
,在那里
子系统名称(例如,中高
SourceSubsys_sf.c
)中高
_sf.h
,在那里中高
_sf。mexext
是一个依赖于平台的墨西哥文件扩展名(例如,mexext
SourceSubsys_sf.mexw64
)
s函数的源代码被写入子文件夹
.顶层中高
_sfcn_rtw.c
或. cpp
file是一个包含include指令的存根文件,您可以使用该指令将其他C/ c++代码接口到生成的代码。请注意
生成的S-Function块有输入和输出,输入和输出的宽度和采样次数与原始模型对应。
下面的代码,来自mdlOutputs
生成的s函数代码的例程(在SourceSubsys_sf.c
)显示了可调变量K
是通过调用MEX API来引用的。
(SimStruct *S, int_T tid)
.../ *获得:“< S1 > /增益”包含:*金额:< S1 > /总和的* / rtb_Gain_n [0] = (rtb_Product_p + (* (((const real_T * *) ssGetInputPortSignalPtrs(年代,2))(0 ]))) * (*( real_T *) (mxGetData (K (S))));rtb_Gain_n [1] = (rtb_Product_p + (* (((const real_T * *) ssGetInputPortSignalPtrs(年代,2))(1 ]))) * (*( real_T *) (mxGetData (K (S))));
在自动生成s函数时,可调参数使用值选项被清除或在命令行被设置为“关闭”
.
请注意
仅在创建包装器的MATLAB版本中使用MEX s -函数包装器。
宏参数
假设您应用一个存储类,例如定义
到一个金宝app仿真软件。参数
对象,使参数在生成的代码中显示为宏。如果在生成ERT s -函数的子系统中使用参数对象,则不能选择参数对象作为可调参数。相反,s函数代码生成器将自定义存储类应用于参数对象。在s -函数代码中生成宏使您能够从包含变量元素的子系统生成s -函数,例如不同的子系统块,您可以将其配置为在生成的代码中产生预处理器条件。在模拟s函数时,不能更改参数的值。
若要选择参数对象作为可调参数,请应用不同的存储类或创建自己的存储类。将参数视为宏的存储类包括定义
,ImportedDefine
,CompilerFlag
,以及通过设置创建的存储类数据初始化来宏
自定义存储类设计器。如果使用非宏存储类,则不能使用参数对象作为变量控制变量并生成预处理器条件。
如果应用将参数对象视为导入宏的存储类,在生成ERT s函数之前,请提供宏定义。例如,假设应用存储类ImportedDefine
到一个金宝app仿真软件。参数
对象,并在子系统中使用参数对象作为变量控制变量。如果您设置自定义属性HeaderFile
来“myHdr.h”
,在生成s函数时,放置自定义头文件myHdr.h
在当前文件夹中。生成的s -函数使用头文件中的宏值,而不是价值
参数对象的属性。
要使用通过编译器选项定义的宏,例如通过应用存储类CompilerFlag
,使用模型配置参数代码生成>自定义代码>其他构建信息>定义了指定编译器选项。有关更多信息,请参见代码生成窗格:自定义代码:附加构建信息:定义.
另请参阅
相关的话题
- s -函数和代码生成
- 使用遗留代码工具将对外部代码的调用导入生成的代码中
- 自动生成s -函数(金宝app模型)