主要内容

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

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

请注意

Simulink支持使用多实例引用模型和不同的Simulink函数来生成代码。

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

转换变量控制变量仿真软件。参数对象

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

  1. 指定要替换MATLAB变量控制变量的模型仿真软件。参数对象。

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

    var = Simulink.VariantManager.findVariantControlVars(模型)
    vars =带字段的4x1结构数组
  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);结束

    变量控制变量定义为仿真软件。参数对象可以具有这些存储类中的一个。

    • 定义ImportedDefine指定头文件

    • CompilerFlag

    • SystemConstant (AUTOSAR)

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

    请注意

    如果您用启动激活时间,为对象指定支持的自定义存储类。有关支持的内置和自定义存储类的详细信息启动激活时间看到不同变量激活时间的存储类

  4. 循环遍历所有MATLAB变量并将它们转换为仿真软件。参数对象。

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

请注意

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

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

如果您在对象中表示变量选项不同的子系统块或变体模型块,为每个变量选择生成的代码包含在C预处理器条件中#如果其他## elif,# endif

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

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

请注意

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

  1. 建模页签,单击模型设置

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

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

    请注意

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

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

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

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

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

    Simulink在更新图或模拟过程中分析所有的变量选择。该分析为所有的变体选择提供了代码生成准备的早期验证。

  8. 构建的模型。

相关的例子

更多关于

Baidu
map