Simulink——S-Function模块与S-Function Builder的使用

 

matlab版本——2017a

17a的S-Function Builder模块没有语言设置选项,默认为C

1.在工程文件夹下创建一个独立的文件夹,用来存放生成的S函数

2.在新建的文件夹下创建一个新的空白slx文件(simulink model),并在这个模型中拖入模块——S-Function Builder

3.双击模块进入配置界面 

  (1)配置界面中各参数具体含义可以自行搜索,在这里需要注意的是左上角参数——S-function name,这个参数就是接下来生成的s-function的函数名。

  (2)使用该模块时所有的参数,输入输出变量都需要在模块配置中配好,虽然Simulink在生成S-Function时会先生成c的源码再编译,但由于自动代码生成的多层封装,想以代码的方式来自定义与添加变量比较麻烦,这里添加一个输入变量示意,此时一共有两个输入一个输出

(3)输入输出关系等运算在这个界面下配置,注意这里使用变量需要使用指针的方式

          对使用指针的解释——这个模块会生成两个.c的源文件——s_fun.c与s_fun_wrapper.c(我这个S函数叫s_fun),通过下图的源码不难看出我们需要实现的功能(配置输入输出关系)位于s_fun_wrapper.c这个文件下的函数s_fun_Outputs_wrapper;中实现,而这个函数中的功能是我们在上图自定义的。通过查看函数的参数我们可以发现这里需要以指针的方式访问变量。

官方注解——y0[0] = u0[0];   这里没有" * "的原因是因为数组名本身就是一个指针。

 

(4)编译前将Matlab的工作文件夹放在新创建的,用来放生成的S函数的文件夹下,不要放在工程的主目录下,否则编译的所有文件都会存放在主目录下,特别乱

  (5) 配置好所有参数后点击右上角的Build即可编译,在编译的时候可能会报错,需要注意的一点是自行添加的变量默认是没有名字的,如下图,未命名变量在编译时会报错。

   (6)编译成功,模块设置内的文本框出现以下文本

   (7)编译生成的文件如下图所示,这里把生成S函数的模型也保存在这个文件夹下了,S函数与S函数的生成模型(.slx)不能重名,这里将生成S函数的模型命名为s_fun_create。这里保存模型是为了便于修改后再次编译。

 

4. .mexw64文件就是生成的s函数,这里为s_fun.mexw64(你的S函数名+mexw64)

5.复制粘贴,将这个生成好的S函数拷贝到主工程的文件夹下

6.主工程下添加S_Function模块,配置中只需要修改第一个参数——S-function name。

将这个参数修改为刚拷贝到主工程文件夹下的那个s函数的名字,不需要加后面的后缀(.mexw64)

 

 

 

8.运行测试,这里可以看出这个自定义加法的S函数还是挺靠谱的(手动狗头)

 

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Simulink S-Function BuilderSimulink中的一个工具,用于创建自定义S-Function模块。S-Function模块是一种可重用的模块,可以用于实现特定的功能,例如控制算法、信号处理等。使用S-Function Builder可以轻松地创建自定义S-Function模块,并将其集成到Simulink模型中。 ### 回答2: Simulink S-Function Builder是在MATLAB/Simulink环境下使用的一种工具,用于生成自定义S函数。S函数是一种特殊类型的函数,可用于将外部计算模块Simulink模型集成在一起。S-Fuction Builder有助于开发新的、自定义的功能库,可与Simulink一起使用,实现更高级的模型化和仿真。 S-Function Builder是S-Function的开发环境,S-Function是在Simulink中实现自定义功能的方法。S函数可与Simulink模型中的其他组件一起使用,如块、线和信号路由器。S-function Builder提供了可视化的开发环境,帮助用户快速构建自己的S函数模块,从而拓宽了Simulink的应用范围。 使用S-Function Builder可以提高开发效率,使得用户不需要编写其他语言代码就可以实现Simulink 模型中所需要的特性。通过S-Function Builder, 用户可定义自己的函数处理模块,将其导入到Simulink模型中,从而大大增强了模型的灵活性和可扩展性。 此外,S-Function Builder目前支持的S函数类型除了传统的C语言S函数之外,还支持了C++、Java、.NET和MATLAB代码,可以充分利用这些功能来推动Simulink模型的发展。 综上所述,Simulink S-Function Builder是一种非常有用的工具,可用于构建自定义函数,使开发者能够设计符合自己需求的、具有高度定制化的函数库,提高开发效率,增强Simulink模型的功能和可扩展性。 ### 回答3: Simulink S-Function BuilderMatlab Simulink中一个重要的工具,它主要用于创建S-Function。S-Function是一种可扩展的Simulink组件,允许用户编写自定义代码以在Simulink环境中进行仿真和代码生成。 使用Simulink S-Function Builder,用户可以通过一个可视化的界面来创建自己的S-Function模块。该界面提供了一组工具和选项,使用户能够定义S-Function的输入和输出端口、状态变量和参数,还可以为模块设置Callback函数、生成代码,甚至可以调试S-Function。 S-Function Builder可以让用户创建各种类型的S-Function模块,例如C或C++ S-FunctionMatlab Function S-Function、Level-2 MATLAB S-Function等。其中,C或C++ S-Function是最常见的类型,因为它们提供了最高的灵活性,可以实现各种复杂的算法和控制策略。 总的来说,Simulink S-Function Builder是一个非常强大且易于使用的工具,可以帮助用户创建各种类型的S-Function模块,从而大大增强了Simulink的灵活性和可扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值