Выберите составной метод сигнала, который удовлетворяет ваши требования моделирования. Для справочной информации о каждом методе смотрите Составные Методы Сигнала.
Используйте виртуальные шины, чтобы уменьшать помеху сигнала в блок-схеме. В целом использование виртуальной шины более просто и может быть более эффективным, чем использование невиртуальной шины. Однако некоторые функции моделирования требуют невиртуальных шин, таких как данные о шине, которые пересекают блок MATLAB function или контуры графика Stateflow®. Например, используйте виртуальную шину для сигналов шины что:
Имейте элементы шины, которые имеют различные частоты дискретизации
Перекрестные контуры модели - ссылки, если модель, на которую ссылаются, только использует несколько элементов шины.
По сравнению с невиртуальными шинами виртуальные шины уменьшают требования к памяти. Виртуальные шины не требуют отдельного непрерывного блока системы хранения. Во время симуляции виртуальные шины выполняются быстрее, потому что они не требуют копирования данных к и от того блока. Сгенерированный код также выполняется быстрее для виртуальных шин, чем для невиртуальных шин.
Используйте невиртуальные шины для:
Отобразите и регистрируйте сигналы шины с блоком Scope.
Создайте массив шин.
Имейте перекрестные контуры блока MATLAB function или диаграммы Stateflow данных о шине.
Интерфейс с внешним кодом через S-функцию.
Данные о шине пакета как структуры в сгенерированном коде C.
Сгенерированный код представляет невиртуальную шину как структуру. Структура может быть полезной для трассировки соответствия между моделью и кодом. Сгенерированный код для невиртуальных шин может привести к нескольким копиям некоторых сигналов шины. Для примера различия в сгенерированном коде для виртуальных и невиртуальных шин смотрите, Генерируют Код для Шин. Для дополнительных инструкций для генерации кода для невиртуальных шин смотрите, Организуют Данные в Структуры в Сгенерированном коде (Simulink Coder).
Все сигналы в невиртуальном входе шины к блоку должны использовать тот же шаг расчета, даже если элементы связанного объекта шины задают наследованные шаги расчета. Можно использовать блок Rate Transition, чтобы изменить шаг расчета отдельного сигнала, или всех сигналов в шине.
Для моделей, которые включают сигналы шины, состоявшие из многих элементов шины, которые питают подсистемы, рассмотрите использование В Элементе Шины и блоках Элемента Шины. Можно использовать эти блокировки порта элемента шины вместо Inport с блоками Селектора Шины для входных параметров и Выходной порт с блоками Создателя Шины для выходных параметров. Эти блокировки порта элемента шины:
Уменьшайте сложность сигнальной линии и помеху в блок-схеме.
Облегчите изменять интерфейс инкрементно.
Предоставьте доступ к элементу шины ближе на грани использования, избежав использования настройки блока Селектор и Goto Шины.
Например, вот модель, которая использует Inport, Селектор Шины, Создателя Шины и блоки Выходного порта.
Вот эквивалентная модель, которая использует блокировки порта элемента шины.
Рассмотрите использование портов элемента шины для моделей с сигналами шины, что вы ожидаете изменяться часто во время процесса разработки моделей.
Блокировки порта элемента шины имеют эти ограничения:
Выходная шина Элемента Шины является виртуальной шиной.
Проигнорированы объекты шины, сопоставленные с сигналами, используемыми с блокировками порта элемента шины.
Вы не можете задать базовые спецификации блока Inport или Outport, такие как размер слова.
Можно осуществить рефакторинг интерфейс подсистемы, который использует Inport, Селектор Шины, Создателя Шины и блоки Выходного порта, чтобы использовать В Элементе Шины и блоках Элемента Шины. Операции преобразования поддерживаются только, когда сигнальные линии или блоки не имеют никакой дополнительной спецификации. Можно использовать операции нажатия кнопки для:
Преобразуйте блоки Селектора Inport и Шины в подсистеме к В блоках Элемента Шины.
Преобразуйте блоки Создателя Выходного порта и Шины в подсистеме, чтобы Соединить шиной блоки Элемента.
Преобразуйте интерфейсы ввода или вывода подсистем, чтобы использовать блокировки порта элемента шины.
Для получения дополнительной информации смотрите, Упрощают Интерфейсы шины Подсистемы.
Объедините несколько невиртуальных шин в массив. Массив шин эквивалентен массиву структур в MATLAB®. Пример использования массива шин должен смоделировать многоканальную систему. Можно смоделировать все каналы с помощью того же объекта шины, несмотря на то, что каждый из каналов может иметь различное значение.
Каждый элемент в массиве шин должен быть невиртуальным и должен иметь тот же объект шины. Каждый объект шины имеет то же имя сигнала, иерархию, и приписывает для ее элементов шины. Массивы шин требуют использования объектов шины. Для получения дополнительной информации смотрите Шины Объединения в Массив Шин.
Чтобы объединить сигналы того же типа в вектор, можно использовать блок Mux. Мультиплексор является специальным видом (виртуального) вектора, состоящего из нескольких несмежных участков. Можно использовать мультиплексор где угодно, что вы могли использовать обычный (непрерывный) вектор. Например, можно выполнить вычисления на мультиплексоре. Вычисление влияет на каждое составляющее значение в мультиплексоре, как будто значения существовали в непрерывном векторе. Используя мультиплексор, чтобы выполнить вычисления на нескольких векторах избегает издержек копирования отдельных значений к непрерывному устройству хранения данных. Кроме того, можно использовать блок Mux, чтобы создать вектор вызовов функции.
Чтобы объединить вектор или матрицу, можно использовать блок Vector Concatenate или Matrix Concatenate. Эти блоки полезны для создания выходного сигнала, который непрерывен.
Если вы хотите основанный на индексе доступ, используйте блок Mux. Для основанного на имени доступа используйте шину.
Можно объединить вектор или матрицу при помощи блока Vector Concatenate или Matrix Concatenate. Эти блоки полезны для создания выходного сигнала, который непрерывен. Можно использовать эту конкатенацию в математических операциях. Для примеров использования этих блоков см. документацию блока Vector Concatenate и Matrix Concatenate.
Simulink.BlockDiagram.addBusToVector
| Simulink.Bus.cellToObject
| Simulink.Bus.createMATLABStruct
| Simulink.Bus.createObject
| Simulink.Bus.objectToCell
| Simulink.Bus.save