使用模型切片器观察 Simulink 参数的影响
使用模型切片器来观察某个参数对模型的影响。
此示例演示了模型切片器的以下功能:显示影响某个模块的参数(选项 1);显示受某个参数影响的模块(选项 2)。这些功能分别通过 SLSlicerAPI.ParameterDependence 类中的 parametersAffectingBlock 和 blocksAffectedByParameter 方法实现。
打开模型并初始化 ParameterDependence 类
1.打开模型 sldvSliceCruiseControl。
model = 'sldvSliceCruiseControl';
open_system(model);2.创建 ParameterDependence 类的对象。
slicerObj = slslicer(model); pd = slicerObj.parameterDependence;
选项 1:查找影响某个模块的参数
1.通过输入以下命令查看影响 DriverSwRequest 子系统中的 Switch3 模块的参数:
params = parametersAffectingBlock(pd, 'sldvSliceCruiseControl/DriverSwRequest/Switch3')params=1×49 VariableUsage array with properties:
Name
Source
SourceType
Users
可以看到,共有 49 个参数会影响 Switch3 模块。要查看各个参数的详细信息,请浏览数组中的每个元素:
params(1)
ans =
VariableUsage with properties:
Name: 'CountValue'
Source: 'sldvSliceCruiseControl/DriverSwRequest/decrement/counter'
SourceType: 'mask workspace'
Users: {'sldvSliceCruiseControl/DriverSwRequest/decrement/counter/Constant'}
选项 2:查找受某个参数影响的模块
1.要观察某个参数的影响,请为该参数创建一个 Simulink.VariableUsage 对象。
param = Simulink.VariableUsage('CountValue','sldvSliceCruiseControl/DriverSwRequest/decrement/counter');
2.查看受 param 影响的所有模块:
affectedBlocks = blocksAffectedByParameter(pd, param)
affectedBlocks = 1×153
103 ×
0.1770 0.3190 0.3240 0.3870 0.3910 0.3950 0.4090 0.4560 0.4610 0.4660 0.4710 0.4920 0.4960 0.5000 0.5040 0.5340 0.5390 0.5440 0.5490 0.5540 0.5700 0.5840 0.5930 0.6130 0.6200 0.6360 0.6400 0.6440 0.6480 0.6520 0.6560 0.6930 0.7070 0.7250 0.7290 0.7670 0.7790 0.7830 0.7930 0.7970 0.8010 0.8270 0.8350 0.8390 0.8810 0.8930 0.9010 0.9190 0.9230 0.9270
您可以使用 find_system 支持的相同选项进一步优化受影响的模块。
affectedOutports = blocksAffectedByParameter(pd, param, 'blockType', 'Outport')
affectedOutports = 1×5
103 ×
2.0640 2.0620 2.0660 2.0680 2.0700
可选步骤:使用模型切片器在模型上突出显示结果
您可以使用模型切片器的突出显示功能查看被分析模型的活动部分。
slicerObj.highlight(slicerObj.ActiveConfig);
清理
模型切片器在分析后会使模型保持处于已编译状态。要关闭模型,请终止 slicerObj 对象。
slicerObj.terminate;