为代码生成准备包含变量的模型
使用嵌入式编码器®,您可以从Simulink生成代码®包含一个或多个变量选择的模型。生成的代码包含控制每个变量选择的激活的预处理器条件。
请注意
Simulink支持使用多实例引用模型和不同的Simulink函数来生成代码。
有关使用STF_make_rtw_hook
文件以自定义构建过程,请参见使用STF_make_rtw_hook文件自定义构建过程(仿真软件编码器).
转换变量控制变量仿真软件。参数
对象
MATLAB®变量允许您在构建模型时快速构建变量控制表达式的原型,并为代码生成生成预处理器条件。但是,如果您想指定其他代码生成属性(例如数据类型),您可以将MATLAB变量转换为仿真软件。参数
对象。
指定要替换MATLAB变量控制变量的模型
仿真软件。参数
对象。模型=“my_model_containing_variant_choices”;open_system(模型);
获取变量控制表达式中引用的变量。
var = Simulink.VariantManager.findVariantControlVars(模型)
vars =带字段的4x1结构数组
创建一个用于指定变量控制值的外部头文件,以便在代码运行时导入变量定义。
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)
将数据定义为宏的自己的存储类
请注意
如果您用
启动
激活时间,为对象指定支持的自定义存储类。有关支持的内置和自定义存储类的详细信息启动
激活时间看到不同变量激活时间的存储类.循环遍历所有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®许可证才能生成代码。
在建模页签,单击模型设置.
选择代码生成面板,设置系统目标文件来
ert.tlc
.在报告窗格中,选择创建代码生成报告.
请注意
在代码的位置窗格中,如果
紧凑的
选项从文件的包装格式下拉列表,model_types.h
文件的内容不生成model_types.h
文件被移动到model.h
文件。选择代码生成面板,清楚忽略自定义存储类而且应用.
在您的模型中,右键单击包含变量选择的块(不同的子系统,变异来源,变体水槽,或变体模型块),并选择块的参数.
确保
表达式
(默认选项)变量控制方式参数。从变体激活时间列表中,选择
代码编译
.Simulink在更新图或模拟过程中分析所有的变量选择。该分析为所有的变体选择提供了代码生成准备的早期验证。
构建的模型。
相关的例子
更多关于
- 变量块的代码生成(嵌入式编码)
- 在生成代码中表示子系统和变量模型(嵌入式编码)
- 在生成的代码中表示变量源和接收器块(嵌入式编码)
- 模型AUTOSAR变体(AUTOSAR Blockset)
- 变体系统设计