Инициализация шины сигнала является специальной формой инициализации сигнала. Для получения общей информации об инициализации сигналов, смотрите, Инициализируют Сигналы и Дискретные состояния. Для получения дополнительной информации об инициализации массивов шин, смотрите, Инициализируют Массивы Шин.
Инициализация шины сигнала задает значения элемента шины, которые 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 с той же иерархией, именами и атрибутами данных как сигнал шины. Эта функция заполняет все элементы, которые вы не указываете с наземными значениями для тех элементов.
Можно использовать несколько различных видов входа с функцией, включая:
Имя объекта шины
Массив указателей порта
Можно вызвать функцию из Редактора Шины. Выберите объект шины, для которого вы хотите создать полную структуру 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 инициализирует незаданные сигналы неявно.
Когда вы задаете частичную начальную структуру условия:
Включайте только поля, которые находятся в шине.
Не используйте одно или несколько полей, которые находятся в шине.
Заставьте поле в начальной структуре условия соответствовать уровню вложенности элемента шины.
На том же уровне вложенности и в структуре и в шине, опционально задайте поля структуры в различном порядке, чем элементы шины.
Значение начальной структуры условия должно лечь в минимуме проекта и максимальной области значений соответствующего элемента шины. Simulink выполняет эту проверку диапазона, когда вы делаете схему обновления или симулируете модель.
Предположим, что у вас есть шина, Top
, состоявший из трех элементов: A
B
, и 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 |
Инициализируйте элемент шины |
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) | Вы не можете задать поля, которые не находятся в шине ( |
Инициализируйте сигнал шины путем установки начального параметра условия для блока, который получает сигнал шины, как введено, и это поддерживает инициализацию шины (см. Блоки Что Инициализация Сигнала Шины Поддержки).
Например, диалоговое окно Block Parameters для блока Unit Delay имеет параметр Initial conditions.
Для блока, который поддерживает инициализацию сигнала шины, можно заменить значение по умолчанию 0
использование одного из этих подходов:
Все три подхода требуют, чтобы вы задали начальную структуру условия (см., Создают Начальные Структуры Условия). Вы не можете задать ненулевое скалярное значение или любой другой тип значения кроме 0
, начальная структура условия или Simulink.Parameter
объект инициализировать сигнал шины.
При определении начальной структуры условия, когда переменная MATLAB, вместо того, чтобы задать начальную структуру условия непосредственно в диалоговом окне Block Parameters предлагает несколько преимуществ, включая:
Повторное использование начальной структуры условия для нескольких блоков
Используя начальную структуру условия как настраиваемый параметр в сгенерированном коде
Можно инициализировать сигнал шины использование структуры 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