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