对话框包含⼀些控件,允许您输⼊S-Function构建器块所需的信息,以便根据您的规范构建S-Function。控件被分组到窗格中。有关窗格及其包含的控件的信息,请参阅以下部分。
请注意,以下部分使⽤术语target S-function来指代由S-function Builder dialog box指定的S-function。
建⽴/保存
使⽤此按钮可根据您在S-Function Builder中输⼊的信息⽣成C源代码和可执⾏MEX⽂件。如果按钮标记为Build,则S-Function Builder会⽣成源代码和可执⾏的MEX⽂件。如果按钮标记为“保存”,则仅⽣成C源代码。使⽤“构建信息”窗格上的“仅保存代码”复选框来切换此按钮的功能。
隐藏/显⽰S函数编辑选项卡
使⽤“参数/ S函数名称”窗格右下⾓的⼩按钮折叠和展开“ S函数构建器”对话框的底部。
Port/Parameter Pane端⼝/参数窗格
左侧的“端⼝/参数”窗格显⽰对话框为⽬标S函数指定的端⼝和参数。
该窗格包含⼀个树控件,其顶部节点分别对应于⽬标S函数输⼊端⼝,输出端⼝和参数。展开“输⼊端⼝”,
“输出端⼝”或“参数”节点,分别显⽰为⽬标S函数指定的输⼊端⼝,输出端⼝或参数。选择任何端⼝或参数节点都会在相应的端⼝或参数指定窗格上选择相应的条⽬。
初始化窗格
通过“初始化”窗格,您可以指定S函数的基本功能,例如其输⼊和输出端⼝的宽度及其采样时间。
S-Function Builder使⽤在此窗格上输⼊的信息来⽣成回调⽅法。 Simulink®引擎在仿真的模型初始化阶段调⽤此⽅法,以获得有关S函数的基本信息。 (有关模型初始化阶段的更多信息,请参见。)
初始化窗格包含以下字段。
离散状态数
S函数中离散状态的数量。
**离散状态IC
**S函数中离散状态的(IC :Initial conditions)初始条件。您可以将值输⼊为以逗号分隔的列表或向量(例如[0 1 2])。初始条件的数量必须等于离散状态的数量。
连续状态数
S函数中连续状态的数量。
连续状态IC
S函数中连续状态的初始条件。您可以将值输⼊为以逗号分隔的列表或向量(例如[0 1 2])。初始条件的数量必须等于连续状态的数量。
采样模式
S函数的采样模式。采样模式确定S函数更新其输出的时间间隔。您可以选择以下选项之⼀:
继承 S函数从连接到其输⼊端⼝的块继承其采样时间。
连续 该块在每个仿真步骤更新其输出。
离散 S函数以S函数构建器对话框的采样时间值字段中指定的速率更新其输出。
采样时间值
标量值,指⽰S函数输出更新之间的间隔。仅当选择“离散”作为“采样”模式时,才启⽤此字段。
注意
S-Function Builder当前不⽀持多块采样时间或⾮零偏移时间。
PWorks数量
S函数使⽤的数据指针的数量。 PWorks指向块整个⽣命周期中的内存。例如,您可以在**“开始”**处声明并初始化指向⽂件或内存的指针,并在“**输出”,“更新”和“派⽣”窗格中访问它,然后在“终⽌”**窗格中将其取消分配。在这些窗格中编写的代码
s parameter
由mdlStart,mdlOutputs,mdlUpdate,mdlDerivatives和mdlTerminate调⽤。请参见⽰例。
注意
使⽤PWorks会影响SimState的合规性。如果声明PWorks,则不允许使⽤SimState保存和还原。否则,将使⽤默认的SimState合规性设置USE_DEFAULT_SIM_STATE。
Data Properties Pane数据属性窗格
“数据属性”窗格允许您将端⼝和参数添加到S函数。窗格左侧的按钮列允许您添加,删除或重新排序端⼝或参数。
要添加端⼝或参数,请单击add按钮。
要删除当前选定的端⼝或参数,请单击“删除”按钮。
要将当前选定的端⼝或参数向上移动到相应的S-Function端⼝或参数列表中的⼀个位置,请单击up按钮。
要将当前选定的端⼝或参数在相应的S-function端⼝或参数列表中向下移动⼀个位置,请单击向下按钮。
Array layout阵列布局
C / C ++代码的数组布局。您可以选择表中列出的选项之⼀。
Option Array
Layout of
C/C++
Function
Action
Column-major Column-
major
S-Function Builder块在mdlInitializeSizes中添加了SimStruct函数ssSetArrayLayoutForCodeGen,以将S函数标记为⽤于
⽣成列的主要代码。
Row-major Row-major
S函数构建器块在mdlInitializeSizes中添加SimStruct函数ssSetArrayLayoutForCodeGen,以将S函数标记为⾏主要代码⽣
成。在仿真过程中,如果您的C / C ++代码涉及矩阵或多维输⼊,输出或参数,则将转置添加到以下S函数回调⽅法
中:mdlOutputs mdlUpdate mdlDerivatives在Accelerator和Rapid Accelerator模式下运⾏仿真时,Simulink还将应⽤上述
转置。使⽤TLC不能内联S函数。⽽是直接编译带有转置的MEX S函数。
Any C/C++
function is
not
affected by
array layout
S-Function Builder块在mdlInitializeSizes中添加了SimStruct函数ssSetArrayLayoutForCodeGen,以将S-函数标记为接受
⾏主代码和列主代码⽣成。
此窗格还包含选项卡式窗格,可让您指定创建的端⼝和参数的属性。看到:
输⼊端⼝窗格
输出端⼝窗格
参数窗格
数据类型属性窗格
Input Ports Pane输⼊端⼝窗格
输⼊端⼝窗格使您可以检查和修改S功能输⼊端⼝的属性。该窗格包含⼀个可编辑表,该表按端⼝在S-Function Builder块上出现的顺序列出了输⼊端⼝的属性。该表的每⼀⾏都对应⼀个端⼝。该⾏中的每个条⽬都显⽰端⼝的属性,如下所⽰。
端⼝名称
端⼝名称。编辑此字段以更改端⼝名称。
外型尺⼨
列出端⼝接受的输⼊信号的维数。要显⽰⽀持的尺⼨列表,请单击相邻的按钮。要更改端⼝尺⼨,请从列表中选择⼀个新值。指定1-D以动态调整信号⼤⼩,⽽不管信号的实际尺⼨如何。
指定输⼊信号的第⼀(或唯⼀)维度的⼤⼩。指定-1以动态调整信号⼤⼩。
指定输⼊信号的第⼆维尺⼨(仅当输⼊端⼝接受⼆维信号时)。
注意
对于具有⼆维的输⼊信号,如果⾏尺⼨是动态调整⼤⼩,则列维也必须动态调整⼤⼩或设置为1。如果将列维设置为其他值,则将编译S函数,但是任何包含由于尺⼨规格⽆效,此S功能将⽆法运⾏。
复杂度
指定输⼊端⼝接受实数还是复数值信号。
总线
如果S-Function Builder块的输⼊信号是总线,则使⽤“总线”列中的下拉菜单选择“打开”。
总线名称
如果输⼊信号是总线,则构建S函数的第2步会⾃动指⽰您创建总线对象。在“总线名称”列中提供的字段中,输⼊在创建⼊⼝总线对象时定义的总线名称。
Output Ports Pane输出端⼝窗格
通过“输出端⼝”窗格,您可以检查和修改S功能输出端⼝的属性。该窗格由⼀个表组成,该表按端⼝在S功能块上出现的顺序列出了输出端⼝的属性。该表的每⼀⾏都对应⼀个端⼝。该⾏中的每个条⽬都显⽰端⼝的属性,如下所⽰。
端⼝名称
端⼝名称。编辑此字段以更改端⼝名称。
外型尺⼨
列出端⼝输出的信号的维数。要显⽰⽀持的尺⼨列表,请单击相邻的按钮。要更改端⼝尺⼨,请从列表中选择⼀个新值。指定1-D以动态调整信号⼤⼩,⽽不管信号的实际尺⼨如何。
指定输出信号的第⼀(或唯⼀)维度的⼤⼩。指定-1以动态调整信号⼤⼩。
指定输出信号的⼆维尺⼨(仅当端⼝输出⼆维信号时)。
注意
对于具有⼆维的输出信号,如果其中⼀个维是动态调整⼤⼩,则另⼀个维也必须动态调整⼤⼩或设置为1。如果将第⼆维设置为其他某个值,则将编译S函数,但是任何包含由于尺⼨规格⽆效,此S功能将⽆法运⾏。在某些情况下,确定动态⼤⼩的输出端⼝尺⼨的计算可能不⾜,并且⼆维输出信号的两个尺⼨可能都需要进⾏硬编码。
复杂度
指定端⼝输出实信号还是复值信号。
总线
如果到S-Function Builder模块的输出信号是总线,则使⽤“总线”列中的下拉菜单选择“打开”。
总线名称
Build S-Functions的步骤2⾃动指⽰您创建总线对象。在“总线名称”列中提供的字段中,输⼊在创建输出总线对象时定义的名称。Parameters Pane参数窗格
通过“参数”窗格,您可以检查和修改S功能参数的属性。该窗格由⼀个表格组成,该表格列出了S功能参数的属性。表的每⼀⾏都对应⼀个参数。参数出现的顺序与⽤户必须在S功能参数字段中指定它们的顺序相对应。该⾏中的每个条⽬都显⽰参数的属性,如下所⽰。
参数名称
参数名称。编辑此字段以更改名称。
数据类型
列出参数的数据类型。单击相邻按钮以显⽰⽀持的数据类型的列表。要更改参数数据类型,请从列表中选择⼀种新类型。
复杂度
指定参数是实数值还是复数值。
Data Type Attributes Pane数据类型属性窗格
该窗格允许您指定⽬标S函数的输⼊和输出端⼝的数据类型属性。该窗格包含⼀个表,该表列出了每个S函数端⼝的数据类型属性。您只能编辑表中的某些字段。其他字段显⽰为灰⾊。每⾏对应于⽬标S功能的端⼝。每列指定相应端⼝的属性。
端⼝
端⼝名称。该字段显⽰在“输⼊端⼝”和“输出端⼝”窗格中输⼊的名称。您⽆法编辑此字段。
数据类型
端⼝的数据类型。单击相邻按钮以显⽰⽀持的数据类型的列表。要更改数据类型,请从列表中选择其他数据类型。
仅在“数据类型”字段指定定点数据类型时,才启⽤此窗格上的其余字段。有关更多信息,请参见指定定点数据类型。
Libraries Pane 库窗格 “库”窗格允许您指定在S-Function Builder对话框的其他窗格中输⼊的⾃定义代码引⽤的外部代码⽂件的位置。它包括以下字段。
库/对象/源⽂件
在S-Function Builder对话框的其他位置输⼊的⾃定义代码引⽤的外部库,⽬标代码和源⽂件。在单独的⾏上列出每个⽂件。如果⽂件位于当前⽂件夹中,则只需指定⽂件名。如果⽂件位于另⼀个⽂件夹中,则必须指定⽂件的完整路径。
或者,您也可以使⽤此字段指定库,⽬标⽂件,头⽂件和源⽂件的搜索路径。为此,请分别输⼊标
签LIB_PATH,INC_PATH或SRC_PATH,然后输⼊路径名。您可以根据需要输⼊任意数量的此类条⽬,但每个条⽬必须位于单独的⾏上。
例如,考虑⼀个驻留在d:\ matlab6p5\ work并需要链接以下⽂件的S-Function Builder项⽬:
c:\ customfolder \ customfunctions.lib
d:\ matlab7 \ customobjs \ userfunctions.obj
d:\ externalsource \ freesource.c
下列条⽬使S-Function Builder可以到这些⽂件:
SRC_PATH d:\externalsource
LIB_PATH $MATLABROOT\customobjs
LIB_PATH c:\customfolder
customfunctions.lib
userfunctions.obj
freesource.c
如本⽰例所⽰,您可以使⽤LIB_PATH来指定对象和库⽂件路径。您可以在LIB_PATH声明中包含库名,但是必须将⽬标⽂件名放在单独的⾏上。标签 $MATLABROOT表⽰相对于MATLAB安装的路径。您可以在单独的⾏中包含多个LIB_PATH条⽬。按照指定的顺序搜索路径。
您还可以在此字段中输⼊预处理器(-D)指令,例如,
-DDEBUG
每个指令必须位于单独的⾏上。
注意
即使路径名中包含空格,也不要在库路径两边加上引号。如果添加引号,则编译器将不到该库。
Includes
头⽂件,其中包含在S-Function Builder对话框的其他位置输⼊的⾃定义代码引⽤的函数,变量和宏的声明。在单独的⾏上将每个⽂件指定
为#include语句。使⽤⽅括号括起标准C标头⽂件的名称(例如,#include <math.h>)。使⽤引号将⾃定义头⽂件的名称括起来(例如,#include“ myutils.h”)。如果您的S函数使⽤不在当前⽂件夹中的⾃定义包含⽂件,则必须使⽤“库/对象/源⽂件”字段中的INC_PATH标记将S函数构建器的包含路径设置为包含包含⽂件的⽬录⽂件(请参阅库/对象/源⽂件)。