exponenta event banner

Задание начальных условий для элементов шины

Инициализация шины является особой формой инициализации сигнала. Общие сведения о инициализации сигналов см. в разделе Инициализация сигналов и дискретных состояний. Дополнительные сведения об инициализации массивов шин см. в разделе Инициализация массивов шин.

Инициализация шины задает значения элементов шины, которые Simulink ® использует для первого выполнения блока, использующего эту шину. По умолчанию начальное значение для элемента шины - это значение земли (представленное 0). Инициализация шины включает в себя указание ненулевых начальных условий.

Функции инициализации шины можно использовать для:

  • Укажите начальные условия для сигналов с различными типами данных.

  • Примените разные начальные условия для каждого элемента шины.

  • Задайте начальные условия для подмножества элементов в шине без указания начальных условий для всех элементов.

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

Блоки, поддерживающие инициализацию шины

Можно инициализировать значения шины, вводимые в блок, если этот блок удовлетворяет обоим условиям:

  • Имеет начальное значение или параметр блока начального условия

  • Поддерживает шины

Эти блоки поддерживают инициализацию шины:

  • Память хранилища данных

  • IC

  • Память

  • Слияние

  • Outport (если блок находится внутри условно выполняемого контекста)

  • Получить

  • Переход ставки

  • Единичная задержка

Например, блок единичной задержки является блоком с поддержкой шины. Его диалоговое окно «Параметры блока» имеет параметр «Начальные условия».

Невозможно инициализировать шину, имеющую:

  • Сигналы переменного размера

  • Сигналы на основе кадров

Настройка диагностики для поддержки инициализации шины

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

Создание структур начальных условий

Можно создать частичные или полные структуры начальных условий для представления начальных значений для шины. Для создания структуры начальных условий используйте один из следующих подходов:

  • Определите структуру MATLAB ® в рабочем пространстве модели MATLAB или Simulink. Структуру можно определить вручную или, в качестве альтернативы, для полных структур можно использовать Simulink.Bus.createMATLABstruct функция.

  • В диалоговом окне «Параметры блока» для блока, поддерживающего инициализацию шины, для параметра начального условия укажите выражение, которое вычисляется как структура.

Сведения об определении структур MATLAB см. в разделе Структурные массивы.

Поле, указанное в структуре начального условия, должно точно соответствовать этим атрибутам данных элемента шины:

  • Имя

  • Измерение

  • Сложность

Например, если элемент шины определен как вещественный двойной массив [2x2], то в начальной структуре условий определите значение, чтобы инициализировать этот элемент шины как действительный двойной массив [2x2].

Явно укажите поля в начальной структуре условий для каждого элемента шины, имеющего перечисленный элемент (enum) тип данных.

Типы управляющих данных полей структуры

Если какой-либо из элементов целевой шины использует тип данных, отличный от doubleдля управления типами данных полей начальных структур условий можно использовать различные методы. Выбранный метод может влиять на эффективность и удобочитаемость созданного кода. См. раздел Управляющие типы данных полей структуры начального условия.

Создание полных структур для инициализации

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

Определение полных структур во время создания кода обеспечивает следующие преимущества:

  • Создает более читаемый код

  • Поддерживает стиль моделирования, который явно инициализирует все сигналы

Используйте Simulink.Bus.createMATLABStruct для упрощения создания полной структуры начального условия MATLAB с той же иерархией, именами и атрибутами данных, что и шина. Эта функция заполняет все элементы, которые не указаны, значениями основания для этих элементов.

С функцией можно использовать несколько различных видов ввода, включая:

  • A Simulink.Bus имя объекта

  • Массив дескрипторов портов

Функцию можно вызвать из редактора шины. Выберите Bus объект, для которого требуется создать полную структуру MATLAB, а затем выберите пункт меню Файл > Создать структуру MATLAB.

Чтобы определить, когда параметры структуры не согласуются по форме (иерархии и именам) со связанной шиной, используйте Model Advisor.

  1. На вкладке Моделирование (Modeling) щелкните Помощник по модели (Model Advisor).

  2. Нажмите кнопку ОК.

  3. В разделе По задаче (By Task) > Моделирование сигналов и параметров с использованием шин (Modeling Signals and Parameters using Bus) выберите Проверить использование параметров структуры с сигналами шины (Check structure parameter usage with bus signals).

  4. Нажмите кнопку Выполнить эту проверку.

    Консультант по модели определяет частичные структуры начальных условий.

После создания структуры ее можно править в редакторе MATLAB.

Создание частичных структур для инициализации

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

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

