Наблюдайте удар параметров Simulink Используя нож модели

Используйте Нож Модели, чтобы наблюдать влияние, которое параметр оказывает на модель.

Этот пример демонстрирует способность Ножа Модели отобразить параметры, которые влияют на блок (Опция 1) и блоки, которые затронуты параметром (Опция 2) с помощью методов SLSlicerAPI.ParameterDependence класс parametersAffectingBlock, и blocksAffectedByParameter repectively.

Открытая модель и инициализирует класс ParameterDependence

1. Откройте модель sldvSliceCruiseControl.

model = 'sldvSliceCruiseControl';
open_system(model);

2. Создайте объект ParameterDependence Класс.

slicerObj = slslicer(model);
pd = slicerObj.parameterDependence;

Опция 1: найдите параметры, влияющие на блок

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'}

Опция 2: получите блоки, затронутые параметром

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;