Можно использовать 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 выберите Inline или Function для свойства Function Inline Option. В противном случае код, сгенерированный для графической функции, может отображаться не так, как требуется. Дополнительные сведения см. в разделе Задание свойств графических функций (поток состояний).
При использовании нескольких триггеров создается несколько инструкций кода для обработки обнаружений растущих или падающих краев. Если требуется несколько триггеров, используйте события function-call. Дополнительные сведения см. в разделе Активация диаграммы Stateflow путем отправки событий ввода (Stateflow).
При использовании объекта шины уменьшается количество параметров в списке параметров созданной функции. Эта инструкция также применяется к выходным сигналам диаграммы. Дополнительные сведения см. в разделе Определение структур потока состояний (Stateflow).
Код, генерируемый для дискретных диаграмм, которые не находятся внутри инициированной или включенной подсистемы, использует целочисленные счетчики для отслеживания времени вместо времени, предоставленного Simulink ®. Это позволяет более эффективно генерировать код с точки зрения служебных данных и памяти, а также позволяет использовать этот код для моделирования программного обеспечения в цикле (SIL) и процессора в цикле (PIL ).
Для оптимизации модели для создания кода можно использовать следующие методы.
Для пользователей Embedded Coder ®, если приложение использует только целочисленную арифметику, снимите флажок «Поддержка чисел с плавающей запятой» в разделе «Программная среда» панели «Интерфейс», чтобы созданный код не содержал данных с плавающей запятой или операций. При сбросе этого параметра возникает ошибка, если при создании кода встречаются неинтегрированные данные или выражения. Сообщение об ошибке сообщает о нарушениях блоков и параметров.
Отключите параметры конфигурации > Создание кода > Интерфейс > Дополнительные параметры > Параметр ведения журнала MAT-файла. Отмена выбора этого параметра исключает использование дополнительного кода и памяти для инициализации, обновления и очистки переменных журнала. Кроме того, код, сгенерированный для поддержки регистрации MAT-файлов, вызывает malloc, что может быть нежелательно для вашего приложения.
Используйте Upgrade Advisor для обновления старых моделей (сохраненных предыдущими версиями или текущей версией) для использования текущих функций. Дополнительные сведения см. в разделе Обновления модели.
Перед построением установите флаги оптимизации для компилятора (например, -O2 для gcc, -Ot для компилятора Microsoft ® Visual C++).
Непосредственно в C/C + + S-функции в сгенерированный код путем записи файла TLC для S-функции. Дополнительные сведения см. в разделах Ускорение моделирования, Повторное использование кода или Защита интеллектуальной собственности с помощью цели S-функций и в разделе Встроенные S-функции C MEX.
Использовать тип данных Simulink, отличный от double по возможности. Доступные типы данных: Boolean, подписанные и неподписанные 8-, 16- и 32-разрядные целые числа и 32- и 64-разрядные плавающие числа (a double является 64-разрядным плавающим). Дополнительные сведения см. в разделе Сведения о типах данных в Simulink. Для получения сводки по блокам щелкните showblockdatatypetable или введите команду в окне команд.
Для настраиваемых параметров блоков, которые настраиваются для сохранения в памяти в сгенерированном коде, можно сопоставить типы данных параметров с типами данных сигналов, чтобы исключить ненужные типы и сдвиги C. По возможности храните значения параметров в небольших целочисленных типах данных. См. раздел Типы данных параметров в сгенерированном коде.
Удаление повторяющихся значений в данных таблицы подстановки.
Используйте блок объединения для объединения выходных сигналов, где это возможно. Этот блок особенно полезен, когда необходимо управлять выполнением подсистем функционального вызова с помощью диаграммы Stateflow. В следующей модели показан пример использования блока объединения.

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