В модели вы используете сигналы шины группировать несколько сигналов вместе в одну сигнальную линию. Можно создать виртуальные или невиртуальные сигналы шины. Представление в сгенерированном коде зависит от:
Для виртуальной шины появляется сгенерированный код, как будто шина не существовала.
Сгенерированный код для невиртуальной шины представляет данные о шине со структурой. Когда это необходимо, чтобы проследить соответствие между моделью и кодом, использование структуры в сгенерированном коде может быть полезным. Чтобы сгенерировать структуры с помощью невиртуальных сигналов шины, смотрите, Организуют Данные в Структуры в Сгенерированном коде.
Для получения общей информации о шинах, смотрите и Виртуальные и Невиртуальные Шины (Simulink).
Чтобы сгенерировать эффективный код из моделей, которые содержат сигналы шины, устраните ненужные копии данных путем применения лучшых методов, когда вы создаете модель.
Когда вы используете шины в модели, для которой вы намереваетесь сгенерировать код:
Установка параметров конфигурации диагностики шины может сделать разработку моделей легче.
Методы реализации шины и выбор невиртуальной или виртуальной шины, могут влиять на скорость, размер и ясность сгенерированного кода.
Некоторые полезные методы реализации шины не сразу очевидны.
Когда вы работаете с шинами, эти инструкции помогают вам улучшить результаты. Инструкции описывают методы к:
Упростите размещение модели.
Увеличьте эффективность сгенерированного кода.
Задайте структуры данных для функции (подсистема) интерфейсы.
Задайте структуры данных, которые совпадают с существующими структурами данных во внешнем коде С.
Существуют некоторые компромиссы среди скорости, размера и ясности. Например, код для невиртуальных шин легче считать, потому что шины появляются в коде как структуры, но код для виртуальных шин быстрее, потому что виртуальные шины не требуют копирования данных сигнала. Примените некоторые инструкции на основе того, где вы находитесь в процессе разработки приложений.
Simulink® обеспечивает диагностику, которую можно использовать, чтобы оптимизировать использование шины. Установите следующие значения на Configuration Parameters > Diagnostics> панель Connectivity.
Виртуальные шины являются графическими удобствами, которые не влияют на сгенерированный код. В результате механизм генерации кода может полностью оптимизировать сигналы в шине. Используйте виртуальные шины, а не невиртуальные шины по мере возможности. Можно преобразовать между виртуальными и невиртуальными шинами при помощи блоков Преобразования Сигнала. В некоторых случаях Simulink автоматически преобразовывает виртуальную шину в невиртуальную шину при необходимости. Например, диаграмма Stateflow преобразовывает вход виртуальная шина в невиртуальную шину.
Чтобы связать сигналы вызова функции, необходимо использовать виртуальную шину.
Необходимо использовать невиртуальные шины для:
Неавтоматические классы памяти
Генерация определенной структуры от шины
Inport корневого уровня или Выходной порт блокируются, когда шина смешала типы данных
Шины могут содержать зависимые шины. Чтобы сгенерировать эффективный код, установите классы памяти зависимых шин к Auto
. Установка класса памяти к Auto
устраняет:
Выделение избыточной памяти для зависимой шины сигнализирует и для родительского сигнала шины
Дополнительные операции копии (копирование данных к зависимой шине и затем копирования с зависимой шины на итоговую шину)
Эта модель содержит невиртуальные сигналы шины. Зависимая шина сигнализирует, что Sub_Bus_1
и Sub_Bus_2
используют класс памяти Auto
.
Алгоритм сгенерированного кода эффективно присваивает данные о входном сигнале сигналам шины.
void ex_nonvirtual_buses_step(void) { Nonvirtual_In_One.SimpleBus_1.A1 = A1; Nonvirtual_In_One.SimpleBus_1.A2 = A2; Nonvirtual_In_One.SimpleBus_2.A3 = A3; Nonvirtual_In_One.SimpleBus_2.A4 = A4; Nonvirtual_In_One.A5 = A5; }