使用MATLAB函数块集成C代码
从Simulink模型调用C代码万博1manbetx
您可以从Simulink调用外部C代码万博1manbetx®使用MATLAB函数块。遵循以下高级步骤:
从现有的C代码开始,该代码由源代码(
。c
)和头文件(。h
)文件。在MATLAB函数块,进入MATLAB®调用C代码的代码。使用
coder.ceval
函数。要通过引用传递数据,请使用coder.ref
,coder.rref
,或coder.wref
。要开发到外部代码的接口,可以使用编码器。ExternalDependency
类。中指定用于模拟的C源文件和头文件模拟目标面板型号配置参数对话框。使用双引号包含头文件,例如,
# include“program.h”
。如果需要访问工作文件夹外的C源文件和头文件,请在模拟目标窗格,在包括目录文本框中。或者,使用
coder.cinclude
和coder.updateBuildInfo
函数在MATLAB代码中指定源文件和头文件。测试您的Simuli万博1manbetxnk模型并确保其正常工作。
如果你有万博1manbetx仿真软件编码器™许可证,您可以使用此方法为目标生成代码。若要使用相同的源文件和头文件生成代码,请单击使用与模拟目标相同的自定义代码设置在代码生成>自定义代码窗格。您还可以指定不同的源文件和头文件。
为了使代码能够执行不同的命令进行模拟和代码生成,可以使用
coder.target
函数。
使用coder.ceval
在MATLAB函数块中
这个例子展示了如何调用简单的C程序doubleIt
从一个MATLAB函数块。
创建源文件
doubleIt.c
在当前工作文件夹中。#include "doubleIt.h" double doubleIt(double u) {return(u*2.0);}
创建头文件
doubleIt.h
在当前工作文件夹中。定义MYFN double double (double u);# endif
创建一个新的Simulin万博1manbetxk模型。另存为
myModel
。在库浏览器,从用户定义函数,添加MATLAB函数块到模型中,双击该块以打开编辑器。
方法调用的代码
doubleIt
计划:函数y = callingDoubleIt(u) y = 0.0;Y = code .ceval(“doubleIt”u);
连接一个值为的常量块
3.5
的输入端口MATLAB函数块。将显示块连接到输出端口。
在型号配置参数对话框,打开模拟目标窗格。
在在生成中插入自定义C代码部分中,选择头文件,然后输入
# include“doubleIt.h”
在头文件文本框中。在其他构建信息部分中,选择源文件从列表中输入
doubleIt.c
在源文件文本框,单击好吧。运行模拟。的值
7
显示在显示块中。
控件导入的总线和枚举类型定义
本程序仅适用于模拟。
万博1manbetxSimulink生成的代码MATLAB函数block和Stateflow®模拟模型。调用外部C代码时使用MATLAB函数块或状态流,您可以控制模型模拟中导入的总线和枚举的类型定义。
万博1manbetxSimulink可以生成类型定义,或者您可以提供包含类型定义的头文件。控件控制此行为为导入的总线和枚举类型生成类型定义中的复选框。型号配置参数对话框。
要包含定义枚举和总线类型的自定义头文件:
清除为导入的总线和枚举类型生成类型定义复选框。
列表中的头文件模拟目标窗格,在头文件文本框中。
配置Simulink以自动万博1manbetx生成类型定义:
选择为导入的总线和枚举类型生成类型定义复选框。
不要列出与总线或枚举对应的头文件。
另请参阅
编码器。BuildConfig
|编码器。ExternalDependency
|coder.ceval
|coder.cinclude
|coder.ref
|coder.rref
|coder.target
|coder.updateBuildInfo
|coder.wref