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

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

3天内不再提示

分享Simulink子系统生成单独的子函数的教程

MATLAB 来源:djl 作者:柚籽 2019-09-17 09:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

我们写 C 代码的时候,为了主程序结构清晰,通常会把具有独立功能的代码变成子函数的形式。类似的,为了 Simulink 模型结构清晰,我们在模型里也经常会用把具一片实现某种功能的模块变成子系统的形式。

那么,如果我希望这些Simulink 子系统在自动代码生成时,也能真的生成单独的子函数,该如何配置呢?

把某个子系统编程函数调用

要得到:

自动生成代码时,让某个 Simulink 子系统的算法生成单独子函数形式。

怎么做:

把该子系统变为元胞子系统 (Atomic Subsystem),并配置子系统的代码生成选项。

举个例子

1. 模型

这是在前一篇帖子最后用到的一个模型。MATLAB Function 里面写了一个循环语句,并在循环内部调用了外部子系统 func:

分享Simulink子系统生成单独的子函数的教程

它所生成的代码如下图。可以看到 Simulink 子系统 func 在生成代码后,具体的 C 代码并不会平铺在主程序里。它而是作为一个函数调用的形式出现的的 func( ):

分享Simulink子系统生成单独的子函数的教程

2. 设置

这是因为对该模块的属性做了设置,如下图。

首先右键点击模型,打开 Block Parameters 界面,首先要在 Main 的页面将子系统勾选为Atomic Subsystem。只不过在这个案例模型里,由于 func 是触发子系统,默认就是 Atomic 的。

然后,点开出现的 Code Generation 页面,将 Function packaging 配置为 Nonresusable function,主函数调用它时通过全局变量来传递数据(总之不选择 Inline 和 Auto)。

分享Simulink子系统生成单独的子函数的教程

也可以设置为 Reusable ,这时主程序调用它的时候,会通过传参的方式来进行数据传递。最后生成的代码如下图:

分享Simulink子系统生成单独的子函数的教程

模型的默认设置是 Auto,所以在这种情况下,代码生成工具会把这个子系统的算法代码写在主程序里,而不会采用函数调用的方式,如下图:

分享Simulink子系统生成单独的子函数的教程

总结

如果希望某个子系统的 C 代码单独生成一个子函数,那么:

把子系统配置为元胞子系统(Atomic Subsystem);

设置 Code Generation 属性为 Reusable 或者 NonReusable。

