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

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

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

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

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

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

  2. На вкладке Design Verifier, в разделе Prepare, в выпадающем меню для настроек режима, нажимают Settings.

  3. В диалоговом окне Configuration Parameters выберите 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. В разделе Mode выберите Design Error Detection.

  8. Нажмите Detect Design Errors.

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

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

  • Диалоговое окно 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. Откройте Подсистему контроллера Фиксированной точки.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Окно 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.

Похожие темы