主要内容

利用MATLAB函数块集成C代码

从Simulink模型中调用C代码万博1manbetx

您可以从Simulink调用外部C代码万博1manbetx®模型使用一个MATLAB函数块。遵循以下高级步骤:

  1. 从由源代码(.c)及标题(.h)文件。

  2. MATLAB函数块,输入MATLAB®调用C代码的代码。使用coder.ceval函数。要通过引用传递数据,请使用coder.refcoder.rref,或coder.wref

  3. 文件中指定用于模拟的C源文件和头文件模拟目标面板的模型配置参数对话框。使用双引号包含头文件,例如:# include“program.h”.如果您需要访问工作目录之外的C源文件和头文件,请在模拟目标窗格中,在包括目录文本框中。

    另外,使用coder.cincludecoder.updateBuildInfo函数来指定MATLAB代码中的源文件和头文件。要开发外部代码的接口,可以使用编码器。ExternalDependency类。要查看支持哪个工作流,请参见万博1manbetx导入自定义代码

  4. 测试你的Simuli万博1manbetxnk模型并确保它能正常工作。

  5. 如果你有万博1manbetx仿真软件编码器™许可证,您可以使用此方法为目标生成代码。要使用相同的源文件和头文件生成代码,请单击使用与模拟目标相同的自定义代码设置代码生成>自定义代码窗格。您还可以指定不同的源文件和头文件。

    要使代码条件化以执行模拟和代码生成的不同命令,可以使用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在当前工作文件夹中。

    #ifndef myfn# define MYFN double double (double u); / /定义MYFN# endif
  3. 创建一个新的Simulin万博1manbetxk模型。将其保存为myModel

  4. 库浏览器,从用户定义函数,添加一个MATLAB函数块,并双击该块以打开编辑器。

  5. 输入调用的代码doubleIt计划:

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

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

  8. 模型配置参数对话框,打开模拟目标窗格。

  9. 在生成的代码中插入定制的C代码部分中,选择头文件从列表中,然后输入# include“doubleIt.h”头文件文本框中。

  10. 额外的构建信息部分中,选择源文件从列表中输入doubleIt.c源文件文本框,单击好吧

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

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

本程序仅适用于模拟。

万博1manbetxSimulink生成代码MATLAB函数块和Stateflow®来模拟模型。当你调用外部C代码使用MATLAB函数块或statflow,您可以控制模型模拟中导入的总线和枚举的类型定义。

万博1manbetxSimulink可以生成类型定义,或者您可以提供包含类型定义的头文件。控件控制此行为为导入的总线和枚举类型生成类型定义复选框中的模型配置参数对话框。

包含定义枚举和总线类型的自定义头文件:

  1. 清除为导入的总线和枚举类型生成类型定义复选框。

  2. 列表中的头文件模拟目标窗格中,在头文件文本框中。

要配置Simulink以自万博1manbetx动生成类型定义:

  1. 选择为导入的总线和枚举类型生成类型定义复选框。

  2. 不要列出与总线或枚举相对应的头文件。

另请参阅

||||||||

相关的例子

更多关于