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

Инициализация шины является особой формой инициализации сигнала. Для получения общей информации об инициализации сигналов см. «Инициализация сигналов и дискретных состояний». Для получения дополнительной информации об инициализации массивов шин смотрите Initialize Arrays of Buses.

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

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

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

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

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

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

Блоки, которые Поддержка инициализацию шины

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

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

  • Поддерживает автобусы

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

  • Data Store Memory

  • IC

  • Memory

  • Merge

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

  • Receive

  • Rate Transition

  • Unit Delay

Для примера Unit Delay блок является блоком с поддержкой шины. Диалоговое окно Параметров блоков имеет параметр Initial conditions.

Вы не можете инициализировать шину, которая имеет:

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

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

Установите диагностику, чтобы поддержать инициализацию шины

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

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

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

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

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

Дополнительные сведения об определении структур MATLAB см. в разделе «Массивы структур».

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

  • Имя

  • Размерность

  • Сложность

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

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

Управляйте типами данных структурных полей

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

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

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

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

  • Генерирует более читаемый код

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

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

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

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

  • Массив указателей на порты

Вы можете вызвать функцию из редактора шин. Выберите Bus объект, для которого необходимо создать полную структуру MATLAB, а затем выбрать элемент меню File > Create a MATLAB structure.

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

  1. На вкладке Modeling нажмите Model Advisor.

  2. Нажмите OK.

  3. В разделе By Task > Modeling Signals and Parameters using Buses выберите Check structure parameter usage with bus signals.

  4. Нажмите кнопку Run This Check.

    Model Advisor идентифицирует частичные структуры начальных условий.

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

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

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

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

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

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

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

  • Сделать поле в структуре начальных условий соответствующим уровню вложенности элемента шины.

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

Примечание

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

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

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

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

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

The 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 является начальной структурой условия, заданной для начального значения блока Unit Delay. Структура начальных условий соответствует 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 является начальной структурой условия, заданной для начального значения блока Unit Delay. Структура начальных условий соответствует 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 не существует в шине).

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

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

Для примера диалоговое окно Параметров блоков для блока Unit Delay имеет параметр Initial conditions.

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

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

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

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

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

Структура 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:

См. также

Блоки

Функции

Объекты

Похожие темы