Инструменты оптимизации и методы

Используйте Model Advisor, чтобы оптимизировать модель для генерации кода

Можно использовать Model Advisor, чтобы анализировать модель для генерации кода и идентифицировать аспекты модели, которые препятствуют производственному развертыванию или ограничивают КПД кода. Можно выбрать из набора проверок, чтобы работать на текущей настройке модели. Model Advisor анализирует модель и генерирует результаты проверки, обеспечивающие предложения для улучшений каждой области. Большая часть диагностики Model Advisor не требует, чтобы модель была в скомпилированном состоянии; те, которые делают, отмечены.

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

Используйте следующие примеры, чтобы исследовать модели оптимизации для генерации кода, использующей Model Advisor:

Примечание

Модели rtwdemo_advisor2 в качестве примера и rtwdemo_advisor3 потребуйте Stateflow® и программное обеспечение Fixed-Point Designer™.

Для получения дополнительной информации об использовании Model Advisor смотрите Осуществленные Проверки Model Advisor. Для получения дополнительной информации о проверках, смотрите Проверки Simulink Coder.

Советы по проектированию для оптимизации сгенерированного кода для объектов Stateflow

Не делайте доступа к порожденным машиной данным в графической функции

Это ограничение препятствует тому, чтобы длинные списки параметров появились в коде, сгенерированном для графической функции. Можно получить доступ к локальным данным, которые находятся в том же графике как графическая функция. Для получения дополнительной информации смотрите Шаблоны Логики Повторного использования путем Определения Графических функций (Stateflow).

Будьте явными о встроенной опции графической функции

Когда вы будете использовать графическую функцию в диаграмме Stateflow, выберите Inline или Function для свойства Function Inline Option. В противном случае код, сгенерированный для графической функции, не может появиться, как вы хотите. Для получения дополнительной информации смотрите Specify Properties Графических функций (Stateflow).

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

Если вы используете больше чем один триггер, вы генерируете несколько операторов кода, чтобы обработать возрастающие или падающие обнаружения ребра. Если несколько триггеров требуются, используйте события вызова функции вместо этого. Для получения дополнительной информации смотрите, Активируют диаграмму Stateflow путем Отправки Входных Событий (Stateflow).

Объедините входные сигналы графика в один объект шины

Когда вы используете объект шины, вы сокращаете количество параметров в списке параметров сгенерированной функции. Эта инструкция также применяется к выходным сигналам графика. Для получения дополнительной информации смотрите, Задают Структуры Stateflow (Stateflow).

Используйте графики с дискретными шагами расчета

Код сгенерировал для дискретных графиков, которые не являются в целочисленных счетчиках использования инициированной или активированной подсистемы, чтобы отследить время вместо Simulink® если время. Это допускает более эффективную генерацию кода в терминах издержек и памяти, а также разрешающий этот код для использования в программном обеспечении в цикле (SIL) и процессор в цикле (PIL) симуляции.

Дополнительные методы оптимизации

Можно применить следующие методы, чтобы оптимизировать модель для генерации кода:

  • Для Embedded Coder® пользователи, если ваше приложение использует только целочисленную арифметику, очищают параметр Support floating-point numbers в разделе Software environment панели Interface так, чтобы сгенерированный код не содержал данные с плавающей точкой или операции. Когда этот параметр очищен, ошибка повышена, если с данными о нецелом числе или выражениями сталкиваются во время генерации кода. Сообщение об ошибке сообщает о незаконных блоках и параметрах.

  • Отключите Configuration Parameters> Code Generation> Interface> Advanced parameters> параметр MAT-file logging. Отмена выбора этого параметра устраняет дополнительный код и использование памяти для инициализации, обновления и переменных логгирования чистки. Кроме того, код, сгенерированный, чтобы поддержать логгирование MAT-файла, вызывает malloc, который может быть нежелательным для вашего приложения.

  • Используйте Советника по вопросам Обновления, чтобы обновить более старые модели (сохраненный предыдущими версиями или текущей версией), чтобы использовать текущие функции. Для получения дополнительной информации смотрите Обновление моделей.

  • Перед созданием оптимизация набора отмечает для компилятора (например, -O2 для gcc, -Ot для Microsoft® Visual C++® компилятор).

  • Непосредственно встроенные S-функции C/C++ в сгенерированный код путем записывания файла TLC для S-функции. Для получения дополнительной информации смотрите, Ускорьте Симуляцию, Код Повторного использования, или Защищайте Интеллектуальную собственность при помощи Цели S-функции и смотрите Встроенные S-функции MEX C.

  • Используйте тип данных Simulink кроме double если это возможно. Доступными типами данных является Boolean, подписанные и 8-без знака, 16-, и 32-битные целые числа, и 32-и 64-битные плавания (double 64-битное плавание). Для получения дополнительной информации займитесь Типами данных в Simulink. Для сводных данных блока блоком нажмите showblockdatatypetable или введите команду в Командном окне.

  • Для настраиваемых параметров блоков, которые вы конфигурируете, чтобы сохранить в памяти в сгенерированном коде, можно совпадать с типами данных параметров типам данных сигнала, чтобы устранить ненужные преобразования типа и сдвиги C. Где возможно, значения параметров хранилища в небольших целочисленных типах данных. Смотрите Типы данных параметров в Сгенерированном коде.

  • Удалите повторенные значения в данных об интерполяционной таблице.

  • Используйте блок Merge, чтобы объединить выход сигналов по мере возможности. Этот блок особенно полезен, когда необходимо управлять выполнением подсистем вызова функций с диаграммой Stateflow. Следующая модель показывает пример того, как использовать блок Merge.

    Когда больше чем один сигнал, соединенный с блоком Merge, имеет non-Auto класс памяти, весь non-Auto сигналы, соединенные с тем блоком, должны быть тождественно помечены и иметь тот же класс памяти. Когда блоки Слияния соединяются непосредственно друг с другом, эти правила применяются к сигналам, соединенным с любым из блоков Слияния в группе.

Похожие темы