1

我在 simulink 中为我的项目设计了一个控制系统。现在我需要将此设计转换为 C 代码。但是目前还没有决定代码将驻留在哪个特定的硬件处理器上。所以我需要从 matlab 中运行我的代码。我是这个行业的新手,所以我不知道将控制设计从 simulink 更改为嵌入式 C 所遵循的步骤。

由于我对我应该遵循的工作流程没有实际经验,我能否请我获得一些指导,了解为实现我的要求必须完成哪些一般规范。

4

2 回答 2

2

工作流程推荐:

确保您的设计已通过 Simulation 进行了充分测试。当您控制真实硬件时,您不想检测简单的错误。

调查/决定目标要求。您是否有有限的资源(内存/速度)并且必须自定义生成的代码以适合您应该使用嵌入式编码器的目标接口。否则 Simulink 编码器就足够了(如果您有嵌入式编码器,无论如何都可以使用它)。

考虑到数据类型、大小、记录的数据和状态,确保您的模型接口符合您对目标的期望。如果您对如何接口代码有特殊要求,则需要在信号和其他数据上设置存储类。如果您可以使用默认代码界面,您的生活将会轻松很多。

在配置参数/代码生成/系统目标文件中设置正确的目标。grt.tlc 用于快速原型设计代码, ert.tlc 用于嵌入式代码。然后您可以查看优化和代码生成属性并根据需要进行设置。如果您的目标具有特定的数据类型,您还应该更改嵌入式硬件实现以匹配目标上的数据类型。

生成代码(ctrl-b)。

将代码集成到您的目标项目中。首先调用 _initialize 一次,然后在基于时间的循环中设置输入,调用 _step 并读取输出。

也可以制作自己的自定义目标来自定义代码界面并直接提供所需的输出,包括编译和下载到目标。这主要用于快速原型设计,我建议先手动进行几次,然后再决定是否值得努力实现自动化。

于 2013-05-19T16:10:13.737 回答
1

您可能想开始查看Simulink CoderEmbedded Coder的一些示例或视频。Simulink Coder 用于生成 C/C++ 代码,但不一定针对在嵌入式处理器上运行进行优化(例如,它可能用于快速原型设计或硬件在环目的)。Embedded Coder 是 Simulink Coder 的一个插件,用于优化生成的代码以在嵌入式硬件上运行。

您可能还想注册一些关于该主题的网络研讨会或查看一些录制的网络研讨会(有很多可供选择)。

于 2013-05-16T11:26:40.440 回答