exponenta event banner

Моделирование нескольких экземпляров ссылочной модели в обычном режиме

Видимость в обычном режиме

Все экземпляры ссылочной модели нормального режима являются частью моделирования. Однако программа Simulink ® отображает только один экземпляр в окне модели. Видимость в обычном режиме включает отображение блоков области и значений портов данных.

Чтобы задать видимость нормального режима, в верхней части модели на вкладке Моделирование (Simulation) в разделе Подготовка (Prepare) в разделе Мониторинг сигналов (Signal Monitoring) выберите Видимость нормального режима (Normal Mode Visibility). Этот параметр определяет экземпляр, отображаемый программой Simulink. Если видимость в обычном режиме для конкретного экземпляра ссылочной модели не задана, программа Simulink выбирает один экземпляр ссылочной модели для отображения.

После моделирования при попытке открыть ссылочную модель из блока модели, для которого отсутствует видимость в обычном режиме, программа Simulink выводит предупреждение.

Чтобы настроить модель для управления тем, какой экземпляр ссылочной модели в обычном режиме имеет видимость, и для обеспечения правильного моделирования модели, см. раздел Указание экземпляра, имеющего видимость в нормальном режиме.

Проверка моделей с несколькими ссылочными экземплярами модели

sldemo_mdlref_basic имеет три блока модели (CounterA, CounterB, и CounterC), что каждый ссылается на sldemo_mdlref_counter модель. При обновлении схемы sldemo_mdlref_basic отображает различные значки для каждого из трех блоков модели.

Блок моделиУглы значкаРежим моделирования и настройка видимости в обычном режиме
CounterAБелый Обычный режим с включенной видимостью в обычном режиме
CounterBСерые углыОбычный режим с отключенной видимостью в обычном режиме
CounterCЧёрный уголРежим ускорителя (видимость в обычном режиме не применяется)

Открытие и моделирование sldemo_mdlref_basic. Дважды щелкните блок CounterA Model и откройте блок ScopeA.

Этот блок ScopeA отражает результаты моделирования блока CounterA Model, для которого включена видимость в обычном режиме.

При попытке открытия sldemo_mdlref_counter путем двойного щелчка на блоке CounterB Model, ScopeA в sldemo_mdlref_counter по-прежнему показывает результаты блока CounterA Model, поскольку для этого блока включена видимость в обычном режиме.

Для получения дополнительной информации о sldemo_mdlref_basicсм. раздел Моделирование на основе компонентов с привязкой к модели.

Пример использования анализатора зависимостей для иерархии моделей, содержащей несколько экземпляров ссылочной модели в обычном режиме, см. в разделе Визуализация ссылочных архитектур моделей.

Настройка моделей с несколькими экземплярами ссылочной модели

  1. Задайте для параметра Общее число экземпляров, разрешенных для верхнего уровня модели, значение Multiple.

  2. Установите каждый экземпляр ссылочной модели таким образом, чтобы он использовал обычный режим. В диалоговом окне параметров блока модели, который ссылается на экземпляр, задайте для параметра «Режим моделирования» значение Normal. Убедитесь, что все предки в иерархии этого блока модели находятся в обычном режиме.

    Углы значков блоков модели, находящихся в обычном режиме, могут быть белыми (пустыми). После обновления диаграммы или моделирования модели углы становятся серыми.

  3. При необходимости измените S-функции, используемые моделью, так, чтобы они работали с несколькими экземплярами ссылочных моделей в обычном режиме. Дополнительные сведения см. в разделе Поддержка использования нескольких экземпляров ссылочных моделей в обычном режиме.

По умолчанию Simulink назначает видимость в обычном режиме одному из экземпляров. После выполнения шагов настройки можно указать экземпляр, не являющийся экземпляром по умолчанию, который будет иметь видимость в обычном режиме.

Дополнительные сведения о инкапсуляции многократно используемого алгоритма в ссылочную модель см. в разделе Повторное использование модели.

Определение того, какой экземпляр имеет видимость в обычном режиме

Чтобы определить, какой экземпляр в настоящее время имеет видимость в обычном режиме:

  1. Чтобы применить настройку видимости нормального режима, обновите схему и не вносите никаких других изменений в модель.

  2. Проверьте блоки модели, которые ссылаются на интересующую модель. Блок модели с белыми углами, для которого включена видимость в обычном режиме, перемещается по иерархии модели.

При редактировании модели или во время компиляции после обновления диаграммы используйте ModelReferenceNormalModeVisibilityBlockPath параметр. Результатом является Simulink.BlockPath объект, представляющий собой путь к блоку модели, который ссылается на модель, для которой включена видимость в обычном режиме. Например:

