主要内容

为代码生成准备包含变量的模型

使用嵌入式编码器®,您可以从Simulink生成代码金宝app®包含一个或多个变体选择的模型。生成的代码包含控制每个变量选择的激活的预处理器条件。

请注意

金宝appSimu金宝applink支持使用带有变体Simulink函数的多实例引用模型来生成代码。

查阅有关使用STF_make_rtw_hook文件以自定义构建过程,请参阅使用STF_make_rtw_hook文件自定义构建过程(金宝app仿真软件编码器)

将变量控制变量转换为金宝app仿真软件。参数对象

MATLAB®在构建模型和生成代码生成的预处理器条件时,变量允许您快速创建变量控制表达式的原型。然而,如果您想指定其他代码生成属性(如数据类型),您可以将MATLAB变量转换为金宝app仿真软件。参数对象。

  1. 指定模型中您想替换MATLAB变量控制变量金宝app仿真软件。参数对象。

    模型=“my_model_containing_variant_choices”;open_system(模型);
  2. 获取变量控制表达式中引用的变量。

    var = S金宝appimulink.VariantManager.findVariantControlVars(模型)
    vars = 4x1带有字段的结构数组:Name Value Exists Source SourceType
  3. 创建用于指定变量控制值的外部头文件,以便在代码运行时导入变量定义。

    headerFileName =[模型“_importedDefines.h”];headerPreamble = strrep(上层(headerFileName),“。”“_”);fid = fopen (headerFileName,“w +”);fidErr = (fid == -1); / /输出如果(fidErr)流(创建头文件%s时出错:…\ n”,headerFileName);其他的流(使用变量控制创建头文件“%s”…变量定义。\ n \ n”,headerFileName);流(fid检测器,“ifndef % s \ n”, headerPreamble);流(fid检测器,“# define % s \ n”, headerPreamble);结束

    变量控制变量定义为金宝app仿真软件。参数对象可以有这些存储类之一。

    • 定义ImportedDefine指定头文件bfile

    • CompilerFlag

    • SystemConstant (AUTOSAR)

    • 将数据定义为宏的自己的存储类

    请注意

    如果您使用启动激活时间,指定对象支持的自定义存储类。金宝app有关支持的内置和自定义存储类的更多信息金宝app启动激活时间看到不同激活时间的存储类

  4. 循环遍历所有MATLAB变量,将它们转换成金宝app仿真软件。参数对象。

    数= 0;countVars = 1:length(vars) var = vars(countVars).Name;val = var (countVars) value;如果isa (val,的金宝app仿真软件。参数的%什么也不做继续结束数=计数+ 1;%创建和配置Simulink。金宝app参数对象%对应于控制变量名。%指定存储类为Define(自定义)。newVal = 金宝appSimulink.Parameter (val);newVal。数据类型=“int16”;newVal.CoderInfo.StorageClass =“自定义”;newVal.CoderInfo.CustomStorageClass =的定义(自定义);newVal.CoderInfo.CustomAttributes.HeaderFile = headerFileName;金宝appSimulink.data。assigninGlobal(模型、var newVal);如果~ fidErr流(fid检测器,“# endif \ n”);文件关闭(fid);结束结束

请注意

对象的头文件可以为空定义存储类。

配置预处理器条件生成模型

如果你在a中表示变量选择不同的子系统块或变体模型块,为每个变量选择生成的代码被封装在C预处理器条件中#如果其他## elif,# endif

如果你用变异来源块或变体水槽块,为每个变量选择生成的代码被封装在C预处理器条件中#如果# endif

因此,在编译时选择活动变量,预处理器条件决定执行代码的哪一部分。

请注意

您必须拥有Embedded Coder®许可证才能生成代码。

  1. 建模选项卡,单击金宝app模型设置

  2. 选择代码生成面板,设置系统目标文件ert.tlc

  3. 报告窗格中,选择创建代码生成报告

    请注意

    代码的位置窗格中,如果紧凑的选项从文件的包装格式下拉列表,model_types.h文件不生成和内容model_types.h文件被移动到model.h文件。

  4. 选择代码生成面板,清楚忽略自定义存储类应用

  5. 在模型中,右键单击包含变量选择的块(不同的子系统变异来源变体水槽,或变体模型块),并选择块的参数

  6. 确保表达式(默认选项)变量控制方式参数。

  7. 变体激活时间列表中,选择代码编译

    金宝appSimulink在更新图或仿真过程中分析所有的变体选择。此分析为所有变体选择提供了代码生成准备就绪的早期验证。

  8. 构建的模型。

相关的例子

更多关于