在实际项目设计中,使用simulink提供的基本模块很难实现的时候,此时就需要一种用户可以自定义的方式,定做自己的模块。
在这种情况下,Matlab的s函数应运而生,S-函数是系统函数(System Function)的简称,又称S-function,支持用户使用C语言、C++、Matlab等语言编写自己的功能模块。
3. 依次点击File->Save(Ctrl+S)存储模型文件,在新弹窗中指定模型存储位置与名字。
6. 此时系统自动打开s函数模板文件,sfunctmpl_basic,此时我们点击保存->另存为,存储模板文件到工程目录下。
1. 文件头:声明s函数模块名字与level。
* @ 设置连续状态个数 * @ 设置离散状态个数 * @ 设置输入变量个数 * @ 设置输入变量维数(变量为1,数组为元素个数) * @ 设置输入变量数据类型 * @ 设置输出变量个数 * @ 设置输出变量维数(变量为1,数组为元素个数) * @ 设置输出变量数据类型1. 在命令行窗口输入命令mex f_add.c,将.c文件编译成.mexw64文件。这里将.c文件编译成.mexw64文件有两种方法。
a. 安装TDM-GCC-64,调用MinGW编译器完成,需要配置环境变量,并且命令行需要输入以下三条命令,此时编译出来的s函数模块在仿真时能用,但是如果使用xpc模式,编译会出错,提示编译器不正确。
b.在宿主机上安装Visual Stdio软件,这里小编装的是Visual Studio 2015,只需要在第一次的时候输入以下两条命令即可,此时编译出来的s函数模块在仿真和xpc模式下均能正常使用。
4. 此时,模块会根据我们S函数设置的输入参数和输出参数个数自动调整,如下图所示。
5. 按照下图,完成模型搭建工作。
模型功能说明:输入两个常数1和0.5,调用s函数进行加法处理后输出。在仿真模式下,模型使用Scope用来监视输入参数1和输出数据。在xpc模式下,模型使用Target Scope2监视输入参数1,使用Target Scope1监视输出。
注意:scope示波器默认只有一个信号输入,用户若想设置多个输入,需双击模块,在弹窗中选择File->Number of Input Ports设置输入端口数目。
3. 仿真验证:设置仿真时间为inf(无穷大),点击运行按钮,双击示波器,查看此时参数波形状态,如下所示。
注意:示波器默认两各输入在同一坐标轴中显示,若要分开显示,如上图那样,需要在示波器View->Layout中配置显示方式。
7. 连接成功后,TargetPC1由绿色色块显示连接成功,此时点击运行按钮,开始运行模型。
8. 最后目标机上运行如下图所示。
* @Author : Feng(更多编程相关的知识和源码见微信公众号:不只会拍照的程序猿,欢迎订阅) * @Description : s函数示例,功能:输入两个变量,相加后输出 /* 主要用于设置输入、输出、参数信息 */
我用C语言玩对象,偷偷关注着你的观察者模式(基类设计)
更多精彩内容,请关注微信公众号:不只会拍照的程序猿,本人致力分享linux、设计模式、C语言、嵌入式、编程相关知识,也会抽空分享些摄影相关内容,同样也分享大量摄影、编程相关视频和源码,另外你若想要获得更多内容教程请关注公众号:不只会拍照的程序猿。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。