Обнаружьте ошибки целочисленного переполнения и деления на нуль

Об этом примере

Следующие разделы описывают, как анализировать модель sldvdemo_cruise_control_fxp_fixed для ошибок деления на нуль и целочисленного переполнения.

Анализируйте модель

Открытый и модель проверки для целочисленного переполнения и ошибок деления на нуль:

  1. Откройте модель sldvdemo_cruise_control_fxp_fixed.

  2. Выберите Analysis> Design Verifier> Options.

  3. В диалоговом окне Configuration Parameters, в дереве Select под Design Verifier, выбирают узел Design Error Detection.

  4. На панели Design Error Detection выберите:

    • Integer overflow

    • Division by zero

  5. В диалоговом окне Configuration Parameters, на Diagnostics> панель Data Validity, устанавливает Signals> Wrap on overflow, Signals> Saturate on overflow и Parameters> Detect overflow к error.

  6. Нажмите OK, чтобы сохранить эти настройки и закрыть диалоговое окно Configuration Parameters.

  7. Выберите Analysis> Design Verifier> Detect Design Errors> Model.

Когда анализ завершен:

  • Программное обеспечение подсвечивает модель с результатами анализа.

  • Диалоговое окно Simulink® Design Verifier™ Results открывает и отображается сводные данные анализа.

Рассмотрите результаты анализа

Рассмотрите результаты на модели

Выведенные области значений могут помочь вам понять источник ошибки путем идентификации возможных значений сигналов, как вы видите путем взятия следующих шагов:

  1. В верхнем уровне модели sldvdemo_cruise_control_fxp_fixed нажмите Fixed-Point Controller subsystem.

    Окно Simulink Design Verifier Results отображает выведенную область значений возможных значений сигналов для Выходных портов, как вычислено анализом:

    • Значения Выходного порта 1 (throt) колеблются от –2.6101 до 2.6096.

    • Значения Выходного порта 2 (целевых) диапазона от 0 до 255.9960.

  2. Кликните по блокам Выходного порта модели sldvdemo_cruise_control_fxp_fixed, чтобы видеть, что тот же сигнал связал значения.

  3. Откройте Подсистему контроллера Фиксированной точки.

    Два объекта в этой подсистеме обрисованы в общих чертах в красном. Подсистема контроллера PI обрисована в общих чертах в зеленом.

  4. Кликните по блоку Sum, обрисованному в общих чертах в красном, который предоставляет ошибочный вход Подсистеме контроллера PI.

    Этот блок Sum может произвести ошибку переполнения. Анализ нашел тест, который может привести к вычислению, где вывод блока Sum превышает область значений [–128.. 127.9960].

  5. Чтобы более полно понять эту ошибку, кликните по двум блокам, которые предоставляют входные параметры блоку Sum. В окне Simulink Design Verifier Results просмотрите их выведенные области значений:

    • Третий Выходной порт от блока Bus имеет область значений [0.. 256].

    • Выходной порт от блока switch имеет область значений [0.. 256].

    Вы видите, что операция суммы для этих диапазонов сигнала может вычислить значение, которое превышает область значений [–128.. 128] для Выходного порта блока Sum.

    Анализ сообщает об ошибке переполнения относительно блока Sum. Анализ не распространяет эту ошибку и принимает, что блок Sum вывод в допустимой области значений для любых последующих вычислений.

  6. Нажмите PI Controller subsystem, обрисованный в общих чертах в зеленом. Ни один из блоков в Подсистеме контроллера PI не может произвести ошибки деления на нуль или переполнение. Когда программное обеспечение анализирует Подсистему контроллера PI, оно игнорирует ошибку переполнения от блока Sum и принимает, что входные параметры к подсистеме допустимы.

Сохраните модель sldvdemo_cruise_control_fxp_fixed открытой. В следующем разделе вы создаете модель тестовой обвязки, чтобы видеть тест, который генерирует ошибку переполнения блока Sum.

Рассмотрите модель тестовой обвязки

Чтобы видеть тесты, которые демонстрируют ошибки, сгенерируйте модель тестовой обвязки из окна Simulink Design Verifier Results:

  1. В модели sldvdemo_cruise_control_fxp_fixed откройте Подсистему контроллера Фиксированной точки.

  2. Кликните по блоку Sum, обрисованному в общих чертах в красном, который предоставляет ошибочный вход Подсистеме контроллера PI.

    Окно Simulink Design Verifier Results отображает информацию, что ошибка переполнения произошла.

  3. В окне Simulink Design Verifier Results нажмите View test case.

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

    В модели тестовой обвязки диалоговое окно Signal Builder открывается с Тестом 2 отображенных.

  4. Нажмите кнопку симуляции Start, чтобы моделировать модель с этим тестом.

    Как ожидалось симуляция перестала работать из-за ошибки переполнения в блоке Sum в Подсистеме контроллера Фиксированной точки.

Для получения дополнительной информации смотрите Модели тестовой обвязки Simulink Design Verifier.

Рассмотрите аналитический отчет

Чтобы просмотреть отчет HTML, содержащий подробную информацию об анализе, сообщают для модели sldvdemo_cruise_control_fxp_fixed:

  1. В окне Simulink Design Verifier Results, чтобы вновь отобразить сводные данные результатов, нажимают Back to summary.

  2. Нажмите Generate detailed analysis report.

    Программное обеспечение генерирует отчет детального анализа, который открывает в браузере.

Для модели sldvdemo_cruise_control_fxp_fixed глава Design Error Detection Objectives Status отчета обеспечивает подробные результаты в двух категориях:

  • Objectives Proven Valid — Объекты модели, которые не произвели ошибки

  • Objectives Falsified with Test Cases — Объекты модели, для которых тесты сгенерировали ошибки

Для получения дополнительной информации см. Отчеты Simulink Design Verifier.

Похожие темы