在 Simulink Real-Time 的 M 文件 S-Function 中使用 C-Mex 函数

Posted

技术标签:

【中文标题】在 Simulink Real-Time 的 M 文件 S-Function 中使用 C-Mex 函数【英文标题】:Using a C-Mex Function in an M-File S-Function in Simulink Real-Time 【发布时间】:2020-10-09 16:30:33 【问题描述】:

我创建了一个 Level-2 M-File S-Function,它在内部调用了一个 C MEX 函数。这在普通 simulink 中工作正常,但是否可以将其部署到 speedgoat 实时 PC?我有C-MEX函数的源代码。

如果需要,需要哪些步骤?

我有 mex 文件的原始 C 源代码(最初来自 Matlab 文件交换)。

【问题讨论】:

【参考方案1】:

按照此处的步骤创建 C-Mex S-Function。它不是一个全面的指南,因此如果您有任何疑问,请参阅有关 2 级 C-Mex S-Function 的大量 Mathworks 文档。

Creating a C-Mex S-Function

要特别注意放

#define S_FUNCTION_NAME wrapsfcn

与主 c/cpp 文件的命名相同

然后在 Matlab 命令窗口中使用“mex”命令编译 S-Function。您将需要安装一个有效的编译器(例如,VS2015 Express 就可以)。接下来,在您的模型中创建一个 S-Function 模块。在 S-Function Name 下,输入我们之前提到的名称,区分大小写。

然后,您就可以构建和部署了。

在我的 speedgoat 机器 @ R2020b 中测试。

【讨论】:

以上是关于在 Simulink Real-Time 的 M 文件 S-Function 中使用 C-Mex 函数的主要内容,如果未能解决你的问题,请参考以下文章

怎么把M文件导入Simulink

如何把simulink用m语言控制

MATLAB调用simulink时出现如下错误

matlabm文件中如何调用simulink模块

怎么使用m函数获取Simulink模型运行结果参数

各位大神,MATLAB中如何将编写M函数文件与Simulink之间相互调用,小弟刚学不久,求指点。最好能详细一点。