Повторно используйте функции при помощи атомарных коробок

atomic box является графическим объектом, который помогает вам инкапсулировать графическую, таблицу истинности, MATLAB®, и Simulink® функционирует в отдельном пространстве имен. Атомарные коробки поддерживаются только в Stateflow® графики в моделях Simulink. Атомарные коробки позволяют:

  • Более быстрая симуляция после внесения небольших изменений в функцию на графике со многими состояниями или уровнями иерархии

  • Повторное использование тех же функций на нескольких графиках и моделях

  • Простота развития команды для людей, работающих на разных частях одного графика

  • Ручной контроль сгенерированного кода для определенной функции на графике

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

Пример атомарного ящика

В этом примере показано, как использовать связанный атомарный прямоугольник для повторного использования графической функции на нескольких графиках и моделях.

Функция GetTime определяется на графике в модели библиотеки sf_timer_utils_lib. Графическая функция возвращает время симуляции в графики, где эквивалентная функция MATLAB ® getSimulationTime недоступен.

Модель sf_timer_function_calls состоит из двух графиков с подобной структурой. Каждый график содержит пару состояний (A и B) и атомарную коробку (Time), связанная с библиотечным графиком. Действие входа в состояние A вызывает функцию GetTime и сохраняет своё значение как t0. Условие, охраняющее переход от A на B снова вызывает функцию и сравнивает ее выход с параметром T.

Модель верхнего уровня sf_timer_modelref повторно использует функцию таймера в нескольких ссылочных блоках. Поскольку экспортированных функций нет, можно использовать несколько образцы ссылочного блока в верхней модели.

Преимущества использования атомарных коробок

Атомарные коробки объединяют функциональность нормальных коробок и атомарных подхем. Атомные коробки:

  • Улучшите организацию и четкость сложных графиков.

  • Поддержка использования в качестве библиотечных ссылок.

  • Поддержка генерации переиспользуемого кода.

  • Разрешить отображать входы, выходы, параметры, память хранилища данных и входные события.

Атомарные коробки содержат только функции. Они не могут содержать состояния. Добавление состояния в атомарный прямоугольник приводит к ошибке времени компиляции.

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

atomic_box_name.function_name
Использование полного пути для вызова функции:

  • Устанавливает зависимость от функции в связанном атомарном поле.

  • Избегает загрязнения глобального пространства имен.

  • Не влияет на эффективность сгенерированного кода.

Создайте атомарную коробку

Можно создать атомарный прямоугольник путем преобразования существующего прямоугольника или путем связывания графика из библиотечной модели. После создания атомарного поля обновите отображение переменных, щелкнув правой кнопкой мыши по атомарному полю и выбрав Субдиаграммы (Отображения). Для получения дополнительной информации смотрите Map Переменных для Atomic Субдиаграмм и Boxes.

Преобразуйте нормальный ящик в атомарный ящик

Чтобы создать контейнер для ваших функций, который позволяет ускорить рабочие процессы отладки и генерации кода, преобразуйте существующее окно в атомарное окно. На графике щелкните правой кнопкой мыши нормальный прямоугольник и выберите Group & Subchart > Atomic Subchart. Метка Atomic появится в левом верхнем углу рамки.

Процесс преобразования дает атомарному кубу свою собственную копию каждого объекта данных, к которому обращается коробка на графике. Локальные данные копируются как память хранилища данных. Возможности других данных, включая входные и выходные данные, не меняется.

Примечание

Если поле содержит какие-либо состояния или сообщения, вы не можете преобразовать его в атомарный блок.

Связать атомарный ящик из библиотеки

Чтобы создать набор функций для повторного использования между несколькими графиками и моделями, создайте ссылку из библиотечной модели. Скопируйте график в модель библиотеки и вставьте ее на график в другой модели. Если график библиотеки содержит только функции и не содержит состояний, он появляется как связанный атомарный прямоугольник с Ссылкой метки в левом верхнем углу.

Этот метод моделирования минимизирует поддержание переиспользуемых функций. При изменении атомарного поля в библиотеке изменения распространяются на ссылки во всех графиках и моделях.

Если библиотечный график содержит какие-либо состояния, то он появляется как связанная атомарная субдиаграмма в график. Для получения дополнительной информации смотрите Создание переиспользуемых подкомпонентов при помощи атомарных субдиаграмм.

Преобразуйте атомарный ящик в нормальный ящик

Преобразование атомарного прямоугольника назад в нормальный прямоугольник удаляет все его переменные отображения путем слияния родительских объектов данных подграфика с родительскими данными диаграммы, с которыми они сопоставлены.

  1. Если атомарный ящик является библиотечной ссылкой, щелкните правой кнопкой мыши атомарный ящик и выберите Library Link > Disable Link.

  2. Чтобы преобразовать атомарный прямоугольник в блок-график, щелкните атомный прямоугольник правой кнопкой мыши и снимите флажок Group & Subchart > Atomic Subchart.

  3. Чтобы преобразовать вложенный график в обычный, щелкните правой кнопкой мыши субдиаграмма и снимите флажок Group & Subchart > Subchart.

  4. При необходимости переставьте графические объекты на графике.

Вы не можете преобразовать атомарную коробку в нормальную, если:

  • Атомарный прямоугольник преобразует параметр в выражение, отличное от одинарного имени переменной. Для примера сопоставление параметра data1 одно из этих выражений препятствует преобразованию атомарного ящика в обычный ящик:

    • 3

    • data2(3)

    • data2 + 3

  • Оба эти условия верны:

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

    • Атомарный прямоугольник не сопоставляет каждую переменную с переменной с таким же именем на основном графике.

Когда использовать Атомарные Коробки

Инкрементальная отладка функций

Предположим, что вы хотите протестировать последовательность изменений в библиотеке функций. Функции являются частью графика, которая содержит много состояний или нескольких уровней иерархии, поэтому перекомпиляция всего графика может занять много времени. Если вы задаете функции в атомарном поле, перекомпиляция происходит только для прямоугольника, а не для всего графика. Для получения дополнительной информации смотрите Сокращение времени компиляции графика.

Функции повторного использования

Предположим, что у вас есть набор функций для использования в нескольких графиках и моделях. Функции находятся в библиотечной модели, чтобы облегчить управление строения. Чтобы использовать функции в другой модели, можно либо:

  • Сконфигурируйте график библиотеки, чтобы экспорты функций и создать ссылку на график библиотеки в модели.

  • Связать график библиотеки как атомарный прямоугольник в каждом графике модели.

Модели, которые используют эти функции, могут появиться в качестве ссылочных блоков в верхней модели. Когда функции экспортируются, можно использовать только один образец этого ссылочного блока для каждой верхней части. Для получения дополнительной информации смотрите Модель-ссылку требования и ограничения (Simulink).

С атомарными коробками можно избежать этого ограничения. Поскольку в графики нет экспортированных функций, можно использовать несколько образец ссылочных блоков в модели верхней части.

Разрабатывайте графики, используемые несколькими людьми

Предположим, что несколько людей работают с различными частями графика. Если вы храните каждую библиотеку функций в связанном атомарном ящике, различные люди могут работать с различными библиотеками, не затрагивая другие части графика. Для получения дополнительной информации см. раздел «Разделение графика на отдельные модули».

Смотрите сгенерированный код

Предположим, что вы хотите просмотреть код, сгенерированный Simulink Coder™ или Embedded Coder® вручную для определенной функции. Можно указать, что код для атомарного ящика появляется в отдельном файле, чтобы избежать поиска через несвязанный код. Для получения дополнительной информации смотрите Сгенерировать код из атомарных субдиаграмм.

Похожие темы