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

    文章

    4753

    浏览量

    68368
  • 编译
    +关注

    关注

    0

    文章

    654

    浏览量

    32813
收藏 人收藏

    评论

    相关推荐

    Matlab/Simulink/Stateflow建模开发及仿真测试

    matlab 模拟仿真 熟悉Matlab/Simulink/Stateflow建模开发及仿真测试,熟悉V模型开发流程。 熟悉自动代码生成,能够编写或者配置自动代码生成脚本。
    发表于 10-24 17:23

    【干货分享】硬件在环仿真(HiL)测试

    一、HiL是什么?硬件在环仿真(Hardware-in-the-Loop,简称HIL)是真的控制器连接假的被控对象,以一种高效低成本的方式对控制器进行全面测试。它是一种用于复杂设备控制器的开发与测试
    的头像 发表于 09-19 17:15 728次阅读
    【干货分享】<b class='flag-5'>硬件</b>在环<b class='flag-5'>仿真</b>(HiL)测试

    常用的仿真软件有哪些

    在当今的工程和技术领域,仿真软件已经成为了一种非常重要的工具。它们可以帮助工程师和研究人员在实际制造和测试之前,对系统或产品进行模拟和分析。以下是一些常用的仿真软件及其特点: MATLAB
    的头像 发表于 08-22 09:18 2296次阅读

    simulink动态系统建模仿真-第9章

    电子发烧友网站提供《simulink动态系统建模仿真-第9章.ppt》资料免费下载
    发表于 07-26 11:47 1次下载

    EasyGo使用笔记丨分布式光伏集群并网控制硬件在环仿真应用

    比例新能源接入”的背景下,开发一个基于硬件在环技术的平台,用以仿真测试光伏逆变器及其控制策略,显得尤为迫切且具有重大的实际价值。其不但能够保证仿真结果的稳定性与准确性,而且大大缩短仿真
    发表于 07-12 17:20

    lwip出现错误: recvmbox must be deallocated before calling this function怎么解决?

    服务器端 与 开发板之间连接成功后, 就不会出现 任何错误,工作也都正常 当 服务器端断开连接后,大概 5-10s 左右就会出现错误, 另外还会提示 Assertion \"
    发表于 04-15 07:09

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

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

    电路仿真软件simulink使用方法

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

    硬件测试服务项目的重要性和作用

    硬件测试服务项目是确保硬件设备性能稳定、质量可靠的关键环节。它涉及对硬件产品进行全面、细致的检查和验证,以确保其满足设计要求并具备优良的用户体验。以下是
    的头像 发表于 03-28 09:54 683次阅读
    <b class='flag-5'>硬件</b>测试<b class='flag-5'>服务</b>项目的重要性和作用

    verilog task和function区别

    verilog中的task和function都是用于实现模块中的可重复的功能,并且可以接收参数和返回结果。但是它们在编写和使用上有一些区别。下面将详细介绍task和function的区别。 语法结构
    的头像 发表于 02-22 15:53 991次阅读

    verilog function函数的用法

    Verilog 是一种硬件描述语言 (HDL),主要用于描述数字电子电路的行为和结构。在 Verilog 中,函数 (Function) 是一种用于执行特定任务并返回一个值的可重用代码块。函数在
    的头像 发表于 02-22 15:49 5148次阅读

    verilog中function和task的区别

    在Verilog中,Function和Task是用于模块化设计和重用代码的两种重要元素。它们允许开发人员将复杂的操作分解为更小的功能单元,并在需要时调用它们。虽然Function和Task在某些方面
    的头像 发表于 02-22 15:40 1796次阅读

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

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

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

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

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

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