主要内容

利用MATLAB函数块集成C代码

如果你有想在Simulink中使用的C代码®模型,您可以调用外部C代码的模型使用MATLAB函数块。MATLAB函数块调用C代码使用MATLAB®命令。您还可以从模型中生成代码MATLAB函数调用外部C代码的块。

调用C代码动态仿真模块模型

要在Simulink模型中调用外部C代码,请遵循以下步骤:

  1. 确定来源(.c)和头文件(.h)包含您想在模型中使用的C代码的文件。

  2. 插入一个MATLAB函数块到模型中。

  3. MATLAB函数块,用coder.ceval函数来调用C代码。要通过引用传递数据,使用coder.refcoder.rref,或coder.wref

  4. 中指定C源文件和头文件模拟目标窗格中的“配置参数”页签。包括使用双引号的头文件,例如,# include“program.h”.如果需要访问工作文件夹之外的C源文件和头文件,请在模拟目标窗格中,在包括目录文本框中。

    另外,使用coder.cinclude而且coder.updateBuildInfo函数在MATLAB代码中指定源文件和头文件。要开发到外部代码的接口,可以使用编码器。ExternalDependency类。要查看支持的工作流,请参见导入自定义代码

  5. 测试您的Simulink模型,并确保其功能正常。

  6. 如果你有仿真软件编码器™许可证,您可以为目标生成代码。要使用相同的源文件和头文件生成代码,请打开Configuration Parameters,导航到代码生成>自定义代码面板,使使用与模拟目标相同的自定义代码设置.还可以指定不同的源文件和头文件。

    要使代码条件化以执行不同的命令进行模拟和代码生成,可以使用coder.target函数。

使用coder.ceval在一个例子MATLAB函数

这个例子展示了如何调用简单的C程序doubleIt从一个MATLAB函数块。

  1. 创建源文件doubleIt.c在您当前的工作文件夹中。

    #include "doubleIt.h" double doubleIt(double u) {return(u*2.0);}
  2. 创建头文件doubleIt.h在您当前的工作文件夹中。

    #定义MYFN double doubleIt(double u);# endif
  3. 创建一个新的Simulink模型。将其保存为myModel

  4. 在库浏览器中,导航到动态仿真模块>用户定义函数库,并添加一个MATLAB函数块到模型。

  5. 双击该块以打开MATLAB函数块编辑器.输入调用的代码doubleIt计划:

    函数y = callingDoubleIt(u) y = 0.0;y = coder.ceval (“doubleIt”u);
  6. 连接一个常数块,其值为3.5的输入端口MATLAB函数块。

  7. 连接一个显示块到输出端口。

    这个图像显示了一个MATLAB函数块设置为输出到显示块。MATLAB函数使用一个值为3.5的常量块作为输入。

  8. 打开Configuration Parameters窗口,并导航到模拟目标窗格。

  9. 代码信息选项卡上,单击包括头信息,然后输入# include“doubleIt.h”

    此图像显示了模拟目标窗格。文本#include

  10. 单击源文件选项卡并输入doubleIt.c.点击好吧

    此图像显示了模拟目标窗格。文本#include doubleIt.c已经包含在源文件部分中。

  11. 运行仿真。的值7出现在显示块。

控件导入的总线和枚举类型定义

当调用外部C代码时使用MATLAB函数块或Stateflow®,您可以控制模型中导入总线和枚举的类型定义。Simulink可以为您生成类型定义,或者您可以提供包含类型定义的头文件。控件可以控制此行为为导入的总线和枚举类型生成类型定义参数。要查找此参数,请打开配置参数窗口,导航到模拟目标窗格,并展开先进的参数部分。

若要配置Simulink自动生成类型定义,请启用为导入的总线和枚举类型生成类型定义.若要包含定义枚举和总线类型的自定义头文件,请清除为导入的总线和枚举类型生成类型定义中列出头文件头文件文本框中。

另请参阅

||||||||

相关的话题

Baidu
map