Когда вы проверяете сгенерированный код на ошибки или ошибки времени выполнения, можно выбрать, выполнить ли проверку для всех значений входа или определенной области значений значений. Можно извлечь входной диапазон из Simulink® модель, или задают ваши собственные внешние ограничения.
Аналогично, можно использовать фиксированное значение для настраиваемых параметров или области значений значений. Можно также проверять, находятся ли выходные значения в пределах определенной области значений.
Рассмотрите эту простую модель с блоком Inport (Simulink), блоком Gain (Simulink) и блоком Outport (Simulink). Предположим, что сигнал в блоках Inport и Outport и параметре усиления блока Gain имеет минимальное и максимальное значение.
Можно анализировать код, сгенерированный из этой модели с этими минимальными и максимальными значениями. На вкладке Apps выберите Polyspace Code Verifier. Затем на вкладке Polyspace выберите Settings. Задайте эти параметры конфигурации:
Входной параметр: выберите Use specified minimum and maximum values
. Анализ Code Prover проверяет сгенерированный код в заданной области значений от Inport блока. Анализ Bug Finder использует эту информацию, чтобы исключить ложные положительные стороны.
Значение по умолчанию: Эта опция выбрана.
Настраиваемые параметры: Выберите Use specified minimum and maximum values
.
Значение по умолчанию: Эта опция не выбрана. Анализ использует фиксированное значение усиления блока Gain (значение 2 в примере).
Для анализа, чтобы рассмотреть область значений вместо фиксированного значения, параметры должны быть настраиваемыми и не встроенные. Смотрите поведение параметра По умолчанию (Simulink Coder).
Вывод : выберите Verify outputs are within minimum and maximum values
. Анализ Code Prover создает красную проверку, если выходные параметры превышают диапазон, указанный на блоке Outport. См. также Correctness condition
.
Значение по умолчанию: Эта опция не выбрана. Анализ Code Prover не проверяет выходные значения.
После анализа, чтобы проверять, используется ли ограниченное значение области значений, смотрите один из этих файлов:
Ограничительный XML-файл спецификации
в папке modelname
_drs.xmlresults_
. modelname
\modelname
Polyspace® файл проекта
в папке modelname
.prpsjresults_
. modelname
Откройте этот файл в пользовательском интерфейсе Polyspace. В настройке проекта смотрите извлеченные ограничения, заданные для опции Constraint setup (-data-range-specifications)
.
Чтобы позволить ограничительную экстракцию из модели Simulink, сигналы и параметры должны иметь типы данных в определенных классах памяти. Для получения дополнительной информации на классах памяти, смотрите, Выбирают Storage Class for Controlling Data Representation in Generated Code (Embedded Coder).
Класс памяти | Поддерживаемое ограничение сигнала | Поддерживаемое ограничение параметра |
---|---|---|
Auto | Да | Да |
ExportedGlobal | Да | Да |
ImportedExtern | Да | Да |
ImportedExternPointer | Да | Да |
Model default | Да | Да |
Класс памяти | Поддерживаемое ограничение сигнала | Поддерживаемое ограничение параметра |
---|---|---|
BitField | Да | Да |
CompilerFlag | Нет | Нет |
Const | Нет | Да |
ConstVolatile | Нет | Да |
Define | Нет | Нет |
ExportToFile | Да | Да |
FileScope | Да | Нет |
GetSet | Нет | Нет |
ImportedDefine | Нет | Нет |
ImportFromFile | Нет | Нет |
Struct | Нет | Нет |
Volatile | Да | Да |
В некоторых случаях вы можете должны быть задать пользовательский набор ограничений на ваш сгенерированный код. Например, вы можете интегрировать сгенерированный код с существующей кодовой базой, которая налагает набор пользовательских ограничений.
При анализе сгенерированного кода задайте пользовательские внешние ограничения через окно Polyspace Configuration:
В окне Simulink Configuration Parameters найдите вкладку Polyspace, и затем нажмите Configure, чтобы открыть окно Polyspace Configuration.
В поле Constraint Setup, расположенном в узле Inputs & Stubbing, задают пользовательский внешний XML-файл спецификации.
Можно создать и отредактировать пользовательский внешний ограничительный шаблон через пользовательский интерфейс Polyspace. Смотрите Задают Внешние Ограничения.