Атомарная субдиаграмма является графическим объектом, который помогает вам создать независимые субкомпоненты в графике Stateflow®. Атомарные субдиаграммы поддерживаются только в диаграммах Stateflow в моделях Simulink®.
Атомарные субдиаграммы допускают:
Повторное использование того же состояния или субдиаграммы через несколько графиков и моделей.
Более быстрая симуляция после внесения небольших изменений в график со многими состояниями или уровнями иерархии.
Простота разработки команды, когда несколько человек работают над различными частями того же графика.
Ручной контроль сгенерированного кода для определенного состояния или субдиаграммы в графике.
Атомарная субдиаграмма выглядит непрозрачной и включает метку Atomic в левый верхний угол. Если вы используете соединенную атомарную субдиаграмму от библиотеки, метка Link появляется в левом верхнем углу.
Этот пример иллюстрирует различие между нормальной субдиаграммой и атомарной субдиаграммой.
В Воздушном Контроллере график, PowerOff
нормальная субдиаграмма. PowerOn
атомарная субдиаграмма. Обе субдиаграммы выглядят непрозрачными, но PowerOn
включает метку Atomic на левом верхнем углу.
Атомарные субдиаграммы комбинируют функциональность состояний, нормальных субдиаграмм и atomic subsystems. Атомарные субдиаграммы:
Ведите себя как независимые графики.
Поддержите использование, когда библиотека соединяется.
Поддержите генерацию повторно используемого кода.
Позвольте сопоставлять входных параметров, выходных параметров, параметров, памяти хранилища данных, и введите события.
Атомарные субдиаграммы не делают доступа к поддержке к:
Данные на каждом уровне иерархии графика.
Широковещательные сообщения события вне осциллографа атомарной субдиаграммы.
Атомарные субдиаграммы не поддерживают явную спецификацию шага расчета.
Можно создать атомарную субдиаграмму путем преобразования существующей субдиаграммы или путем соединения графика из модели библиотеки. После создания атомарной субдиаграммы обновите отображение переменных путем щелчка правой кнопкой по атомарной субдиаграмме и выбора Subchart Mappings. Для получения дополнительной информации смотрите Переменные Карты для Атомарных Субдиаграмм и Полей.
Чтобы создать независимый компонент, который допускает более быструю отладку и рабочие процессы генерации кода, преобразуйте существующее состояние или субдиаграмму в атомарную субдиаграмму. В вашем графике щелкните правой кнопкой по состоянию или нормальной субдиаграмме и выберите Group & Subchart> Atomic Subchart. Метка Atomic появляется в левом верхнем углу субдиаграммы.
Преобразование предоставляет атомарной субдиаграмме свою собственную копию каждого объекта данных что доступы к субдиаграмме в графике. Локальные данные копируются как память хранилища данных. Осциллограф других данных, включая входные и выходные данные, не изменяется.
Для получения дополнительной информации смотрите Ограничения для Преобразования в Атомарные Субдиаграммы.
Примечание
Если состояние или субдиаграмма содержат сообщения, вы не можете преобразовать его в атомарную субдиаграмму.
Чтобы создать субкомпонент для повторного использования через несколько графиков и моделей, создайте ссылку из модели библиотеки. Скопируйте график в модели библиотеки и вставьте его к графику в другой модели. Если график библиотеки содержит какие-либо состояния, это появляется как соединенная атомарная субдиаграмма с меткой Link в левом верхнем углу.
Этот метод моделирования минимизирует обслуживание подобных состояний. Когда вы изменяете атомарную субдиаграмму в библиотеке, ваши изменения распространяют к ссылкам во всех графиках и моделях.
Если график библиотеки содержит только функции и никакие состояния, то это появляется соединенное атомарное поле в графике. Для получения дополнительной информации смотрите Функции Повторного использования при помощи Атомарных Полей.
Преобразование атомарной субдиаграммы назад к состоянию или нормальной субдиаграмме удаляет все свои переменные отображения. Преобразование объединяет порожденные субдиаграммой объекты данных с порожденными графиком данными, с которыми они сопоставляют.
Если атомарная субдиаграмма является ссылкой библиотеки, щелкните правой кнопкой по атомарной субдиаграмме и выберите 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® вручную для определенной части графика.
Если вы не используете атомарные субдиаграммы, вы генерируете код для целой модели в одном файле. Чтобы найти код для определенной части графика, необходимо просмотреть целый файл.
В отличие от этого можно указать, что код для атомарной субдиаграммы появляется в отдельном файле. Этот метод генерации кода включает модульное тестирование на определенную часть графика. Вы стараетесь не перерывать несвязанный код и фокусируетесь только на коде, который интересует вас. Для получения дополнительной информации смотрите, Генерируют Отдельный Код для Атомарной Субдиаграммы.