get_param('sldemo_mdlref_basic',...
 'ModelReferenceNormalModeVisibilityBlockPath')
ans =

   Simulink.BlockPath
   Package: Simulink

   Block Path:
      'sldemo_mdlref_basic/CounterA'

Для модели верхнего уровня, которую вы моделируете или которая находится в скомпилированном состоянии, можно использовать CompiledModelBlockInstancesBlockPath параметр. Например:

a = get_param('sldemo_mdlref_depgraph',...
 'CompiledModelBlockInstancesBlockPath')
a = 

         sldemo_mdlref_F2C: [1x1 Simulink.BlockPath]
      sldemo_mdlref_heater: [1x1 Simulink.BlockPath]
sldemo_mdlref_outdoor_temp: [1x1 Simulink.BlockPath]

При создании Simulink.BlockPath объект для задания видимости нормального режима:

  • Первый символьный вектор должен представлять блок, который находится в верхней модели ссылочной иерархии модели.

  • Векторы символов должны представлять блоки модели, находящиеся в обычном режиме.

  • Символьные векторы, представляющие вариационные модели или вариационные подсистемы, должны ссылаться на активный вариант.

Укажите экземпляр, имеющий видимость в обычном режиме

Примечание

Невозможно изменить видимость нормального режима во время моделирования.

Чтобы включить видимость нормального режима для экземпляра ссылочной модели, отличного от экземпляра, который в настоящее время имеет видимость нормального режима, выполните следующие действия.

  1. Перейдите к верхней модели.

  2. На вкладке Моделирование (Simulation) в разделе Подготовка (Prepare) в разделе Мониторинг сигналов (Signal Monitoring) выберите Видимость в нормальном режиме (Normal Mode Visibility).

    Откроется диалоговое окно Видимость нормального режима блока модели (Model Block Normal Mode Visibility). Например, вот диалоговое окно для sldemo_mdlref_basic модель с развернутой областью иерархии:

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

    В диалоговом окне отображается полная иерархия модели для модели верхнего уровня. Экземпляры нормального режима ссылочных моделей имеют флажки.

    Совет

    Чтобы панель иерархии модели диалогового окна Видимость нормального режима блока модели (Model Block Normal Mode Visibility) отражала текущую иерархию модели, нажмите кнопку Обновить (Refresh).

  3. Выберите экземпляр модели, который должен иметь видимость в обычном режиме.

    Simulink выбирает всех предков модели и очищает все остальные экземпляры этой модели. Когда модель очищена, Simulink очищает все дочерние элементы этой модели.

    Совет

    Чтобы открыть модель в диалоговом окне Видимость нормального режима блока модели (Model Block Normal Mode Visibility), щелкните модель правой кнопкой мыши на панели иерархии модели и выберите команду Открыть (Open).

  4. Чтобы применить настройку видимости нормального режима, смоделируйте модель верхнего уровня в иерархии модели.

В качестве альтернативы использованию диалогового окна Видимость нормального режима блока модели (Model Block Normal Mode Visibility) в командной строке MATLAB ® можно использовать командуModelBlockNormalModeVisibility параметр. Для ввода можно указать одно из следующих значений:

  • Массив Simulink.BlockPath объекты. Например:

    bp1 = Simulink.BlockPath({'mVisibility_top/Model',  ...
    'mVisibility_mid_A/Model'});
    bp2 = Simulink.BlockPath({'mVisibility_top/Model1', ...
    'mVisibility_mid_B/Model1'});
     bps = [bp1, bp2];
     set_param(topMdl,'ModelBlockNormalModeVisibility',bps);
    
  • Клеточный массив клеточных массивов символьных векторов, причем символьные векторы являются путями к отдельным блокам и моделям. Этот пример дает тот же эффект, что и пример массива объектов:

    p1 = {'mVisibility_top/Model','mVisibility_mid_A/Model'};
    p2 = {'mVisibility_top/Model1','mVisibility_mid_B/Model1'};
    set_param(topMdl,'ModelBlockNormalModeVisibility',{p1, p2});
    
  • Пустой массив, чтобы задать использование выбора Simulink по умолчанию для экземпляра с видимостью в обычном режиме. Например:

    set_param(topMdl, 'ModelBlockNormalModeVisibility', []);

    Использование пустого массива эквивалентно снятию всех флажков в диалоговом окне Видимость нормального режима блока модели (Model Block Normal Mode Visibility).

Связанные примеры

Подробнее