При внедрении алгоритмов в модели Simulink ® с помощью пользовательского кода C/C + + можно анализировать пользовательский код непосредственно с панели инструментов Simulink без настройки проекта Polyspace ® вручную. Поведение пользовательского кода в модели зависит от контекста модели, например от количества и характера входных данных и спецификации диапазона конструкции. При выполнении анализа Polyspace из MATLAB ® или Simulink анализ учитывает контекст модели. При выполнении анализа Polyspace пользовательского кода вне MATLAB/Simulink укажите контекст модели вручную, например, с помощью файлов опций.
Анализ Polyspace пользовательского кода имеет различные цели и конфигурации по сравнению с анализом Polyspace созданного кода:
Анализ пользовательского кода обнаруживает проблемы в пользовательском коде, которые могут вызвать ошибки во время выполнения или ошибки в моделировании. В этом анализе используется целевая конфигурация, совместимая с моделированием Simulink.
Созданный анализ кода обнаруживает ошибки, ошибки во время выполнения и неэффективность кода. созданный из полной модели Этот анализ использует настройки, заданные на панели Аппаратная реализация (Hardware Implementation) диалогового окна Параметры конфигурации (Configuration Parameters) для настройки параметров типа процессора Polyspace Target.
Перед запуском Polyspace с Simulink необходимо связать установки Polyspace и MATLAB. См. раздел Интеграция полиспейса с MATLAB и Simulink.
Пользовательский алгоритм можно реализовать с помощью различных блоков пользовательского кода Simulink, например:
Функция C: См. Вызов и интеграция внешних алгоритмов C в Simulink (Simulink)
C-вызывающий абонент: см. раздел Интеграция кода C с использованием C-блоков вызывающего абонента (Simulink)
S-функция: См. раздел Реализация C/C + + S-функций (Simulink)
Эти блоки имеют различные функциональные возможности. См. раздел Сравнение функциональных возможностей пользовательских блоков (Simulink).
Перед запуском Polyspace в модели Simulink настройте модель Simulink на совместимость с Polyspace.
Для анализа пользовательского кода в Polyspace выберите Импорт пользовательского кода в диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Цель моделирования (Simulation Target).
Если включенный пользовательский код не будет скомпилирован, анализ Polyspace может завершиться ошибкой. Перед началом анализа Polyspace включите соответствующие файлы заголовков и проверьте пользовательский код на наличие проблем компиляции. Функциональный блок C не поддерживает включение файлов заголовков. Для этого блока укажите операторы включения на панели «Цель моделирования». Для кода, включенного в блоки C Caller и S Function, укажите операторы include в исходном файле. Polyspace имеет более строгие требования к коду и компиляции, чем Simulink, и пользовательский код может не выполнить компиляцию Polyspace, даже если моделирование модели дает правильные результаты.
Запустите анализ пользовательского кода Polyspace в модели в редакторе Simulink или в окне команд MATLAB.
Дополнительные сведения о выполнении анализа Polyspace для пользовательского кода в функциональном блоке S см. в разделе Выполнение анализа Polyspace для кода S-функции.
Дополнительные сведения о выполнении анализа Polyspace для пользовательского кода в блоке вызывающего абонента C см. в разделе Выполнение анализа Polyspace для пользовательского кода в блоках вызывающего абонента C и диаграммах статусов.
Дополнительные сведения о выполнении анализа Polyspace для пользовательского кода в функциональном блоке C см. в разделе Выполнение анализа Polyspace для пользовательского кода в функциональном блоке C.
После начала анализа Polyspace извлекает пользовательский код из модели. Чтобы сохранить правильную спецификацию диапазона конструкции и характер входных данных, Polyspace предполагает, что каждый экземпляр пользовательского блока кода в верхней модели имеет уникальный контекст модели и рассматривает блоки как уникальные. Когда на модель, содержащую блок пользовательского кода, ссылаются несколько раз в другой модели верхнего уровня, контекст модели блоков пользовательского кода остается прежним. Polyspace обрабатывает блок пользовательского кода в различных экземплярах ссылочной модели как один экземпляр пользовательского кода.
После извлечения кода и контекста модели Polyspace анализирует их как рукописный код. См. Допущения по анализу проверочных кодов.
В редакторе Simulink выберите Анализ (Analysis) Результаты (Results). Откроется интерфейс пользователя Polyspace с результатами анализа. Отмеченные проблемы появятся на панели Список результатов (Results List). См. также:
Чтобы устранить отмеченные проблемы, измените код. Дополнительные сведения см. в разделе Устранение выявленных проблем. Либо измените модель Simulink, чтобы разрешить результаты Polyspace. См. раздел Устранение проблем.
Если отмеченная проблема известна или обоснована, аннотируйте эту информацию в пользовательских блоках кода. Пользовательские блоки кода можно аннотировать непосредственно из интерфейса пользователя Polyspace. См. раздел Аннотации блоков для выравнивания проблем.