Атомарная вложенная диаграмма - это графический объект, который помогает создавать независимые подкомпоненты в диаграмме Stateflow ®. Атомарные подчасти поддерживаются только в диаграммах Stateflow в моделях Simulink ®.
Атомарные подшарты допускают:
Повторное использование одного состояния или вложенной диаграммы в нескольких диаграммах и моделях
Ускорение моделирования после внесения небольших изменений в диаграмму со многими состояниями или уровнями иерархии
Простота разработки команды, когда несколько людей работают над различными частями одной и той же диаграммы
Ручная проверка сгенерированного кода для определенного состояния или подшаги на диаграмме
Атомарный подшаг выглядит непрозрачным и включает метку Atomic в левом верхнем углу. Если из библиотеки используется связанная атомарная вложенная диаграмма, в левом верхнем углу появляется метка Связь (Link).
Этот пример иллюстрирует разницу между нормальным подшаблоном и атомарным подшаблоном.

На диаграмме контроллера воздуха PowerOff является обычным подшарниром. PowerOn является атомарным подначертанием. Обе подшаги выглядят непрозрачными, но PowerOn включает метку Atomic в левом верхнем углу.

Атомарные подшаблоны объединяют функциональные возможности состояний, нормальных подшаблонов и атомных субсистем (Simulink). Атомарные подшаблоны:
Ведите себя как независимые диаграммы.
Поддержка использования в качестве ссылок на библиотеки.
Поддержка создания многократно используемого кода.
Разрешить отображение входов, выходов, параметров, памяти хранения данных и входных событий.
Атомарные подсхемы не поддерживают доступ к:
Данные на каждом уровне иерархии диаграмм.
События передаются вне области действия атомарного подначета.
Атомарные подчасти не поддерживают явную спецификацию времени выборки.
Атомарную вложенную диаграмму можно создать, преобразовав существующую вложенную диаграмму или связав диаграмму из библиотечной модели. После создания атомарного подзаголовка обновите отображение переменных, щелкнув его правой кнопкой мыши и выбрав «Сопоставления подзаголовков». Дополнительные сведения см. в разделе Сопоставление переменных для атомных подчисток и полей.
Чтобы создать независимый компонент, обеспечивающий более быструю отладку и генерацию кода, преобразуйте существующее состояние или вложенную диаграмму в атомарную. На диаграмме щелкните правой кнопкой мыши состояние или обычный подшаг и выберите «Группа и подшаг» > «Атомарный подшаг». Метка Атомарный (Atomic) отображается в левом верхнем углу подшаги.
Преобразование обеспечивает атомарную подкадру собственной копией каждого объекта данных, к которому подкадр обращается на диаграмме. Локальные данные копируются как память хранилища данных. Объем других данных, включая входные и выходные данные, не изменяется.
Дополнительные сведения см. в разделе Ограничения для преобразования в атомарные субчарты.
Примечание
Если диаграмма состояния или вложенная диаграмма содержит сообщения, ее нельзя преобразовать в атомарную вложенную диаграмму.
Чтобы создать подкомпонент для повторного использования в нескольких диаграммах и моделях, создайте связь из библиотечной модели. Скопируйте диаграмму в библиотечной модели и вставьте ее в диаграмму в другой модели. Если библиотечная диаграмма содержит какие-либо состояния, она отображается как связанная атомарная вложенная диаграмма с меткой Link в левом верхнем углу.
Этот метод моделирования сводит к минимуму поддержание аналогичных состояний. При изменении атомарной вложенной диаграммы в библиотеке изменения распространяются на ссылки во всех диаграммах и моделях.
Если библиотечная диаграмма содержит только функции и не содержит состояний, то на ней появляется связанное атомарное поле. Дополнительные сведения см. в разделе Повторное использование функций с помощью атомных блоков.
При преобразовании атомарного подкадра обратно в состояние или обычный подкадр удаляются все его переменные сопоставления. При преобразовании происходит слияние объектов данных, являющихся частью диаграммы, с данными, являющимися частью диаграммы, с которыми они сопоставляются.
Если атомарная вложенная диаграмма является ссылкой на библиотеку, щелкните правой кнопкой мыши атомарную вложенную диаграмму и выберите «Связь с библиотекой» > «Отключить ссылку».
Чтобы преобразовать атомарную вложенную диаграмму обратно в обычную, щелкните ее правой кнопкой мыши и снимите флажок «Группа и вложенная диаграмма» > «Атомарная вложенная диаграмма».
Чтобы преобразовать вложенную диаграмму обратно в состояние, щелкните ее правой кнопкой мыши и снимите флажок «Группа» > «Вложенная диаграмма».
При необходимости измените порядок графических объектов на диаграмме.
Нельзя преобразовать атомарную вложенную диаграмму в обычную, если:
Атомарная вложенная диаграмма сопоставляет параметр выражению, отличному от имени отдельной переменной. Например, сопоставление параметра data1 к одному из следующих выражений предотвращает преобразование атомарного подшаблона в обычный подшаблон:
3
data2(3)
data2 + 3
Оба этих условия верны:
Атомарная вложенная диаграмма содержит функции MATLAB ® или функции таблицы истинности, использующие MATLAB в качестве языка действий.
Атомарная вложенная диаграмма не сопоставляет каждую переменную с переменной с тем же именем в основной диаграмме.
Предположим, что для упрощения крупномасштабного моделирования необходимо многократно использовать одно и то же состояние или вложенную диаграмму.
Если атомарные подчасти не используются, то каждую копию подкомпонента необходимо вести вручную. Например, эта диаграмма содержит два состояния с аналогичной структурой. Единственное различие между этими двумя состояниями заключается в именах переменных. При изменении логики в состоянии A, то вы должны сделать то же самое изменение в состоянии B.

