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


  1. 自动生成s-function:s-function builder根据要求和c语言代码来构建一个s-function块。
    新建simulink模型,从library browser中拖拽出s-function builder块
    双击s-function builder,打开其对话框。

    对话框中可以设置s-function名字、参数、库等。先在命令行中输入mex -setup配置,再点击build按键开始创建。创建过程中,生成三个文件:mysfun.c, mysfun_wrapper.c, mysfun .tlc。其中mysfun.c包含所生成的s-function标准部分的源代码,mysfun_wrapper.c包含了在对话框中输入的客户代码,mysfun.tlc允许simulink在加速模式下运行所生成的s-function,并允许RTW包含由该s-function生成的代码。

  2. simulink 如何与C S-function 相互作用
    从两个层面来介绍这种相互作用,进程层面(在仿真的哪一时刻simulink调用s-function)和数据层面(在仿真时simulink与s-function如何交换信息)。
    进程层面:
    下图为simulink调用s-function回调函数的顺序:
    实线框部分表示在模型初始化或每个仿真步长内需使用的回调函数;虚线框部分表示在初始化阶段或在仿真循环的一些或所有采样步长内使用的回调函数。
    数据层面:
    s-function块具有输入和输出信号、参数、以及内部状态,再外加其它一般的工作域。一般对于块输入和输出信号的读写通过一个块I/O向量来,也可以来源于外部输入或接地输入。快输出可以通过根输出端口块传递到外部输出。

  3. s-function可以通过两种渠道(指针或相邻的输入)来访问输入信号。

    指针访问:
    通过函数InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S, portIndex)
    来访问输入信号,这是个指针数组,portIndex从0开始,每个输入端口都有一个索引号,访问该信号的一个元素使用*uPtrs[element]。
    输入数组指针能够指向内存中非相邻的单元。使用real_T *y = ssGetOutputPortSignal(S, outputPortIndex);获取输出信号。

    访问相邻的输入信号:
    通过使用ssSetInputPortRequiredContiguous宏,S-function的mdlInitializeSizes函数可以指定其输入信号的元素必须占据相邻的内存区间。如果输入是相邻的,其它函数可以使用ssGetInputPortSignal来访问输入。

    输入指针数组能够指向块I/O向量中的非相邻入口,特定端口的输出信号组成了一个相邻的向量。访问输入元素并将它们写入输出元素的代码:
    int_T element;
    int_T portWidth = ssGetInputPortWidth(S, inputPortIndex);
    InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S, inputPortIndex);
    real_T *y = ssGetOutputPortSignal(S, outputPortIdx);
    for(element = 0; element<portWidth; element++){
    y[element] = *uPtrs[element];
    }


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

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

  1. hiveql函数笔记(二)

    1.数据查询 //提高聚合的性能 SET hive.map.aggr=true; SELECT count(*),avg(salary) FROM employees; //木匾不允许在一个查询语句中 ...

  2. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

  3. main 函数解析(二)—— Linux-0.11 学习笔记(六)

    main函数解析(二)--Linux-0.11 学习笔记(六) 4.6 blk_dev_init函数 void blk_dev_init(void) {int i;for (i=0 ; i<NR ...

  4. 学习笔记(二)JavaScript基本概念(语法,数据类型,控制语句,函数)

    一.语法 1.javascirpt中一切(变量,函数名和操作符)是严格区分大小写的. 2.javascript(标识符) 所谓标识符,就是指变量,函数,属性的名字,或者函数的参数. 命名规则:第一个字 ...

  5. HiveQL学习笔记(二):Hive基础语法与常用函数

    本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介 2.HiveQL学习笔记(二):Hive基础语法与常用函数 ...

  6. SQL学习笔记之二:QUOTENAME函数

    SQL学习笔记之二:QUOTENAME函数 --SQL学习笔记二 --函数QUOTENAME --功能:返回带有分隔符的Unicode 字符串,分隔符的加入可使输入的字符串成为有效的Microsoft ...

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

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

  8. MATLAB学习笔记(二)

    MATLAB学习笔记(二) 一.矩阵运算 矩阵分析 向量和矩阵的范数运算 矩阵的秩 矩阵的化零矩阵 矩阵的化简rref()函数 线性方程组 超定线性方程组求解 矩阵分解 1.对称正定矩阵的Choles ...

  9. 《C++标准程序库》笔记之二

    <C++标准程序库>笔记之二 本篇博客笔记顺序大体按照<C++标准程序库(第1版)>各章节顺序编排. ------------------------------------- ...

最新文章

  1. 【opus源码分析】celt_fir5函数
  2. android n AES加密,AndroidP AES 加密适配
  3. 无障碍开发(六)之ARIA在HTML中的使用规则
  4. 【科普】boy and girl,你是不是对算法工程师有误解
  5. Python 移动文件夹所有的文件到另外一个文件夹,重复的跳过
  6. php memcache 64,PHP 5.3.13 memcache win 64 配置和安装
  7. java基础—Map集合的常见方法操作(java集合八)
  8. PHP中的__clone()
  9. 计算机单词大全及缩写,计算机英文单词和缩写
  10. android实例教程_Android ConstraintLayout示例教程
  11. oracle创建默认序列号,PLS-00103:为序列号oracle创建触发器(PLS-00103: Create trigger for sequence number oracle)...
  12. 越狱iphone安装mysql,CentOS 7 基于DCRM搭建自有Cydia越狱源
  13. 机器学习算法——决策树3(CART决策树算法)
  14. PHP商城网站绑定中国银联在线支付接口
  15. Mac 安装非信任开发者软件
  16. 图片生成二维码最好的工具
  17. 壁纸最佳分辨率尺寸表
  18. 【转载】C/C++ 笔试面试(1)—— sizeof
  19. zzulioj 1055: 兔子繁殖问题
  20. c语言大学程序设计题库,大连理工大学c语言...程序设计题库.doc

热门文章

  1. 小游戏--三子棋——N子棋(实现)
  2. 北京地铁车站换乘示意图行动(2010年4月1日更新完整)
  3. 车间生产管理系统(工厂数字化管理系统软件)
  4. PHP 文本式留言板源码
  5. mysql数据库基础知识点总结--看完即入门
  6. ASCⅡCharacters (ASCⅡ码对照表)
  7. 用Java给您的图片瘦身之Thumbnailator技术
  8. 查看苹果多少位系统(以及设置32或64位)
  9. 32位指针强制转换成64位数据
  10. Excel VBA 批量取工作表名称