0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于使用 Simulink Function 仿真硬件服务的介绍和应用

MATLAB 来源:djl 作者:Guy Rouleau 2019-09-16 16:15 次阅读

在之前的帖子里(http://blogs.mathworks.com/simulink/2014/12/11/simulink-functions-intro/),我重点介绍了怎么使用 Simulink Function 来构造可以导出为函数的模型,这样可以把 Simulink Function 模块放在单独的模型里。在仿真的时候,可以引用这个模型,然后使用 Function Caller 模块来调用它。

关于使用 Simulink Function 仿真硬件服务的介绍和应用

还可以将这个 Function Library 模型生成代码,在自己的手写代码里就可以任意调用这些函数了。

没有提到的一点是, Simulink Function 和 Function Caller 模块完全可以反过来用。也就是说,在被引用的模型里放 Function Caller 模块,而在主模型里放被调用的 Simulink Function 模块。

关于使用 Simulink Function 仿真硬件服务的介绍和应用

为什么要这样做?简而言之,这是为了模拟一些不直接用于仿真的自定义代码。我们来看看这是如何实现的。

使用 Function Caller 模块来调用外部代码

如果我们把上面的子模型 codeGenModel.xls 生成代码的话,代码就像下面这样:

关于使用 Simulink Function 仿真硬件服务的介绍和应用

默认情况下,这个代码不会被编译,因为编译器不知道上哪找这个 timesTwo 函数。如果你知道怎么去配置模型,这个函数 timesTwo 可以从任意地方提供。比如在这个例子里,假设我们有一个 timesTwo.c 文件。

关于使用 Simulink Function 仿真硬件服务的介绍和应用

在模型的配置项里,我可以通过设置把这个文件包含到编译过程中去。

关于使用 Simulink Function 仿真硬件服务的介绍和应用

这样,我就可以调用我自己写的 timesTwo.c 然后编译成可执行文件了。

总结来说,可以通过构造一个 Simulink Function 来模拟外部代码。

我们可以构造一个仿真框架模型(如第二张图的 simTop),然后引用我们的算法模型(比如 codeGenModel.xls)。对于这个算法子模型来说,被它调用的 Simulink Function (对于 simTop 来说)是可见的。但是,当把子模型 (codeGenModel 单独)生成代码的时候,它并不知道( 主模型里的)Simulink Function 的存在,而相应的,它会链接到你所指定的那个外部代码(timesTwo.c)上去。

我必须得说明一下,这只是众多往Simulink 自动生成的代码中插入外部代码的方法之一。

如果在主机上就有外部代码的话,我会推荐使用 S-function 来包装和重用,可用于仿真和代码生成。

但是,如果没有外部代码,比如说这些代码是目标板上面的 OS 服务程序,那么这种方法倒有点意思(用Simulink Function 来模拟这些硬件 OS 服务程序)。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4553

    浏览量

    66667
  • 编译
    +关注

    关注

    0

    文章

    611

    浏览量

    32358
收藏 人收藏

    评论

    相关推荐

    电路仿真软件simulink的工作原理

    Simulink是MATLAB的一个模块,它采用图形化的方式来创建动态系统模型并进行仿真分析。Simulink的工作原理主要基于模块化的建模和仿真方式。
    的头像 发表于 03-29 15:21 198次阅读

    电路仿真软件simulink使用方法

    Simulink是MATLAB的一个重要组件,用于进行动态系统的建模和仿真
    的头像 发表于 03-29 14:25 285次阅读

    simulink常用模块有哪些 simulink模块执行顺序

    Simulink是一个基于图形的仿真环境,广泛应用于动态系统和控制设计的多领域建模和仿真
    的头像 发表于 02-18 17:18 957次阅读

    如何提高Simulink仿真性能呢?有哪些使用技巧?

    无论模型的复杂程度如何,每个 Simulink 用户都希望提高仿真性能。本文介绍了许多实用技巧和技术,来帮助您在仿真工作流中获得最佳的性能。
    的头像 发表于 01-18 10:01 240次阅读
    如何提高<b class='flag-5'>Simulink</b><b class='flag-5'>仿真</b>性能呢?有哪些使用技巧?

    Saber与Matlab联合仿真的操作过程介绍

    我们知道,[Saber]()软件在一开始就提供了与Matlab/Simulink的联合仿真功能,工程师们可以在Simulink中验证设计中的软件部分,同时在Saber中验证设计的硬件
    的头像 发表于 12-05 09:43 1124次阅读
    Saber与Matlab联合<b class='flag-5'>仿真</b>的操作过程<b class='flag-5'>介绍</b>

    Simulink数字逻辑电路的仿真

    电子发烧友网站提供《Simulink数字逻辑电路的仿真.pdf》资料免费下载
    发表于 11-18 09:24 4次下载
    <b class='flag-5'>Simulink</b>数字逻辑电路的<b class='flag-5'>仿真</b>

    MATLAB的数字逻辑电路Simulink仿真

    电子发烧友网站提供《MATLAB的数字逻辑电路Simulink仿真.pdf》资料免费下载
    发表于 11-17 15:39 3次下载
    MATLAB的数字逻辑电路<b class='flag-5'>Simulink</b><b class='flag-5'>仿真</b>

    BLDCM双闭环控制系统的仿真设计案例

    Matlab/Simulink下,结合Simulink基础模块与S-Function,提出了无刷直流电机控制系统的设计方案。
    发表于 10-29 09:44 425次阅读
    BLDCM双闭环控制系统的<b class='flag-5'>仿真</b>设计案例

    C集成的MATLAB/Simulink类型仿真学习总结

    S-Function 使用一种特殊的调用格式让你可以与Simulink 方程求解器相互作用,这与发生在求解器和内置Simulink 块之间的相互作用非常相似。S-Function 的形
    的头像 发表于 07-29 15:29 658次阅读
    C集成的MATLAB/<b class='flag-5'>Simulink</b>类型<b class='flag-5'>仿真</b>学习总结

    如何测试带服务接口的Simulink模型?

    在Matlab 2022a之后引入了Service Interface的建模元素,这让Simulink模型拥有了向外部其他模型提供函数的能力,也为服务接口建模语义打下基础。
    的头像 发表于 07-22 09:51 728次阅读
    如何测试带<b class='flag-5'>服务</b>接口的<b class='flag-5'>Simulink</b>模型?

    simulink命令有哪些 simulink命令集大全

      simulink的命令集  仿真命令  sim 仿真运行一个simulink模块  sldebug 调试一个simulink模块  si
    发表于 07-18 15:12 2次下载

    S-function详解与模型参考自适应仿真案例

    S-Function是system-function系统函数的缩写,是指采用非图形化的方式描述的一个功能块。S-Function提供给用户自己编写程序来满足自己要求模型的接口。
    的头像 发表于 06-30 17:03 977次阅读
    S-<b class='flag-5'>function</b>详解与模型参考自适应<b class='flag-5'>仿真</b>案例

    基于龙伯格观测器Luenberger的无感控制+Matlab/Simulink仿真

    本章节采用龙伯格观测器进行永磁同步电机的无传感器控制,首先分析了龙伯格观测器的原理,然后设计了PMSM的全阶龙伯格观测器,最后通过Matlab/Simulink对该观测器方案进行仿真分析,为了进行
    发表于 06-08 14:46 2128次阅读
    基于龙伯格观测器Luenberger的无感控制+Matlab/<b class='flag-5'>Simulink</b><b class='flag-5'>仿真</b>

    simulink和pspice联合仿真问题

    根据网上的资料操作,已可以再simulink中调用pspice中的模型,但是出现仿真错误如下: 网上查到的解决方案并没有解决我的问题,有没有人可以帮我看看呀,或者您的联合仿真是通过什么连接的 我
    发表于 05-23 15:04

    PWM/转速单闭环/转速电流双闭环电机控制Simulink仿真

    PWM/转速单闭环/转速电流双闭环电机控制Simulink仿真 实验室之前一直在用BBB板和ARM板通过驱动器控制电机,最近实验室新买了一台DSPACE平台,具有运行参数可视化、实时性高等特点
    发表于 05-05 14:30 0次下载
    PWM/转速单闭环/转速电流双闭环电机控制<b class='flag-5'>Simulink</b><b class='flag-5'>仿真</b>