另外,不仅可以将子系统的代码放在单独的子函数里,还可以配置放在单独的文件(在配置菜单里指定文件名即可)里。

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

    关注

    90

    文章

    3725

    浏览量

    97527
  • 函数
    +关注

    关注

    3

    文章

    4423

    浏览量

    68044
  • 代码
    +关注

    关注

    30

    文章

    4983

    浏览量

    74543
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    AD9874:通用中频子系统的技术剖析与应用指南

    AD9874:通用中频子系统的技术剖析与应用指南 在射频通信领域,中频子系统的性能对于整个通信系统的表现起着关键作用。AD9874作为一款通用中频子系统,以其卓越的性能和广泛的应用场景
    的头像 发表于 05-23 12:50 529次阅读

    RDMA设计37:RoCE v2 子系统模型设计

    本博文主要交流设计思路,在本博客已给出相关博文160多篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。 RoCE v2 子系统模型是用来模拟 RoCE v2 功能
    发表于 02-06 16:19

    智能巡检:技术融合与系统生成

    智能巡检系统的技术本质并非多个独立模块的简单堆砌,而是一个动态、复杂的技术融合体。其核心在于通过一套精密的数据-知识-决策转换链,将异构的底层感知、中台分析与顶层执行能力编织成一个具备自主性与适应性
    的头像 发表于 01-26 14:31 244次阅读

    西门子PLC中函数FC的使用方法

    函数函数块作为模块化编程的重要组成部分,在PLC 用户程序中有着相当频繁的应用。两者在生成与使用的过程中都有一定的相似,且都不能单独使用。而需要赋予特定的功能,由组织块(OB)直接或
    的头像 发表于 12-19 11:26 4732次阅读
    西门子PLC中<b class='flag-5'>函数</b>FC的使用方法

    家电电子系统设计:Littelfuse技术方案解析

    家电电子系统设计:Littelfuse技术方案解析 在当今家电市场,技术的飞速发展促使家电不断智能化、高效化和安全化。作为电子工程师,我们在设计家电电子系统时,需要综合考虑市场趋势、技术应用以及产品
    的头像 发表于 12-16 09:50 728次阅读

    MXAM常见问题解答:从配置到报告生成#simulink模型测试 #simulink

    Simulink
    北汇信息POLELINK
    发布于 :2025年11月14日 11:48:38

    使用Simulink自动生成浮点运算HDL代码(Part 1)

    引言 想要实现浮点运算功能,如果自己写Verilog代码,需要花费较多的时间和精力。好在Simulink HDL Coder工具箱提供了自动代码生成技术。下图展示了HDL Coder如何生成浮点运算
    发表于 10-22 06:48

    rtthread线程出现异常了,有没有什么钩子函数能够定义用户操作?

    线程出现异常了,有没有什么钩子函数能够定义用户操作????
    发表于 09-18 06:36

    Fakra接口标准以及它能为汽车电子系统带来什么

    Fakra接口标准是一种全球通用的汽车电子系统连接技术,它的主要作用是为汽车电子系统提供一种可靠的、全球通用的接口标准。它能够提高汽车电子系统的可靠性、整体性能和灵活性,使汽车电子系统
    的头像 发表于 09-17 14:50 3963次阅读
    Fakra接口标准以及它能为汽车电<b class='flag-5'>子系统</b>带来什么

    HarmonyOSAI编程单元测试用例

    > Generate UT,开始生成单元测试用例。 说明 最多支持解读20000字符以内的代码片段。ArkUI代码、生命周期函数、@Extend/@Styles/@Builder修饰的函数
    发表于 08-27 14:33

    基于 ROS + ADI 芯片方案 的 人形机器人子系统级BOM清单(以腿部子系统为例)

    基于 ROS + ADI 芯片方案 的 人形机器人子系统级BOM清单 (以 腿部子系统 为例),包括核心感知、执行与通信模块,配合主控系统通过 ROS2 实现分布式控制与状态反馈。 一、腿部
    的头像 发表于 06-17 17:06 2423次阅读

    迅为RK3568开发板新增topeet子系统-在产品中新增子系统

    build/subsystem_config.json文件中增加名为topeet的子系统,在3.4节已经新建了topeet 文件夹存放子系统代码。添加 topeet 子系统进行一个登记,说明
    发表于 06-16 10:43

    迅为RK3568开发板驱动指南GPIO子系统GPIO子系统API函数的引入

    迅为RK3568开发板驱动指南GPIO子系统GPIO子系统API函数的引入
    的头像 发表于 05-29 14:05 1286次阅读
    迅为RK3568开发板驱动指南GPIO<b class='flag-5'>子系统</b>GPIO<b class='flag-5'>子系统</b>API<b class='flag-5'>函数</b>的引入

    迅为RK3568驱动指南GPIO子系统 GPIO操作函数实验

    迅为电子RK3568开发板驱动指南GPIO子系统 GPIO操作函数实验
    的头像 发表于 05-28 15:24 1616次阅读
    迅为RK3568驱动指南GPIO<b class='flag-5'>子系统</b> GPIO操作<b class='flag-5'>函数</b>实验

    迅为RK3568开发板驱动指南GPIO子系统三级节点操作函数实验

    迅为RK3568开发板驱动指南GPIO子系统三级节点操作函数实验
    的头像 发表于 05-26 15:39 1746次阅读
    迅为RK3568开发板驱动指南GPIO<b class='flag-5'>子系统</b>三级节点操作<b class='flag-5'>函数</b>实验