【问题标题】:Why does Simulink coder start & stop my S function when I generate code?为什么 Simulink coder 在我生成代码时会启动和停止我的 S 函数?
【发布时间】:2016-03-09 19:56:20
【问题描述】:

我有一个非常简单的模型中的 C-MEX S-Function。 S-Function 做了很多事情(它充当一种设备驱动程序,用于从 Simulink 模型获取数据)。当我按下生成代码按钮时,我可以从诊断日志中看到该功能已启动然后终止。请问这是为什么?

我有一个日志函数,它在 S-Function 的各个阶段被调用,以帮助我理解程序流程,您可以从构建日志中看到(以 [INFO] 开头的 3 行):

### Generating code into build folder: /some_dir_path/output/test_grt_rtw
[INFO] mdlInitializeSizes
[INFO] mdlInitializeSampleTimes
[INFO] mdlTerminate
### Invoking Target Language Compiler on test.rtw
### Using System Target File: /Applications/MATLAB_R2015b.app/rtw/c/grt/grt.tlc
### Loading TLC function libraries
### Initial pass through model to cache user defined code
### Caching model source code
### Writing header file test.h
### Writing header file test_types.h
### Writing header file rtwtypes.h
.
### Writing header file multiword_types.h
### Writing source file test.cpp
### Writing header file test_private.h
### Writing header file rtmodel.h
### Writing source file test_data.cpp
### Writing header file rt_nonfinite.h
.
### Writing source file rt_nonfinite.cpp
### Writing header file rtGetInf.h
### Writing source file rtGetInf.cpp
### Writing header file rtGetNaN.h
### Writing source file rtGetNaN.cpp
### TLC code generation complete.
### Creating project marker file: rtw_proj.tmw
### Using toolchain: Clang v3.1 | gmake (64-bit Mac)
// remainder of log file here

【问题讨论】:

    标签: matlab simulink matlab-coder


    【解决方案1】:

    当您从模型生成代码时,它适用于模型的特定配置。虽然模型可以使用许多不同的配置运行,但生成的代码将具有集成到代码中的每个块的大小、类型、速率和复杂性。因此,要生成此代码,Simulink 需要传播模型中的类型,以识别生成代码所需的所有输入和输出规范。运行您的 S-Function 代码来确定这一点。调用的函数应与常规模型运行相同,但不运行输出计算部分。

    以下文档页面显示了在 S-Function 的代码生成中调用的内容。 http://www.mathworks.com/help/simulink/sfg/how-the-simulink-engine-interacts-with-c-s-functions.html

    【讨论】:

      猜你喜欢
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      • 2011-04-06
      • 2021-08-21
      • 2021-07-01
      • 2019-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多