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

Инициализация шины сигнала является специальной формой инициализации сигнала. Для получения общей информации об инициализации сигналов, смотрите, Инициализируют Сигналы и Дискретные состояния. Для получения дополнительной информации об инициализации массивов шин, смотрите, Инициализируют Массивы Шин.

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

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

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

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

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

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

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

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

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

  • Шины поддержек

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

  • Data Store Memory

  • Memory

  • Merge

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

  • Rate Transition

  • Unit Delay

Например, блок Unit Delay является способным к шине блоком. Его диалоговое окно Block Parameters имеет параметр Initial conditions.

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

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

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

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

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

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

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

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

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

Для получения информации об определении структур MATLAB смотрите, Создают Массив структур (MATLAB).

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

  • Имя

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

  • Сложность

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

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

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

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

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

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

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

  • Генерирует больше читаемого кода

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

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

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

  • 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 инициализирует незаданные сигналы неявно.

Когда вы задаете частичную начальную структуру условия:

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

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

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

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

Примечание

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

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

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

  • B один сигнал.

  • C вложенная шина, которая включает, соединяют шиной A как вложенная шина.

ex_bus_initial_conditions модель включает вложенный Top шина. Это - то, как модель появляется после того, как она была обновлена.

Вот сводные данные 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 isreal.

K.C.C2 = 3

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

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

Вы не можете задать поля, которые не находятся в шине (X не существует в шине).

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

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

Например, диалоговое окно Block Parameters для блока Unit Delay имеет параметр Initial conditions.

Для блока, который поддерживает инициализацию шины, можно заменить значение по умолчанию 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:

Смотрите также

Блоки

Функции

Классы

Похожие темы