文件

生成模型或子系统代码的C ++类接口

要生成用于模型代码的c++类接口,请设置模型配置参数代码接口包装C ++类.生成的接口将所需的模型数据封装到C ++类属性和模型入口点函数中,以C ++类方法。C ++类封装的好处包括:

  • 更好地控制访问模型数据

  • 能够创建模型类的多个实例

  • 更容易将模型代码集成到C ++编程环境中

C ++类封装也适用于右键单击“非传中子系统的构建”。(有关适用的要求的信息,请参阅生成非传中子系统代码的C ++类接口.)

生成c++类接口到模型代码

要从基于GRT的模型生成封装的C ++类代码:

  1. 设置模型配置参数C ++.此选择还支持模型的C ++类代码接口打包。

  2. 验证模型配置参数代码接口包装被设置为C ++类

  3. 审视多实例代码错误诊断.将参数留在其默认值下错误除非您需要更改模型违反生成多实例代码的要求时显示的诊断的严重性级别。

  4. 为模型生成代码。

  5. 在生成的文件中检查C ++模型类代码模型.h模型.cpp..例如,下面的代码摘自为示例模型生成的H文件RTWDEMO_SECONDorDordersystem.显示模型的c++类声明。

    / *模型RTWDEMO_Secondordersystem * / class RTWDemo_SecondordorSystemModelClass {/ *公共数据和功能成员* / public:/ *外部输出* / exty_rtwdemo_secondordorsyste_t RTWDEMO_SECONDONDERSYSTEM_Y;/ *模型入口点函数* / / *型号初始化函数* / void initialize();/ *模型步函数* / void step();/ *模型终止功能* / void终止();/ *构造函数* / rtwdemo_secondordorsystemmodelclass();/ *析构函数* /〜rtwdemo_secondordorsystemmodelclass();/ *实时模型GET方法* / RT_MODEL_RTWDEMO_SECONDORDERS_T * GETRTM();...};

    有关生成和调用模型入口函数的更多信息,请参阅配置模型入口点函数的代码生成

笔记

如果你有嵌入式编码器®许可证,您已选择基于ERET的系统目标文件,用于模型,使用其他代码生成>界面窗格参数来定制生成的c++类接口。

生成非传中子系统代码的C ++类接口

如果满足以下要求,您可以生成C ++类接口,以便右键单击非传中子系统的构建:

  • 模型被配置为C ++语言和C ++类包装代码接口。

  • 子系统可转换为a模型块使用函数金宝appsimulink.subsystem.converttomodelreference..对于引用的模型转换要求,请参阅Simulink金宝app®参考金宝appsimulink.subsystem.converttomodelreference.

要为满足要求的子系统配置C ++类接口:

  1. 打开包含模型并选择子系统块。

  2. 右键单击子系统并选择C / C ++代码>构建此子系统

  3. 当子系统构建完成后,检查生成的文件和HTML代码生成报告中的C ++类接口。有关生成和调用模型入口点方法的更多信息,请参阅配置模型入口点函数的代码生成

如果您有嵌入式编码器许可证,并且为您的模型选择了基于ert的系统目标文件,那么您可以使用MATLAB®命令RTW.CONFIGSUBSYSTEMBUILD要自定义生成的C ++类接口到子系统代码。

c++类接口限制

  • 上可用的数据交换接口界面在“配置参数”对话框中,只支持C API接口金宝appC ++类代码生成。如果你选择外部模式ASAP2接口,代码生成失败,验证错误。

  • 如果模型根导入值连接到Simscape™转换块,则必须插入一个Simulink金宝app信号转换root ovort与simscape转换块之间的块。在Simuli金宝appnk上信号转换块参数对话框,选择从“块减少”优化中排除此块

  • 当被引用的模型不能具有组合的输出/更新函数时,就不能使用c++类接口。案例包括一个模型

    • 有一个连续的采样时间

    • 节省国家

相关的话题