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

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

Атомарные подграфики допускают:

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

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

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

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

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

Пример атомарного подграфика

Этот пример иллюстрирует различие между нормальным подграфиком и атомарным подграфиком.

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

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

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

  • Ведите себя как автономные графики.

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

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

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

Атомарные подграфики не делают доступа к поддержке к:

  • Данные на каждом уровне иерархии графика.

  • Широковещательные сообщения события вне осциллографа атомарного подграфика.

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

Создайте атомарный подграфик

Можно создать атомарный подграфик путем преобразования существующего подграфика или путем соединения графика из модели библиотеки. После создания атомарного подграфика обновите отображение переменных путем щелчка правой кнопкой по атомарному подграфику и выбора 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 в качестве языка действия.

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

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

Отладьте графики инкрементно

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

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

Напротив, когда вы изменяете атомарный подграфик, перекомпиляция происходит только для подграфика а не для целого графика. Инкрементные сборки для симуляции требуют, чтобы меньше времени перекомпилировало. Это сокращение во время компиляции позволяет вам протестировать каждое отдельное изменение вместо того, чтобы ожидать, чтобы протестировать несколько изменений целиком. Путем тестирования каждого изменения индивидуально, можно быстро идентифицировать изменение, которое вызывает ошибку. Для получения дополнительной информации смотрите, Уменьшают Время компиляции Графика.

Логика состояния повторного использования

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

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

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

Когда вы изменяете атомарный подграфик в библиотеке, изменение распространяет ко всем ссылкам библиотеки. Для получения дополнительной информации смотрите Повторное использование состояние Многократно в Графике.

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

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

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

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

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

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

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

Напротив, можно указать, что код для атомарного подграфика появляется в отдельном файле. Этот метод генерации кода включает модульное тестирование на определенную часть графика. Вы стараетесь не перерывать несвязанный код и фокусируетесь только на коде, который интересует вас. Для получения дополнительной информации смотрите, Генерируют Повторно используемый код для Модульного тестирования.

Похожие темы