【问题标题】:Create Simulink block for Arduino library like liquidcrystal为 Arduino 库(如液晶)创建 Simulink 模块
【发布时间】:2012-09-21 22:17:07
【问题描述】:

我想使用 Simulink 为Arduino Uno 硬件创建程序。但我想使用现有的库(如液晶)来处理输出到LCD 显示器。如何创建包含液晶类文件的 s-function?

我认为 s-function 是要走的路,因为现有的 Simulink Arduino 库模块实际上是被屏蔽的 s-function。我使用的是 Simulink 学生版,所以我认为我无法从模型中编译 C 代码并将其合并到 Arduino IDE 中的项目中。

【问题讨论】:

  • 我假设你已经看过here。 MathWorks 的 Arduino 模块不需要任何额外的工具箱即可运行。 MATLAB/Simulink 学生版的功能不一定比标准版少,您可能会受到所安装工具箱的限制。使用ver 命令获取您可用的工具箱列表。这可能会极大地影响您解决此问题的方式。
  • 另外,你能提供更多关于液晶类文件的信息吗?这是您指的 Arduino 库吗?如果您有一些链接可以提供有关您想要使用的确切文件的更多信息,这将非常有助于您准确了解您的目标。
  • 您使用的是哪个版本的 MATLAB?在命令提示符下使用 ver - 你有 Real-time Workshop、Simulink Coder 还是 Embedded Coder?如果您没有这些代码生成工具,那么您将很难从 Simulink 创建程序,您将只能作为仿真运行。

标签: c matlab arduino simulink


【解决方案1】:

我会把我的评论变成答案... :)

好的,要从 Simulink 创建程序,您需要安装代码生成工具。 ver 会告诉您是否有 Simulink Coder,以及可选的 Embedded Coder。如果您使用的是旧版本的 MATLAB,则它称为 Real-time Workshop。如果没有其中一个,您将不会生成任何代码。

所以假设你可以代码生成:

S-Function 是他们的发展方向:http://www.mathworks.co.uk/help/simulink/s-function-basics.html

...虽然有各种工具可以帮助创建 S-Function。

简而言之,流程是:

  • 复制一份 sfunc_basic.c(或类似的)S-Function C 文件模板并进行相应的填充。这无论如何都不是微不足道的,它可能需要很长时间才能编译(见下文),并且在模型中实例化 MATLAB 时不会使 MATLAB 崩溃。
  • 使用 mex 命令编译(参见文档)。
  • 在模型中使用块。为自己创建一个执行非常简单的测试工具模型。使用创建工作解决方案所需的最少模型块。
  • 创建一个 TLC 文件,该文件将定义如何在模型 C 程序的编译和运行时使用块数据。在这里,您将调用液晶库。
  • 使用 TLC 和/或 S-Function 生成代码/修复错误/修复生成代码中的错误/重复直到完成 :)

所有这些步骤都可以扩展很多。第一次这个过程有点麻烦,但你会学到很多关于 S-Function、model.RTW 文件、TLC 和调试所有上述内容的知识。

哦,是的,调试 S-Function 可能很麻烦。准备好使用 Visual Studio 之类的东西来“附加”到 matlab 进程来调试它。

丰富

【讨论】:

  • 我认为值得澄清/补充的一件小事是:你是对的,你需要你提到的工具箱来生成 C 代码,但它们不是简单的生成针对 Arduino 的可执行文件。您可以在基本 Simulink 中使用 Run-On-Target Hardware 将 Simulink 模型部署到 Arduino。也就是说,与您提到的工具箱相比,该功能显然非常有限,因此可能不是这里的最佳方法,因为 OP 想要合并外部库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多