在不同的数据类型上下文重用参数数据
当你使用金宝appSimulink.Parameter
对象或一个数字MATLAB®变量设置两个或两个以上的参数值,如果块参数有不同的数据类型,您必须显式地指定数据类型的对象或变量。例如,您不能离开的数据类型默认值的参数对象,汽车
。
创建和配置示例模型
创建模型ex_paramdt_contexts
。
ex_paramdt_contexts
在建模选项卡上,单击模型数据编辑器。
在模型数据编辑器中,在港口/外港选项卡,使用数据类型列的数据类型三机一体
轮廓尺寸块单
的数据类型In2
块int8
。
在信号选项卡,设置数据类型获得块的输出继承:同样作为输入
。
在参数选项卡,获得增益模块的参数设置数据类型来继承:同样作为输入
。
为获得参数设置价值来myGainParam
。
此外,配置块,使用这些命令在命令提示符:
set_param (“ex_paramdt_contexts /三机一体”,“OutDataTypeStr”,“单一”)set_param (“ex_paramdt_contexts / In2”,“OutDataTypeStr”,“int8”)set_param (“ex_paramdt_contexts /增益-单”,“获得”,“myGainParam”,…“OutDataTypeStr”,继承:作为输入相同的,…“ParamDataTypeStr”,继承:作为输入相同的)set_param (“ex_paramdt_contexts /获得int8”,“获得”,“myGainParam”,…“OutDataTypeStr”,继承:作为输入相同的,…“ParamDataTypeStr”,继承:作为输入相同的)
在模型数据编辑器获得块参数,点击的细胞价值列。旁边myGainParam
,点击操作按钮(三个垂直点)和选择创建。
在创建新的数据对话框中,设置价值来金宝appSimulink.Parameter (3)
并点击创建。一个金宝appSimulink.Parameter
对象和值3
出现在模型空间。
在myGainParam属性对话框中,设置数据类型来int8
。
在代码生成
选项卡上,单击在编码器配置应用程序。
在代码映射编辑器中,设置的存储类myGainParam
来ExportedGlobal
。的存储类ExportedGlobal
,对象出现在生成的代码作为一个全局变量。
另外,对象创建和配置参数,使用这些命令在命令提示符:
多工作站系统= get_param (“ex_paramdt_contexts”,“modelworkspace”);mws.assignin (“myGainParam”,金宝appSimulink.Parameter (3));setVariablePart(多工作站系统,“myGainParam.DataType”,“int8”);厘米= coder.mapping.utils.create (“ex_paramdt_contexts”);setModelParameter(厘米,“myGainParam”,“StorageClass”,“ExportedGlobal”);
在这个模型中,您使用的参数对象myGainParam
设置两块参数值。块参数继承不同数据类型的块输入信号(单
或int8
)。使用myGainParam
在这些不同的数据类型上下文,您显式地指定参数的数据类型对象通过设置数据类型
财产int8
。
匹配参数对象数据类型和数据类型的信号
可选地,使用一个金宝appSimulink.NumericType
或金宝appSimulink.AliasType
对象设置参数对象数据类型和数据类型的一个信号。这种技术可以消除不必要的类型转换和生成的代码的变化由于参数不匹配对象数据类型和数据类型的信号。
在命令提示符处,创建一个金宝appSimulink.NumericType
对象来表示数据类型int8
。
sharedType_int8 = fixdt (“int8”);
在模型数据编辑器中,在港口/外港选项卡,设置的数据类型In2
轮廓尺寸块sharedType_int8
。
在参数选项卡中,更新框图。现在的数据表包含一个行,代表参数对象,myGainParam
。
使用数据类型列的数据类型参数设置对象sharedType_int8
。
另外,配置块和对象,使用这些命令在命令提示符:
myGainParam。数据类型=“sharedType_int8”;set_param (“ex_paramdt_contexts / In2”,“OutDataTypeStr”,“sharedType_int8”)
参数对象和信号使用的数据类型int8
。改变这种数据类型,调整数据类型的属性对象sharedType_int8
。
生成和检查代码
从模型中生成代码。
slbuild (“ex_paramdt_contexts”)
# # #开始构建过程:ex_paramdt_contexts # # #成功完成构建过程:ex_paramdt_contexts模型建立目标:总结构建模型重建行动的原因= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ex_paramdt_contexts代码生成和编译代码生成信息文件不存在。1 1模型的建立(0模型已经更新)构建持续时间:0 h 0米11.425秒
生成的文件ex_paramdt_contexts.c
定义全局变量myGainParam
通过使用数据类型int8_T
对应的数据类型int8
在仿真金宝app软件。
文件= fullfile (“ex_paramdt_contexts_grt_rtw”,“ex_paramdt_contexts.c”);rtwdemodbtype(文件,“/ *导出块参数* /”,“int8_T myGainParam = 3,“,1,1)
* / / *导出块参数int8_T myGainParam = 3;/ *变量:myGainParam
生成的代码的算法模型一步
函数使用myGainParam
计算两个增益模块的输出。对于输入信号的增益块使用的数据类型单
投,代码算法myGainParam
的数据类型real32_T
对应的数据类型单
在仿真金宝app软件。
rtwdemodbtype(文件,“/ *模型阶跃函数* /”,…“/ *模型初始化函数* /”,1,0)
/ *模型阶跃函数* /空白ex_paramdt_contexts_step (void){/ *外港:“< Root > /着干活”包含:*获得:“< Root > /增益——单身”*尺寸:“< Root > / In1”* / ex_paramdt_contexts_Y。着干活= (real32_T) myGainParam * ex_paramdt_contexts_U.In1;/ *输出港:“< Root > / Out2”包含:*获得:“< Root > /获得int8”*尺寸:“< Root > / In2”* / ex_paramdt_contexts_Y。Out2 = (int8_T) (myGainParam * ex_paramdt_contexts_U.In2);}