Функции повторного использования при помощи атомарных полей

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

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

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

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

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

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

Пример атомарного поля

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Создайте атомарное поле

Можно создать атомарное поле путем преобразования существующего поля или путем соединения графика из модели библиотеки. После создания атомарного поля обновите отображение переменных путем щелчка правой кнопкой по атомарному полю и выбора Subchart Mappings. Для получения дополнительной информации смотрите Переменные Карты для Атомарных Субдиаграмм и Полей.

Преобразуйте нормальное поле в атомарное поле

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

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

Примечание

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

Соедините атомарное поле от библиотеки

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

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

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

Преобразуйте атомарное поле в нормальное поле

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

  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® вручную для определенной функции. Можно указать, что код для атомарного поля, кажется, в отдельном файле старается не перерывать несвязанный код. Для получения дополнительной информации смотрите, Генерируют Код от Атомарных Субдиаграмм.

Похожие темы