本文章用来做simulink的S-function函数的学习笔记:


  • s-function即system
    function,主要为一种扩展simulink的性能的工具,可以通过MATLAB,C,C++,Ada或Fortran语言来编写。其中MATLAB语言是最为简单方便的,可以调用MATLAB提供的函数。若要调用API函数则需要C来开发,C开发的S-function更加灵活。非MATLAB语言编写的s-function都需要用MEX编译成Mex文件。

  • s-function格式可以简单看成:初始化mdlInitializeSizes()、采样时间设定mdlInitializeSampleTimes()、系统输出mdlOutputs()、结束mdlTerminate()四个部分。这四个函数中一个不能少。

  • 最基本的C语言S-function模板:

#define S_FUNCTION_NAME name
#define S_FUNCTION_LEVEL 2  //定义s-function级别 1级为老版本
#include"simstruc.h"  //必须包含,SimStruc是Simulink提供的数据结构
//..C语言库中的头文件
static void mdlInitializeSizes(SimStruct *S){}
static void mdlInitializeSampleTimes(SimStruct *S){}
static void mdlOutputs(SimStruct *S,int_T tid){}
static void mdlTerminate(SimStruct *S){}
#ifdef MATLAB_MEX_FILE
#include"Simulink.c"//用于仿真
#else
#include"cg_sfun.h"//用于RTW代码生成(非内嵌的S函数)
#endif
//内嵌的S函数需要在代码中添加mdlRTW()和额外编写TLC文件

S函数源文件存储在MATLAB路径下,用MEX命令编译C源文件,编译成功则生成.mexw32文件或.dll文件。

  • s函数的模块封装:右键模块 Create
    Mask其中有四栏:图标&端口、参数&会话、初始化、文档。封装好了之后右键模块Look
    Under
    Mask,
    填写源文件,把.mexw32放置在当前目录下,在对话框中填写正确文件名,再按照顺序填写Parameters中的参数,则完成对S函数模块的封装。

  • 自动建立s-function模块(S-function Builde)

  • M文件的S-function
    [sys,x0,str,ts] = f(t,x,u,flag,p1,p2,...) 函数组成,其中f是S-function的函数名,t是当前时间,x是相应s-function块的状态向量,u是块的输入,flag标识了执行任务,p1,p2…是块参数。simulink反复调用f,对于特定的调用使用flag来调用相应函数。matlabroot/toolbox/simulink/blocks中有M文件s-function的模板(sfuntmpl.m)。

  • Mex文件的S-function
    在mex文件中的s-function的实现可以使用c,c++,Ada或Fortran。simulink直接调用Mex文件中的S-function程序,不需要通过flag值来选择,但在函数中必须按照simulink指定的标准命名规定来定义函数名。matlabroot/simulink/src中有Mex文件S-function的模板(sfuntmpl_basic.c), 另外一个模板sfuntmpl_doc.c有更详细的注释。


如果有什么错误望指教。
参考:《MATLAB的S-function编写指导》。

Simulink之S-function函数笔记之一相关推荐

  1. Simulink之S-function函数笔记之二

    本文章用来做simulink的S-function函数的学习笔记: 自动生成s-function:s-function builder根据要求和c语言代码来构建一个s-function块. 新建sim ...

  2. SV学习笔记—function函数和task任务

    目录 1.function/task 1.1 function函数 1.2 task任务及和function的不同点 1.function/task function和task基本用法一致,但是有几个 ...

  3. Python3 函数笔记

    Python3 函数笔记 默认值在函数定义作用域被解析,如下所示: >>> i =5 >>> def f(arg=i): ...     print(arg) .. ...

  4. 在MATLAB中采用M文件实现对Simulink中的S函数程序实现自动调参数

    在做研究的时候我们经常需要对模型的参数就行相应的选择,然而有没有觉得每次更改一个参数都需要运行一次仿真程序觉得很无聊呀,运行完程序还要看效果怎么样,然后再根据效果来调整参数,再次运行程序,如此反复. ...

  5. 常用的simulink控制工具箱的函数

    常用的simulink控制工具箱的函数 1.构建基本的模型函数 1.模型的表示 (1)传递函数分子/分母多项式模型 (2)传递函数零极点增益模型 (3)状态空间模型: 2.系统建模 (1)串联 (2) ...

  6. function函数的用法c语言,function函数

    function()函数的具体用法 请大侠具体告知,高分赠送. function()函数语法: function 函数名(参数1 [参数2]) { 函数体 return 返回值 } 举例: javas ...

  7. Person Re-Identification by Multi-Channel Parts-Based CNN with Improved Triplet Loss Function 阅读笔记

    Person Re-Identification by Multi-Channel Parts-Based CNN with Improved Triplet Loss Function 阅读笔记 此篇 ...

  8. 创建一个Scalar-valued Function函数来实现LastIndexOf

    昨天有帮助网友解决的个字符串截取的问题,<截取字符串中最后一个中文词语(MS SQL)>http://www.cnblogs.com/insus/p/7883606.html 虽然实现了, ...

  9. Java Lambda 表达式(又名闭包 (Closure)/ 匿名函数 ) 笔记

    Java Lambda 表达式(又名闭包 (Closure)/ 匿名函数 ) 笔记 根据 JSR 335, Java 终于在 Java 8 中引入了 Lambda 表达式.也称之为闭包或者匿名函数. ...

  10. function函数的使用

    function函数的使用 规则: 函数必须至少含有一个输入变量,不能有任何输出或输入/输出双向变量. 函数不能包含时钟控制语句(如延迟#.事件控制@或者等待wait). 函数是通过对函数名赋值的途径 ...

最新文章

  1. jetspeed 安装及数据库配置
  2. 聊天服务器的外部流量
  3. ANDROID 开发常用的框架、工具、API最全集合
  4. 《剑指offer》-- 第一个只出现一次的字符、数组中只出现一次的数字、字符流中第一个不重复的字符、数组中重复的数字
  5. TCP/IP的七层负载均衡
  6. 正确使用AES对称加密
  7. Linux学习笔记:rpm程序包管理
  8. 把斯坦福大学土地租出去?特曼坦言:目的就是赚钱
  9. js Function.call
  10. 度数换算_度的换算(度数换算计算器)
  11. ul li文字不对齐
  12. android dropbox目录,通过Android上传文件到Dropbox文件夹
  13. 华硕路由桥接模式进入不了界面
  14. Android 新浪微博 授权失败 21337
  15. 矩阵的主元+秩+矩阵等价
  16. Win7 设置防火墙开放特定端口
  17. Switch中的参数
  18. Metal 框架之自定义设置渲染通道
  19. c语言中的fock方法输出hello,(1.1.20)C程序之Fock()函数
  20. Objective C 类别(Category)与类扩展(Extensions)

热门文章

  1. java socket ascii_TCP套接字上的ASCII - java
  2. 如何批量修改文件夹中的照片名称
  3. 深度linux 安装qq游戏,深度操作系统20下载
  4. 内外部函数和内存模型
  5. 2020年育婴员(五级)报名考试及育婴员(五级)模拟考试题
  6. 页面最上方的搜索和logo叫什么_网页顶部导航栏设计总结
  7. KUDU和IMPALA的结合使用
  8. 文件上传upload-labs靶场通关指南
  9. 路由在电话网和计算机网中的区别,光猫能替代路由器吗 光猫和路由器有什么区别【详解】...
  10. 大学英语B-必考词汇400个