При определении частичной структуры начального условия:

  • Включить только те поля, которые находятся в шине.

  • Опустите одно или несколько полей в шине.

  • Убедитесь, что поле в структуре исходного условия соответствует уровню вложенности элемента шины.

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

Примечание

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

Предположим, что у вас есть автобус, Top, состоящего из трех элементов: A, B, и C, с этими характеристиками:

  • A является вложенной шиной, с двумя сигнальными элементами.

  • B является единственным сигналом.

  • C - вложенная шина, включающая шину; A в виде вложенной шины.

ex_bus_initial_conditions модель включает в себя Top bus. Это то, как модель появляется после обновления.

Вот резюме Top иерархия шины и тип данных, измерение и сложность элементов шины.

Top
   A (sub1)
      A1 (double)
      A2 (int8, 5x1, complex)
   B (double)
   C (sub2)
      C1 (int16)
      C2 (sub1)  
         A1 (double)
         A2 (int8, 5x1, complex)

В этих примерах K - начальная структура условия, заданная для начального значения блока «Единичная задержка». Структура начального условия соответствует Top автобус в ex_bus_initial_conditions модель. Вот некоторые действительные исходные условия.

Допустимый синтаксисОписание
K.A.A1 = 3

Инициализация элемента шины Top.A.A1 используя значение 3.

K = struct('C',struct('C1',int16(4)))

Элемент шины Top.C.C1 является int16. Соответствующее поле структуры явно указывает int16(4). Можно также указать значение поля как 4 без указания явного типа данных.

K = struct('B',3,'A',struct('A1',4))

Элементы шины Top.B и Top.A находятся на одном уровне вложенности в шине. Для элементов шины на одном уровне вложенности порядок соответствующих полей структуры не имеет значения.

Недопустимые структуры частичного начального условия

В следующих примерах: K - начальная структура условия, заданная для начального значения блока «Единичная задержка». Структура начального условия соответствует Top автобус в ex_bus_initial_conditions модель.

Эти три исходных условия недействительны:

Недопустимый синтаксисПричина недопустимого синтаксиса
K.A.A2 = 3

Размерность и сложность значения не совпадают. Элемент шины Top.A.A2 является 5x1, но K.A.A2 является 1x1; Top.A.A2 является сложным, но K.A.A2 реально.

K.C.C2 = 3

Нельзя использовать скалярное значение для инициализации начальных подструктур условий.

K = struct('B',3,'X',4)

Нельзя указывать поля, отсутствующие в шине (X не существует в шине).

Инициализация шин с использованием параметров блока

Инициализируйте шину, задав параметр начального условия для блока, который принимает шину в качестве входных данных и поддерживает инициализацию шины (см. Блоки, поддерживающие инициализацию шины).

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

Для блока, поддерживающего инициализацию шины, можно заменить значение по умолчанию, равное 0 используя один из следующих подходов:

Все три подхода требуют определения структуры начального условия (см. Создание структур начального условия). Нельзя указать ненулевое скалярное значение или любой другой тип значения, кроме 0, структура начального условия или Simulink.Parameter объект для инициализации шины.

Определение структуры начального условия в качестве переменной MATLAB вместо указания структуры начального условия непосредственно в диалоговом окне Параметры блока (Block Parameters) дает несколько преимуществ, в том числе:

  • Повторное использование структуры начального условия для нескольких блоков

  • Использование структуры начального условия в качестве настраиваемого параметра в создаваемом коде

Структура MATLAB для инициализации

Можно инициализировать шину с помощью структуры MATLAB, которая явно определяет начальные условия для шины.

Например, в параметре Initial conditions блока Unit Delay можно ввести структуру.

Переменная MATLAB для инициализации

Можно инициализировать шину с помощью переменной MATLAB, которая определяется как начальная структура условий с соответствующими значениями.

Например, в базовой рабочей области можно определить следующую частичную структуру:

K = struct('A', struct('A1', 3), 'B', 4);

Затем можно указать K структура в качестве параметра Initial conditions блока Unit Delay:

Simulink.Parameter Объект для инициализации

Можно инициализировать шину с помощью Simulink.Parameter объект, который использует начальную структуру условия для Value собственность.

Например, можно определить частичную структуру. P в базовом рабочем пространстве (отражающем ex_bus_initial_conditions модель, рассмотренная в предыдущем разделе):

P = Simulink.Parameter;
P.DataType = 'Bus: Top';
P.Value = Simulink.Bus.createMATLABStruct('Top');
P.Value.A.A1 = 3;
P.Value.B = 5; 

Затем можно указать P структура в качестве параметра Initial conditions блока Unit Delay:

См. также

Блоки

Функции

Объекты

Связанные темы