Инициализация шины является особой формой инициализации сигнала. Для получения общей информации об инициализации сигналов см. «Инициализация сигналов и дискретных состояний». Для получения дополнительной информации об инициализации массивов шин смотрите 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.
На вкладке Modeling нажмите Model Advisor.
Нажмите OK.
В разделе By Task > Modeling Signals and Parameters using Buses выберите Check structure parameter usage with bus signals.
Нажмите кнопку 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 | Инициализируйте элемент шины |
K = struct('C',struct('C1',int16(4))) | Элемент шины |
K = struct('B',3,'A',struct('A1',4)) | Элементы шины |
В следующих примерах K
является начальной структурой условия, заданной для начального значения блока Unit Delay. Структура начальных условий соответствует Top
шина в ex_bus_initial_conditions
модель.
Эти три начальных спецификации условия не действительны:
Недопустимый синтаксис | Причина недействительности синтаксиса |
---|---|
K.A.A2 = 3 | Размерность и сложность значения не совпадают. Элемент шины |
K.C.C2 = 3 | Вы не можете использовать скалярное значение для инициализации начальных подструктур условий. |
K = struct('B',3,'X',4) | Вы не можете задать поля, которые не находятся в шине ( |
Инициализируйте шину, задав начальный параметр условия для блока, который получает шину в качестве входных данных и который поддерживает инициализацию шины (см. «Блоки, которые поддерживают инициализацию шины»).
Для примера диалоговое окно Параметров блоков для блока Unit Delay имеет параметр Initial conditions.
Для блока, который поддерживает инициализацию шины, можно заменить значение по умолчанию 0
используя один из следующих подходов:
Все три подхода требуют определения начальной структуры условий (см. Создание начальных структур условий). Вы не можете задать ненулевое скалярное значение или любой другой тип значения, кроме 0
, структуру начальных условий или Simulink.Parameter
объект для инициализации шины.
Определение начальной структуры условия как Переменный MATLAB, а не определение начальной структуры условия непосредственно в диалоговом окне Параметров блоков предлагает несколько преимуществ, включая:
Повторное использование структуры начальных условий для нескольких блоков
Использование начальной структуры условия в качестве настраиваемого параметра в сгенерированном коде
Можно инициализировать шину с помощью структуры MATLAB, которая явно определяет начальные условия для шины.
Для примера в Initial conditions параметре блока Unit Delay можно ввести структуру.
Можно инициализировать шину с помощью переменного 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:
Simulink.BlockDiagram.addBusToVector
| Simulink.Bus.cellToObject
| Simulink.Bus.createMATLABStruct
| Simulink.Bus.createObject
| Simulink.Bus.objectToCell
| Simulink.Bus.save