Атомарная субдиаграмма является графическим объектом, который помогает вам создать независимые подкомпоненты в Stateflow® график. Атомарные субдиаграммы поддерживаются только в диаграммах Stateflow в Simulink® модели.
Атомарные субдиаграммы допускают:
Повторное использование одного и того же состояния или субдиаграммы на нескольких графиках и моделях
Более быстрая симуляция после внесения небольших изменений в график со многими состояниями или уровнями иерархии
Простота развития команды, когда несколько людей работают над различными частями одного графика
Ручной контроль сгенерированного кода для определенного состояния или субдиаграммы на графике
Атомарная субдиаграмма выглядит непрозрачным и включает метку Atomic в левом верхнем углу. При использовании связанной атомарной субдиаграммы из библиотеки метка ссылка появляется в левом верхнем углу.
Этот пример иллюстрирует различие между нормальной субдиаграммой и атомарной субдиаграммой.
На графике Контроллера, PowerOff
является нормальной субдиаграммой. PowerOn
является атомарной субдиаграммой. Обе субдиаграммы выглядят непрозрачно, но PowerOn
включает метку Atomic в левом верхнем углу.
Атомарные субдиаграммы комбинируют функциональность состояний, нормальные субдиаграммы и атомарные подмножества (Simulink). Атомарные субдиаграммы:
Вести себя как независимые графики.
Поддержка использования в качестве библиотечных ссылок.
Поддержка генерации переиспользуемого кода.
Разрешить отображать входы, выходы, параметры, память хранилища данных и входные события.
Атомарные субдиаграммы не поддерживают доступ к:
Данные на каждом уровне иерархии графиков.
События распространяются вне возможностей атомарной субдиаграммы.
Атомарные субдиаграммы не поддерживают явную спецификацию шага расчета.
Можно создать атомарную субдиаграмму путем преобразования существующей субдиаграммы или путем связывания графика из библиотечной модели. После создания атомарной субдиаграммы обновите отображение переменных, щелкнув правой кнопкой мыши атомарная субдиаграмма и выбрав Subchart Mappings. Для получения дополнительной информации смотрите Map Переменных для Atomic Субдиаграмм и Boxes.
Чтобы создать независимый компонент, который позволяет ускорить рабочие процессы отладки и генерации кода, преобразуйте существующее состояние или субдиаграмму в атомарную субдиаграмму. На графике щелкните правой кнопкой мыши состояние или нормальная субдиаграмма и выберите Group & Subchart > Atomic Subchart. Метка Atomic появится в левом верхнем углу субдиаграммы.
Преобразование предоставляет атомарной субдиаграмме свою собственную копию каждого объекта данных, к которому обращается субдиаграмма на графике. Локальные данные копируются как память хранилища данных. Возможности других данных, включая входные и выходные данные, не меняется.
Для получения дополнительной информации смотрите Ограничения для преобразования в атомарные субдиаграммы.
Примечание
Если состояние или субдиаграмма содержит сообщения, вы не можете преобразовать его в атомарную субдиаграмму.
Чтобы создать подкомпонент для повторного использования между несколькими графиками и моделями, создайте ссылку из библиотечной модели. Скопируйте график в модель библиотеки и вставьте ее на график в другой модели. Если график библиотеки содержит какие-либо состояния, он появляется как связанная атомарная субдиаграмма с Ссылкой метки в левом верхнем углу.
Этот метод моделирования минимизирует поддержание аналогичных состояний. При изменении атомарной субдиаграммы в библиотеке изменения распространяются на ссылки во всех графиках и моделях.
Если диаграмма библиотеки содержит только функции и не содержит состояний, на графике появляется связанный атомарный прямоугольник. Для получения дополнительной информации см. Раздел «Повторно используйте функции при помощи атомарных коробок».
Преобразование атомарной субдиаграммы назад в состояние или нормальную субдиаграмму удаляет все его переменные отображения. Преобразование объединяет родительские объекты данных подграфика с родительскими данными диаграммы, с которыми они сопоставлены.
Если атомарная субдиаграмма является библиотечной ссылкой, щелкните правой кнопкой мыши атомарная субдиаграмма и выберите Library Link > Disable Link.
Чтобы преобразовать атомарную субдиаграмму обратно в нормальную субдиаграмму, щелкните правой кнопкой мыши атомарная субдиаграмма и снимите флажок Group & Subchart > Atomic Subchart.
Чтобы преобразовать субдиаграмму обратно в состояние, щелкните правой кнопкой мыши субдиаграмма и снимите флажок Group & Subchart > Subchart.
При необходимости переставьте графические объекты на графике.
Преобразование атомарной субдиаграммы в нормальную субдиаграмму невозможно, если:
Атомарная субдиаграмма сопоставляет параметр с выражением, отличным от одинарного имени переменной. Для примера сопоставление параметра data1
одно из этих выражений препятствует преобразованию атомарной субдиаграммы в нормальную субдиаграмму:
3
data2(3)
data2 + 3
Оба эти условия верны:
Атомарная субдиаграмма содержит MATLAB® функции или функции таблицы истинности, которые используют MATLAB в качестве языка действий.
Атомарная субдиаграмма не сопоставляет каждую переменную с переменной с таким же именем на основном графике.
Предположим, что вы хотите повторно использовать одно и то же состояние или субдиаграмму много раз, чтобы облегчить крупномасштабное моделирование.
Если вы не используете атомарные субдиаграммы, необходимо вручную вести каждую копию подкомпонента. Для примера этот график содержит два состояния с подобной структурой. Единственное различие между этими двумя состояниями - это имена переменных. Если вы меняете логику в состоянии A
, тогда вы должны сделать то же изменение в состоянии B
.
Чтобы включить повторное использование подкомпонентов при помощи связанных атомарных субдиаграмм, создайте одну копию состояния A
и храните его как график в модели библиотеки. Из этой библиотеки скопируйте и дважды вставьте атомарную субдиаграмму в график. Затем при необходимости обновите отображение переменных субдиаграммы.
При изменении атомарной субдиаграммы в библиотеке это изменение распространяется на все библиотечные ссылки. Для получения дополнительной информации смотрите Повторно использовать состояние Несколько раз в графике.
Предположим, что вы хотите протестировать последовательность изменений на графике, которая содержит много состояний или несколько уровней иерархии.
Если вы не используете атомарные субдиаграммы, когда вы вносите небольшое изменение в одну часть диаграммы и запускаете симуляцию, перекомпиляция происходит для всего графика. Поскольку перекомпиляция всего графика может занять много времени, вы решите внести несколько изменений перед проверкой. Однако, если вы нашли ошибку, необходимо пройти через все ваши изменения, чтобы идентифицировать причину ошибки.
Напротив, при изменении атомарной субдиаграммы перекомпиляция происходит только для субдиаграммы, а не для всего графика. Инкрементным сборкам для симуляции требуется меньше времени для перекомпиляции. Это сокращение времени компиляции позволяет вам тестировать каждое отдельное изменение вместо ожидания тестирования нескольких изменений сразу. При индивидуальном тестировании каждого изменения можно быстро идентифицировать изменение, вызывающее ошибку. Для получения дополнительной информации смотрите Сокращение времени компиляции графика.
Предположим, что вы хотите разбить график на подкомпоненты, потому что несколько людей работают с различными частями графика.
Без атомарных субдиаграмм только один человек за раз может редактировать модель. Если кто-то редактирует одну часть графика во время редактирования другой части того же графика, необходимо объединить эти изменения во время отправки.
Напротив, можно хранить различные части графика как связанные атомарные субдиаграммы. Поскольку атомарные субдиаграммы ведут себя как независимые объекты, различные люди могут работать с различными частями графика, не затрагивая другие части графика. Во время отправки слияние не требуется, потому что изменения существуют в отдельных моделях. Для получения дополнительной информации см. раздел «Разделение графика на отдельные модули».
Предположим, что вы хотите просмотреть код, сгенерированный Simulink Coder™ или Embedded Coder® вручную для определенной части графика.
Если вы не используете атомарные субдиаграммы, вы генерируете код для целой модели в одном файле. Чтобы найти код для определенной части графика, необходимо просмотреть весь файл.
Напротив, можно задать, что код для атомарной субдиаграммы появляется в отдельном файле. Этот метод генерации кода позволяет выполнить модульное тестирование для определенной части графика. Вы избегаете поиска через несвязанный код и фокусируетесь только на коде, который вас интересует. Для получения дополнительной информации смотрите Сгенерировать отдельный код для атомарной субдиаграммы.
Atomic Subsystem (Simulink)