关于S-Function Builder
S-Function Builder模块在Simulink→User-Defined Functions中,在其中可通过C语言编写程序实现自定义功能(与MATLAB Function不同的是,MATLAB Function需要使用MATLAB语言实现自定义功能)。
S-Function Builder的使用双击拖入的S-Function Builder模块,可进入S-Function Builder编辑界面。在界面上方Parameters栏中的S-function name框里可设置模块名称(名称需符合MATLAB命名规则);界面左侧Port/Parameter一栏以树状目录结构显示模块的输入、输出及参数;右侧选项卡中为具体设置。
Data Properties在Data Properties选项卡中,包括Input ports、Output ports、Parameters等多个选项卡,于其中可分别设置模块的输入、输出及模块使用到的参数,选项卡左侧的按钮可以引入或删除一条数据,数据可设置维度(行数和列数)、数据类型等。当引入一条Paramerters数据后,在S-function parameters中会显示相应的记录,通过将记录中Value的数值修改为模块外部变量名称(或模块Mask中变量名称),可实现该条Parameters数据与模块外部变量的实时联动。
如S-Function Builder外部模块的Mask中存在变量mode,则在S-Function Builder模块中添加名称为mode的Parameters且Value为mode(重点为Value中内容需与Mask中的外部变量名相同),此时S-Function Builder中的代码若使用mode,则此mode与Mask中的外部变量mode保持联动。
Libraries在Libraries选项卡中可以添加S-Function Builder中C语言代码所使用的库及其头文件。
Outputs在Outputs选项卡中输入C语言编写的程序以实现模块功能。需要注意的是,模块的输入、输出及参数的数据类型均对应C语言中数组,因此,若输入、输入及参数等需要使用“[]”来索引以获得其值。
Build Info代码输入完成后,点击右上角Build,可对代码进行编译。编译结果在Build Info中显示。
MATLAB R2020b中的S-Function Builder在较新版本的MATLAB中,S-Function Builder做出了一定的更改,代码编辑、输入输出的设置、以及库的路径等均集成到了同一界面上。
在Editor中编辑C代码,完成主要功能的代码在Outputs_wrapper段白色可编辑区域中完成;
在PORTS AND PARAMETERS中设置模块的输入与输出;
在LIBRARIES中设置模块所引用的库或源文件及其头文件。
右键点击Tag按钮,可以出现添加路径、添加项、删除等内容,而双击添加的Tag标签,则可修改Tag的具体内容,如源文件路径、库路径、包含文件路径等。
注:此处的LIBRARIES似乎只能是源文件,而封装成lib的库不可用。