Чтобы разрешить повторное использование подкомпонентов с помощью связанных атомных подшаблонов, создайте одну копию состояния A и сохранить его как диаграмму в библиотечной модели. Из этой библиотеки дважды скопируйте и вставьте атомарную вложенную диаграмму в диаграмму. Затем при необходимости обновите сопоставление переменных вложенных диаграмм.
При изменении атомарной вложенной диаграммы в библиотеке это изменение распространяется на все связи с библиотекой. Дополнительные сведения см. в разделе Многократное повторное использование состояния в диаграмме.
Предположим, что необходимо проверить последовательность изменений в диаграмме, которая содержит множество состояний или несколько уровней иерархии.
Если атомарные подчасти не используются, то при внесении небольшого изменения в одну часть диаграммы и запуске моделирования происходит перекомпиляция для всей диаграммы. Поскольку перекомпиляция всей диаграммы может занять много времени, перед тестированием необходимо внести несколько изменений. Однако при обнаружении ошибки необходимо выполнить все изменения, чтобы определить причину ошибки.
В отличие от этого при изменении атомарного подкадра повторная компиляция выполняется только для подкадра, а не для всей диаграммы. Инкрементные построения для моделирования требуют меньше времени на перекомпиляцию. Это сокращение времени компиляции позволяет тестировать каждое отдельное изменение, а не ожидать одновременного тестирования нескольких изменений. Тестирование каждого изменения по отдельности позволяет быстро определить изменение, вызывающее ошибку. Дополнительные сведения см. в разделе Сокращение времени компиляции диаграммы.
Предположим, что требуется разбить диаграмму на подкомпоненты, поскольку над различными частями диаграммы работают несколько человек.
Без атомных вложенных диаграмм редактировать модель может только один пользователь. Если кто-то редактирует одну часть диаграммы, а кто-то другой редактирует другую часть той же диаграммы, необходимо объединить эти изменения во время отправки.
Напротив, можно хранить различные части диаграммы как связанные атомарные подчасти. Поскольку атомарные подчасти ведут себя как независимые объекты, разные люди могут работать с различными частями диаграммы, не затрагивая другие части диаграммы. Во время отправки слияние не требуется, поскольку изменения существуют в отдельных моделях. Дополнительные сведения см. в разделе Разделение диаграммы на отдельные единицы.
Предположим, что код, созданный Simulink Coder™ или Embedded Coder ®, необходимо проверить вручную для определенной части диаграммы.
Если атомарные подчасти не используются, код для всей модели создается в одном файле. Чтобы найти код для определенной части диаграммы, необходимо просмотреть весь файл.
В отличие от этого, можно указать, что код атомарного подшаблона отображается в отдельном файле. Этот метод генерации кода позволяет выполнять модульное тестирование для определенной части диаграммы. Вы избегаете поиска по несвязанному коду и фокусируетесь только на интересующем вас коде. Дополнительные сведения см. в разделе Создание отдельного кода для атомарного субчарта.
Атомная подсистема (Simulink)