simulink里面的模块如何制作的?

在实际项目设计中,使用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语言、嵌入式、编程相关知识,也会抽空分享些摄影相关内容,同样也分享大量摄影、编程相关视频和源码,另外你若想要获得更多内容教程请关注公众号:不只会拍照的程序猿。

}
  黑长条是MUX模块,你可以双击自己设置端口数。
模块你找不到你搜它的名字,双击模块,最上面显示的就是它的名字。
左边的积分器模块是带复位功能的,积分初值由外部输入信号提供。
当模型刚开始运行时(t=0),初值由IC模块的15提供,随后的运行时间里,如果复位信号被触发,则此时积分器被复位,复位后的初值则由输入到IC的信号提供。
我感到有点不太理解的是,IC的输入似乎是积分器的状态输出,这样的话,每次复位,积分器会仍然维持原来的状态,相当于没有被复位,而初值也完全可以直接由内部参数设置(或者由外部常数提供),现在的结构究竟想要实现什么功能?
外部有用from赋值的
Math Function 模块,然后在参数设置对话框中选择pow函数
这个是封装的时候用的在subsystem里面作为外部的一个输入端子,可以输入变量向量等
在命令窗口输入simulink就行了
}

我要回帖

更多关于 quartus怎么进行功能仿真 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信