exponenta event banner

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

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

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

Анализ модели

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

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

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

  3. В диалоговом окне «Параметры конфигурации» выберите «Design Verifier» > «Design Error Detection».

  4. На панели «Обнаружение ошибок конструкции» выберите:

    • Переполнение целого числа

    • Деление на ноль

  5. В диалоговом окне «Параметры конфигурации» на панели «Диагностика» > «Валидность данных» выберите «Сигналы» > «Переносить при переполнении», «Сигналы» > «Насыщать при переполнении» и «Параметры» > «Обнаружить переполнение». error.

  6. Нажмите кнопку ОК, чтобы сохранить эти настройки и закрыть диалоговое окно Параметры конфигурации (Configuration Parameters).

  7. В разделе Режим (Mode) выберите Обнаружение ошибок конструкции (Design Error Detection).

  8. Щелкните Обнаружить ошибки конструкции (Detect Design Errors).

По завершении анализа:

  • Программа выделяет модель с результатами анализа.

  • Откроется диалоговое окно Результаты моделирования (Simulink ® Design Verifier™ Results), в котором отображается сводка анализа.

Просмотр результатов анализа

Просмотр результатов по модели

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

  1. На верхнем уровне sldvdemo_cruise_control_fxp_fixed выберите подсистему контроллера фиксированной точки.

    Окно Результатов Свидетельства Дизайна Simulink показывает полученный диапазон возможных ценностей сигнала для Вспомогательных портов, как вычислено анализом:

    • Значения параметра Outport 1 (throt) находятся в диапазоне от –2.6101 кому 2.6096.

    • Значения параметра Outport 2 (target) находятся в диапазоне от 0 кому 255.9960.

  2. Щелкните Блоки исходящего порта (Outport blocks) sldvdemo_cruise_control_fxp_fixed для просмотра одних и тех же значений границы сигнала.

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

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

  4. Щелкните по блоку Sum, обозначенному красным цветом, который обеспечивает ввод ошибок в подсистему PI Controller.

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

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

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

    • Исходящий порт из блока коммутатора имеет диапазон [0.. 256].

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

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

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

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

Просмотр модели кабельных трасс

Чтобы видеть прецеденты, которые демонстрируют ошибки, произведите модель ремня безопасности из окна Результатов Свидетельства Дизайна Simulink:

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

  2. Щелкните по блоку Sum, обозначенному красным цветом, который обеспечивает ввод ошибок в подсистему PI Controller.

    В окне Результаты Simulink Design Verifier отображается информация об ошибке переполнения.

  3. В окне Результатов Свидетельства Дизайна Simulink нажмите прецедент View.

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

    В модели кабельных трасс откроется диалоговое окно Конструктор сигналов (Signal Builder) с отображением тестового случая 2.

  4. Нажмите кнопку Start simulation (начать моделирование), чтобы смоделировать модель с помощью этого тестового случая.

    Как и ожидалось, моделирование не выполняется из-за ошибки переполнения в блоке Sum в подсистеме контроллера фиксированной точки.

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

Просмотр отчета об анализе

Просмотр HTML-отчета, содержащего подробную информацию об аналитическом отчете для sldvdemo_cruise_control_fxp_fixed модель:

  1. В окне Результатов Свидетельства Дизайна Simulink, чтобы повторно показать резюме результатов, нажимают Back к резюме.

  2. Щелкните Создать подробный отчет об анализе (Generate detailed analysis report).

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

Для sldvdemo_cruise_control_fxp_fixed модель, глава «Состояние целей обнаружения ошибок конструкции» отчета содержит подробные результаты по двум категориям:

  • Проверенные действительные цели - объекты модели, которые не привели к ошибкам

  • Цели, сфальсифицированные тестовыми случаями - объекты модели, для которых тестовые случаи вызвали ошибки

Дополнительные сведения см. в разделе Отчеты Simulink Design Verifier.

Связанные темы