【问题标题】:Integrating the code generated from simulink in the project将simulink生成的代码集成到项目中
【发布时间】:2013-10-13 18:13:45
【问题描述】:

我有一个 simulink 模型,我使用 simulink 编码器为通用实时目标生成代码。 然后我将生成的文件(*.c 和 *.h)复制到我在 MPLAB 中的项目中。 这里我有 main.c 文件,这里我使用 MdlStart() 来初始化模型一次,然后在无限循环中我使用 MdlOutputs() 和 MdlUpdate() 来运行模型。一切正常。

现在实际上我想加快模型的执行速度,因此我想将模型拆分为子系统并仅在需要时执行子系统(例如,我想每次都执行一些子系统,而某些只几毫秒而不是每次)。我可以将模型拆分为子系统,并使每个子系统原子化,以便为每个子系统获得不同的功能。现在这些不同的子系统的函数是从 MdlOutputs() 和 MdlUpdate() 调用的。所以他们每次执行模型时都会执行。

实际上,我想在我的 MPLAB 项目中使用一些计时器,然后执行几个子系统,比如说每 100 毫秒。我也不想修改自动生成的 *.c 和 *.h 文件。

所以不是每次都通过 MdlOutputs() 和 MdlUpdate() 执行这些子系统的功能,是否可以从我的 main.c 文件中调用子系统的功能而无需触及自动生成的 *.c 和 *. h 文件?

希望我已经解释清楚了。

等待您的帮助。

【问题讨论】:

    标签: code-generation simulink


    【解决方案1】:

    您应该尝试使用 Simulink 中的子系统对您尝试执行的所有操作进行建模。例如,您可以使用“启用的子系统”或“触发的子系统”来创建仅在某些时间步上运行的子系统。我不确定您指的是哪种计时器。如果是 Simulink 时间,那么您将需要以不同的采样率运行不同的子系统,这将为您提供多速率模型。如果您的计时器只是另一个外部源,请尝试触发或启用子系统。这是避免修改生成文件的最佳方法。

    这些子系统的文档位于http://www.mathworks.com/help/simulink/conditional-subsystems-1.html

    【讨论】:

    • 多速率是要走的路。生成的阶跃函数集成了计数器,可以在每一步调用正确的函数。
    猜你喜欢
    • 2014-03-19
    • 1970-01-01
    • 2021-07-21
    • 2017-07-06
    • 2014-02-01
    • 2015-08-04
    • 1970-01-01
    • 2020-02-27
    • 2013-07-29
    相关资源
    最近更新 更多