Используйте Нож Модели, чтобы наблюдать влияние, которое параметр оказывает на модель.
Этот пример демонстрирует способность Ножа Модели отобразить параметры, которые влияют на блок (Опция 1) и блоки, которые затронуты параметром (Опция 2) с помощью методов SLSlicerAPI.ParameterDependence
класс parametersAffectingBlock
, и blocksAffectedByParameter
repectively.
1. Откройте модель sldvSliceCruiseControl
.
model = 'sldvSliceCruiseControl';
open_system(model);
2. Создайте объект ParameterDependence
Класс.
slicerObj = slslicer(model); pd = slicerObj.parameterDependence;
1. Просмотрите параметры, которые влияют на Switch3
блокируйтесь в DriverSwRequest
подсистема путем ввода:
params = parametersAffectingBlock(pd, 'sldvSliceCruiseControl/DriverSwRequest/Switch3')
params=1×49 object
1x49 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'}
1. Чтобы наблюдать удар параметра, создайте Simulink.VariableUsage
объект для того параметра.
param = Simulink.VariableUsage('CountValue','sldvSliceCruiseControl/DriverSwRequest/decrement/counter');
2. Просмотреть все блоки, затронутые param
:
affectedBlocks = blocksAffectedByParameter(pd, param)
affectedBlocks = 1×158
103 ×
0.0130 0.0200 0.0210 0.0510 0.0520 0.0530 0.0630 0.0840 0.0850 0.0860 0.0870 0.0960 0.0970 0.0980 0.0990 0.1250 0.1260 0.1270 0.1280 0.1290 0.1340 0.1380 0.1410 0.1520 0.1530 0.1600 0.1610 0.1620 0.1630 0.1640 0.1650 0.1940 0.2010 0.2100 0.2110 0.2390 0.2430 0.2440 0.2480 0.2490 0.2500 0.2670 0.2700 0.2710 0.2980 0.3020 0.3030 0.3110 0.3120 0.3130
Можно далее совершенствовать затронутое использование блоков тех же опций, поддержанных find_system
.
affectedOutports = blocksAffectedByParameter(pd, param, 'blockType', 'Outport')
affectedOutports = 1×5
948.0001 947.0001 949.0001 950.0001 951.0001
Можно просмотреть активный раздел анализируемой модели при помощи выделения Ножа Модели.
slicerObj.highlight(slicerObj.ActiveConfig);
Нож модели обеспечивает модель в скомпилированном состоянии после анализа. Чтобы закрыть модель, отключите slicerObj
объект.
slicerObj.terminate;