MATLAB C S-Function不能在simulink实时编译

Posted

技术标签:

【中文标题】MATLAB C S-Function不能在simulink实时编译【英文标题】:MATLAB C S-function cannot be compiled in simulink real time 【发布时间】:2021-02-27 00:56:16 【问题描述】:

我在 Simulink 中实时使用了 C S-Function。编译模型时出现以下错误, “mxCreateDoubleScalar”未定义; “mexPutVariable”未定义; [在此处输入图片说明][1]

我知道Simulink real time好像不支持“mxCreateDoubleScalar”、“mexPutVariable”,但是不知道怎么替换,可以帮帮我吗? [1]:https://i.stack.imgur.com/xtiyo.png

【问题讨论】:

【参考方案1】:

我建议您使用可执行文件。首先你必须安装一个 C/C++ 编译器。我推荐你安装 minGW(你可以在 Matlab 的 AddOn 上得到它)。 然后,您必须初始化您在 s-function 上使用的所有变量。 最后,当你想用你的模型和 s-function 做一个“mex”时,检查命令行来混合所有文件。 2 年前我遇到了同样的问题,我能够创建一个实时应用程序并运行它。

这里你有如何使用mex函数mex function

这里有关于 C/C++ 编译器的信息C/C++ compiler

这里有关于如何配置 .mdl 或 .slx Simulink Real-Time的信息

我建议你在 Matlab 的论坛上发布这个问题,也许他们可以更好地帮助你。

BR。

PD:如果您的 .c 文件链接了 .h 文件,请确保在 mex 命令行中链接了所有这些文件。

【讨论】:

以上是关于MATLAB C S-Function不能在simulink实时编译的主要内容,如果未能解决你的问题,请参考以下文章

C语言编译器” MinGW-w64 C/C++”的安装

如何确定 c-mex s-function 中的输入序列?

如何在保证仿真精度的情况下提高仿真速度

从 Simulink 中的 Matlab 功能块调用的 sim 命令的 Simout 输出

MATLAB——神经网络sim仿真函数

S-Fucntion 模块核心干货及易错点归纳总结入门学员必学