В этом примере показано, как анализировать и реструктурировать модель, чтобы подготовить его к масштабируемой компиляции.
Чтобы открыть модель Линии электропередачи в качестве примера, введите ssc_transmission_line
в MATLAB® Командное окно. Затем сохраните модель под новым именем (например, transmission_line
) в вашей папке работы, чтобы смочь сделать модификации к нему.
Этот пример демонстрирует линию электропередачи путем конкатенации 50 идентичных сегментов T-раздела. Пользовательский блок Simscape™, T-Section Transmission Line, представляет один сегмент T-раздела. Каждый сегмент T-раздела 0,1 м длиной, поэтому линия электропередачи представляет длину на 5 м коаксиального кабеля. Модель содержит пять идентичных подсистем, названных S1 через S5, с каждой подсистемой, состоящей из десяти блоков сегмента T-раздела, named T-1 через T-10.
Предварительный анализ показывает что модель:
Имеет повторяющийся шаблон блоков Simscape
Содержит очень немногих Simulink® блоки, что означает, что часть Simscape модели считает в течение большей части времени компиляции
Использует решатель переменного шага и не требует генерации кода
На основе этого анализа модель является подходящим кандидатом на масштабируемую компиляцию. Кроме того, модель уже состоит из шаблона повторяющихся подсистем и не нужна ни в какой дополнительной реструктуризации в этой точке. Инструмент Advisory позволяет вам анализировать свою модель, как будто это уже содержало допускающие повторное использование компоненты вместо повторяющихся подсистем.
Следующий шаг должен анализировать модель с помощью инструмента Advisory. Можно вызвать sscScalableAdvisor
функция с помощью следующего синтаксиса:
sscScalableAdvisor(modelname,subsyspaths)
где:
modelname
имя модели, чтобы анализировать в виде вектора символов, строки или указателя на модель. Этот аргумент требуется.
subsyspaths
дополнительный аргумент, который идентифицирует повторяющиеся подсистемы в модели. Задайте этот аргумент, как массив ячеек подсистемы называет, включая путь к каждой подсистеме от корня модели, чтобы иметь артефакты компиляции быть снова использованным среди подсистем с идентичным содержимым.
Если модель содержит допускающие повторное использование компоненты, в форме на которые ссылаются или соединенных подсистем, инструмент распознает их автоматически. Если модели содержат другие типы подсистем, необходимо предоставить их именам subsyspaths
аргумент для инструмента Advisory, чтобы рассмотреть их как повторяющиеся компоненты.
В этом примере вы обеспечиваете имена всех пяти подсистем, S1 через S5, в массиве ячеек как второй входной параметр:
r = sscScalableAdvisor('transmission_line', ... {'transmission_line/S1', 'transmission_line/S2', 'transmission_line/S3', ... 'transmission_line/S4', 'transmission_line/S5',})
r = ScalableReport for model 'transmission_line' TotalModelCompilationTime: 7.2313 SimscapeCompilationTime: 6.7703 PeakMemory: '27 MB' ScalableSimscapeCompilationTime: 3.5232 ScalablePeakMemory: '19 MB' Subsystems: [1×4 table] Recommended to enable Simscape scalable compilation.
Инструмент Advisory возвращает статистику компиляции и рекомендует включить масштабируемую компиляцию. Если бы модель содержала неподдерживаемые шаблоны, рабочие процессы или оптимизацию, рекомендация не состояла бы в том, чтобы включить масштабируемую компиляцию, и инструмент Advisory перечислит применимые ограничения. В этом случае, однако, ни одно из ограничений не применяется, и время компиляции значительно уменьшается. Время компиляции для части Simscape модели составляет 3,5232 с вместо 6,7703 с, который снижает общее время компиляции приблизительно на 45% (7.2313 - 6.7703 + 3.5232 = 3,9842 с).
Примечание
Время компиляции модели зависит от нескольких факторов, таких как используемый процессор, другие процессы, запускающиеся одновременно, кэширование памяти, и так далее. Точные числа могут варьироваться немного между последовательными запусками инструмента Advisory, но отношение между различными частями процесса компиляции остается то же самое. Используйте эти данные, чтобы оценить потенциальное усиление от масштабируемой компиляции.
Можно также просмотреть данные по повторному использованию подсистемы:
r.Subsystems
ans = 1×4 table Total Instances Compiled Instances Reuse Details _______________ __________________ ______ ___________ transmission_line/S1 5 1 "100%" {1×5 table}
В этой модели все пять подсистем идентичны, и поэтому повторное использование составляет 100% (эти пять экземпляров заменяются одним скомпилированным экземпляром). В других моделях статистика повторного использования может отличаться. Например, если подсистемы имеют различные настройки или параметризацию, отчет инструмента Advisory указывает, сколько скомпилированных экземпляров необходимо, и вычисляет статистику повторного использования соответственно. В этом случае, Details
таблица предоставляет больше информации.
Поскольку результаты компиляции, обеспеченные инструментом Advisory на предыдущем шаге, являются удовлетворительными, вы не должны рассматривать другие способы реструктурировать модель. Теперь необходимо подготовить модель к масштабируемой компиляции, на самом деле заменив повторные подсистемы в анализе инструмента Advisory с допускающими повторное использование компонентами, в этом случае, со ссылочными подсистемами:
Щелкните правой кнопкой по подсистеме S1.
Из контекстного меню выберите Subsystem & Model Reference> Convert to> Referenced Subsystem.
Сохраните Subsystem file name как S1
. Используйте кнопку Browse, если вы хотите сохранить подсистему в другой папке.
Нажмите Convert. В результате содержимое подсистемы S1 сохранено как отдельный файл блок-схемы S1.slx
в папке вы задали, и подсистема, S1 в модели заменяется подсистемой, на которую ссылаются.
Удалите подсистемы S2, S3, S4 и S5.
Щелкните правой кнопкой по подсистеме S1 и перетащите его вместо подсистемы S2.
Повторите для подсистем S3, S4 и S5.
Заметьте, что ваша модель все еще содержит подсистемы под названием S1, S2, S3, S4, и S5, но они теперь вся ссылка та же подсистема S1
, сохраненный как отдельный файл блок-схемы.
Включать масштабируемую компиляцию для модели:
Откройте диалоговое окно Configuration Parameters.
На панели Simscape установите флажок Reuse components during compilzation.
Можно также использовать эквивалентный интерфейс командной строки, чтобы установить параметр конфигурации модели:
set_param(bdroot,'SimscapeCompileComponentReuse','on')